@remotion/studio 4.0.479 → 4.0.481
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/components/AudioWaveform.js +19 -11
- package/dist/components/Button.d.ts +1 -0
- package/dist/components/Button.js +2 -2
- package/dist/components/CurrentCompositionSideEffects.d.ts +0 -3
- package/dist/components/CurrentCompositionSideEffects.js +1 -37
- package/dist/components/Editor.js +2 -5
- package/dist/components/EditorContent.js +2 -1
- package/dist/components/ExpandedTracksProvider.d.ts +1 -0
- package/dist/components/ExpandedTracksProvider.js +81 -7
- package/dist/components/GlobalKeybindings.d.ts +3 -1
- package/dist/components/GlobalKeybindings.js +104 -10
- package/dist/components/InspectorPanel/SequenceSelectionInspector.js +4 -3
- package/dist/components/InspectorPanel/inspector-selection.d.ts +3 -3
- package/dist/components/InspectorPanel/inspector-selection.js +7 -6
- package/dist/components/InspectorPanel/styles.d.ts +1 -0
- package/dist/components/InspectorPanel/styles.js +19 -1
- package/dist/components/InspectorPanel.js +3 -3
- package/dist/components/InspectorSequenceSection.d.ts +3 -0
- package/dist/components/InspectorSequenceSection.js +12 -2
- package/dist/components/KeyboardShortcutsExplainer.js +10 -2
- package/dist/components/ResetZoomButton.d.ts +2 -1
- package/dist/components/ResetZoomButton.js +5 -1
- package/dist/components/SelectedOutlineElement.js +39 -0
- package/dist/components/SelectedOutlineOverlay.js +3 -1
- package/dist/components/Timeline/Timeline.js +9 -9
- package/dist/components/Timeline/TimelineEffectItem.js +1 -1
- package/dist/components/Timeline/TimelineEffectPropItem.js +1 -1
- package/dist/components/Timeline/TimelineExpandArrowButton.js +42 -2
- package/dist/components/Timeline/TimelineExpandedRow.js +2 -2
- package/dist/components/Timeline/TimelineExpandedSection.js +8 -9
- package/dist/components/Timeline/TimelineRowChrome.d.ts +2 -0
- package/dist/components/Timeline/TimelineRowChrome.js +5 -3
- package/dist/components/Timeline/TimelineSelection.d.ts +22 -2
- package/dist/components/Timeline/TimelineSelection.js +276 -90
- package/dist/components/Timeline/TimelineSequenceItem.js +61 -2
- package/dist/components/Timeline/TimelineSequencePropItem.js +1 -1
- package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +6 -4
- package/dist/components/Timeline/find-track-for-node-path-info.js +2 -2
- package/dist/components/Timeline/get-node-keyframes.d.ts +7 -0
- package/dist/components/Timeline/get-node-keyframes.js +26 -1
- package/dist/components/Timeline/reset-selected-timeline-props.js +15 -2
- package/dist/components/Timeline/timeline-expanded-filter.d.ts +12 -0
- package/dist/components/Timeline/timeline-expanded-filter.js +38 -0
- package/dist/components/Timeline/use-expanded-track-keyframe-rows.js +50 -18
- package/dist/components/Timeline/use-timeline-expanded-tree.d.ts +1 -0
- package/dist/components/Timeline/use-timeline-expanded-tree.js +27 -0
- package/dist/components/Timeline/use-timeline-height.js +51 -7
- package/dist/components/Timeline/use-timeline-keyframe-drag.js +12 -6
- package/dist/components/TopPanel.js +1 -1
- package/dist/components/selected-outline-measurement.js +48 -14
- package/dist/error-overlay/remotion-overlay/ErrorLoader.js +8 -1
- package/dist/esm/{chunk-fge2mq5p.js → chunk-4rq5gt8c.js} +16552 -15859
- package/dist/esm/internals.mjs +16552 -15859
- package/dist/esm/previewEntry.mjs +4055 -3360
- package/dist/esm/renderEntry.mjs +1 -1
- package/dist/helpers/migrate-expanded-tracks-for-subscription-key.js +3 -3
- package/package.json +11 -11
|
@@ -11,13 +11,13 @@ const styles_1 = require("./InspectorPanel/styles");
|
|
|
11
11
|
const TimelineSelection_1 = require("./Timeline/TimelineSelection");
|
|
12
12
|
const InspectorPanel = ({ composition, currentDefaultProps, setDefaultProps }) => {
|
|
13
13
|
const { selectedItems } = (0, TimelineSelection_1.useTimelineSelection)();
|
|
14
|
-
const
|
|
14
|
+
const sameSequenceInspectorSelection = (0, react_1.useMemo)(() => (0, inspector_selection_1.getSameSequenceInspectorSelection)(selectedItems), [selectedItems]);
|
|
15
15
|
if (selectedItems.length === 0) {
|
|
16
16
|
return (jsx_runtime_1.jsx(DefaultInspector_1.DefaultInspector, { composition: composition, currentDefaultProps: currentDefaultProps, setDefaultProps: setDefaultProps }));
|
|
17
17
|
}
|
|
18
18
|
if (selectedItems.length > 1) {
|
|
19
|
-
if (
|
|
20
|
-
return (jsx_runtime_1.jsx("div", { style: styles_1.container, children: jsx_runtime_1.jsx(SelectedInspector_1.SelectedInspector, { selection:
|
|
19
|
+
if (sameSequenceInspectorSelection) {
|
|
20
|
+
return (jsx_runtime_1.jsx("div", { style: styles_1.container, children: jsx_runtime_1.jsx(SelectedInspector_1.SelectedInspector, { selection: sameSequenceInspectorSelection }) }));
|
|
21
21
|
}
|
|
22
22
|
return (jsx_runtime_1.jsx("div", { style: styles_1.container, children: jsx_runtime_1.jsxs(common_1.InspectorMessage, { children: [selectedItems.length, " items selected"] }) }));
|
|
23
23
|
}
|
|
@@ -2,9 +2,12 @@ import React from 'react';
|
|
|
2
2
|
import type { TSequence } from 'remotion';
|
|
3
3
|
import type { CodePosition } from '../error-overlay/react-overlay/utils/get-source-map';
|
|
4
4
|
import type { SequenceNodePathInfo } from '../helpers/get-timeline-sequence-sort-key';
|
|
5
|
+
import { type FlatTreeRow } from '../helpers/timeline-layout';
|
|
6
|
+
import { type TimelineSelection } from './Timeline/TimelineSelection';
|
|
5
7
|
type SequenceWithControls = TSequence & {
|
|
6
8
|
readonly controls: NonNullable<TSequence['controls']>;
|
|
7
9
|
};
|
|
10
|
+
export declare const getInspectorSelectableItems: (rows: readonly FlatTreeRow[]) => TimelineSelection[];
|
|
8
11
|
export declare const hasSequenceControls: (sequence: TSequence) => sequence is SequenceWithControls;
|
|
9
12
|
export declare const InspectorSequenceSection: React.FC<{
|
|
10
13
|
readonly sequence: SequenceWithControls;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.InspectorSequenceSection = exports.hasSequenceControls = void 0;
|
|
3
|
+
exports.InspectorSequenceSection = exports.hasSequenceControls = exports.getInspectorSelectableItems = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const client_id_1 = require("../helpers/client-id");
|
|
@@ -11,6 +11,7 @@ const modals_1 = require("../state/modals");
|
|
|
11
11
|
const InlineAction_1 = require("./InlineAction");
|
|
12
12
|
const styles_1 = require("./InspectorPanel/styles");
|
|
13
13
|
const TimelineExpandedRow_1 = require("./Timeline/TimelineExpandedRow");
|
|
14
|
+
const TimelineSelection_1 = require("./Timeline/TimelineSelection");
|
|
14
15
|
const use_timeline_expanded_tree_1 = require("./Timeline/use-timeline-expanded-tree");
|
|
15
16
|
const container = {
|
|
16
17
|
color: 'white',
|
|
@@ -54,6 +55,13 @@ const isEffectsRoot = (node) => {
|
|
|
54
55
|
const getInspectorExpansionKey = (nodePathInfo) => {
|
|
55
56
|
return JSON.stringify(nodePathInfo);
|
|
56
57
|
};
|
|
58
|
+
const getInspectorSelectableItems = (rows) => {
|
|
59
|
+
return rows.flatMap(({ node }) => {
|
|
60
|
+
const selection = (0, TimelineSelection_1.getTimelineSelectionFromNodePathInfo)(node.nodePathInfo);
|
|
61
|
+
return selection ? [selection] : [];
|
|
62
|
+
});
|
|
63
|
+
};
|
|
64
|
+
exports.getInspectorSelectableItems = getInspectorSelectableItems;
|
|
57
65
|
const hasSequenceControls = (sequence) => {
|
|
58
66
|
return sequence.controls !== null;
|
|
59
67
|
};
|
|
@@ -106,6 +114,8 @@ const InspectorSequenceSection = ({ sequence, validatedLocation, nodePathInfo, k
|
|
|
106
114
|
}),
|
|
107
115
|
};
|
|
108
116
|
}, [getIsExpanded, tree]);
|
|
117
|
+
const controlSelectableItems = (0, react_1.useMemo)(() => (0, exports.getInspectorSelectableItems)(controlRows), [controlRows]);
|
|
118
|
+
const effectSelectableItems = (0, react_1.useMemo)(() => (0, exports.getInspectorSelectableItems)(effectRows), [effectRows]);
|
|
109
119
|
const { schema } = sequence.controls;
|
|
110
120
|
const showEffectsSection = nodePathInfo.supportsEffects || effectRows.length > 0;
|
|
111
121
|
const showControlsEffectsDivider = controlRows.length > 0 && showEffectsSection;
|
|
@@ -142,6 +152,6 @@ const InspectorSequenceSection = ({ sequence, validatedLocation, nodePathInfo, k
|
|
|
142
152
|
] }));
|
|
143
153
|
}
|
|
144
154
|
return (jsx_runtime_1.jsxs("div", { style: container, children: [
|
|
145
|
-
jsx_runtime_1.jsx("div", { style: divider }), controlRows.length > 0 ? renderSectionHeader('Controls') : null, controlRows.map(renderRow), showEffectsSection ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [showControlsEffectsDivider ? (jsx_runtime_1.jsx("div", { style: controlsEffectsDivider })) : null, renderEffectsHeader(), effectRows.length === 0 ? (jsx_runtime_1.jsx("div", { style: emptyState, children: "None" })) : (effectRows.map(renderRow))] })) : null] }));
|
|
155
|
+
jsx_runtime_1.jsx("div", { style: divider }), controlRows.length > 0 ? renderSectionHeader('Controls') : null, jsx_runtime_1.jsx(TimelineSelection_1.TimelineSelectionOrderProvider, { items: controlSelectableItems, children: controlRows.map(renderRow) }), showEffectsSection ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [showControlsEffectsDivider ? (jsx_runtime_1.jsx("div", { style: controlsEffectsDivider })) : null, renderEffectsHeader(), effectRows.length === 0 ? (jsx_runtime_1.jsx("div", { style: emptyState, children: "None" })) : (jsx_runtime_1.jsx(TimelineSelection_1.TimelineSelectionOrderProvider, { items: effectSelectableItems, children: effectRows.map(renderRow) }))] })) : null] }));
|
|
146
156
|
};
|
|
147
157
|
exports.InspectorSequenceSection = InspectorSequenceSection;
|
|
@@ -109,9 +109,9 @@ const KeyboardShortcutsExplainer = () => {
|
|
|
109
109
|
] }), jsx_runtime_1.jsxs(layout_1.Row, { align: "center", children: [
|
|
110
110
|
jsx_runtime_1.jsx("div", { style: left, children: jsx_runtime_1.jsx("kbd", { style: key, children: "PageDown" }) }), jsx_runtime_1.jsx("div", { style: right, children: "Next composition" })
|
|
111
111
|
] }), jsx_runtime_1.jsxs(layout_1.Row, { align: "center", children: [
|
|
112
|
-
jsx_runtime_1.jsx("div", { style: left, children: jsx_runtime_1.jsx("kbd", { style: key, children: "R" }) }), jsx_runtime_1.jsx("div", { style: right, children: "Render
|
|
112
|
+
jsx_runtime_1.jsx("div", { style: left, children: jsx_runtime_1.jsx("kbd", { style: key, children: "R" }) }), jsx_runtime_1.jsx("div", { style: right, children: "Render, unless a sequence or prop is selected" })
|
|
113
113
|
] }), jsx_runtime_1.jsxs(layout_1.Row, { align: "center", children: [
|
|
114
|
-
jsx_runtime_1.jsx("div", { style: left, children: jsx_runtime_1.jsx("kbd", { style: key, children: "T" }) }), jsx_runtime_1.jsx("div", { style: right, children: "
|
|
114
|
+
jsx_runtime_1.jsx("div", { style: left, children: jsx_runtime_1.jsx("kbd", { style: key, children: "T" }) }), jsx_runtime_1.jsx("div", { style: right, children: "Checkerboard, unless a sequence or prop is selected" })
|
|
115
115
|
] }), jsx_runtime_1.jsxs(layout_1.Row, { align: "center", children: [
|
|
116
116
|
jsx_runtime_1.jsx("div", { style: left, children: jsx_runtime_1.jsx("kbd", { style: key, children: "?" }) }), jsx_runtime_1.jsx("div", { style: right, children: "Show keyboard shortcuts" })
|
|
117
117
|
] }), jsx_runtime_1.jsxs(layout_1.Row, { align: "center", children: [
|
|
@@ -146,6 +146,14 @@ const KeyboardShortcutsExplainer = () => {
|
|
|
146
146
|
jsx_runtime_1.jsxs("div", { style: left, children: [
|
|
147
147
|
jsx_runtime_1.jsx("kbd", { style: key, children: ShortcutHint_1.cmdOrCtrlCharacter }), jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.3 }), jsx_runtime_1.jsx("kbd", { style: key, children: "A" })
|
|
148
148
|
] }), jsx_runtime_1.jsx("div", { style: right, children: "Select sequence rows" })
|
|
149
|
+
] }), jsx_runtime_1.jsxs(layout_1.Row, { align: "center", children: [
|
|
150
|
+
jsx_runtime_1.jsx("div", { style: left, children: jsx_runtime_1.jsx("kbd", { style: key, children: "P" }) }), jsx_runtime_1.jsx("div", { style: right, children: "Select translate prop" })
|
|
151
|
+
] }), jsx_runtime_1.jsxs(layout_1.Row, { align: "center", children: [
|
|
152
|
+
jsx_runtime_1.jsx("div", { style: left, children: jsx_runtime_1.jsx("kbd", { style: key, children: "T" }) }), jsx_runtime_1.jsx("div", { style: right, children: "Select opacity prop" })
|
|
153
|
+
] }), jsx_runtime_1.jsxs(layout_1.Row, { align: "center", children: [
|
|
154
|
+
jsx_runtime_1.jsx("div", { style: left, children: jsx_runtime_1.jsx("kbd", { style: key, children: "R" }) }), jsx_runtime_1.jsx("div", { style: right, children: "Select rotate prop" })
|
|
155
|
+
] }), jsx_runtime_1.jsxs(layout_1.Row, { align: "center", children: [
|
|
156
|
+
jsx_runtime_1.jsx("div", { style: left, children: jsx_runtime_1.jsx("kbd", { style: key, children: "S" }) }), jsx_runtime_1.jsx("div", { style: right, children: "Select scale prop" })
|
|
149
157
|
] }), jsx_runtime_1.jsxs(layout_1.Row, { align: "center", children: [
|
|
150
158
|
jsx_runtime_1.jsxs("div", { style: left, children: [
|
|
151
159
|
jsx_runtime_1.jsx("kbd", { style: key, children: ShortcutHint_1.cmdOrCtrlCharacter }), jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.3 }), jsx_runtime_1.jsx("kbd", { style: key, children: "D" })
|
|
@@ -2,8 +2,12 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ResetZoomButton = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
5
6
|
const Button_1 = require("./Button");
|
|
6
7
|
const ResetZoomButton = ({ onClick }) => {
|
|
7
|
-
|
|
8
|
+
const onPointerDown = (0, react_1.useCallback)((event) => {
|
|
9
|
+
event.stopPropagation();
|
|
10
|
+
}, []);
|
|
11
|
+
return (jsx_runtime_1.jsx(Button_1.Button, { onClick: onClick, onPointerDown: onPointerDown, children: "Reset zoom" }));
|
|
8
12
|
};
|
|
9
13
|
exports.ResetZoomButton = ResetZoomButton;
|
|
@@ -42,6 +42,7 @@ const client_id_1 = require("../helpers/client-id");
|
|
|
42
42
|
const colors_1 = require("../helpers/colors");
|
|
43
43
|
const format_file_location_1 = require("../helpers/format-file-location");
|
|
44
44
|
const open_in_editor_1 = require("../helpers/open-in-editor");
|
|
45
|
+
const modals_1 = require("../state/modals");
|
|
45
46
|
const call_api_1 = require("./call-api");
|
|
46
47
|
const ConfirmationDialog_1 = require("./ConfirmationDialog");
|
|
47
48
|
const ContextMenu_1 = require("./ContextMenu");
|
|
@@ -914,6 +915,7 @@ const SelectedOutlineElement = ({ allDragTargets, allRotationDragTargets, allSca
|
|
|
914
915
|
const updateResolvedStackTrace = (0, react_1.useContext)(remotion_1.Internals.SequenceStackTracesUpdateContext);
|
|
915
916
|
const confirm = (0, ConfirmationDialog_1.useConfirmationDialog)();
|
|
916
917
|
const selectAsset = (0, use_select_asset_1.useSelectAsset)();
|
|
918
|
+
const { setSelectedModal } = (0, react_1.useContext)(modals_1.ModalsContext);
|
|
917
919
|
const onContextMenuOpen = react_1.default.useCallback(async () => {
|
|
918
920
|
if (target === undefined || previewServerState.type !== 'connected') {
|
|
919
921
|
return false;
|
|
@@ -948,6 +950,9 @@ const SelectedOutlineElement = ({ allDragTargets, allRotationDragTargets, allSca
|
|
|
948
950
|
const canOpenInEditor = Boolean(window.remotion_editorName && originalLocation);
|
|
949
951
|
const disableInteractivityDisabled = !target.sequence.showInTimeline;
|
|
950
952
|
const sourceEditDisabled = !target.sequence.controls || !nodePath.absolutePath;
|
|
953
|
+
const canAddEffect = target.nodePathInfo.supportsEffects &&
|
|
954
|
+
!sourceEditDisabled &&
|
|
955
|
+
previewServerState.type === 'connected';
|
|
951
956
|
return (0, get_sequence_context_menu_items_1.getSequenceContextMenuItems)({
|
|
952
957
|
assetLinkInfo,
|
|
953
958
|
canOpenInEditor,
|
|
@@ -1021,12 +1026,46 @@ const SelectedOutlineElement = ({ allDragTargets, allRotationDragTargets, allSca
|
|
|
1021
1026
|
originalLocation,
|
|
1022
1027
|
selectAsset,
|
|
1023
1028
|
sequence: target.sequence,
|
|
1029
|
+
sourceActions: [
|
|
1030
|
+
...(target.nodePathInfo.supportsEffects
|
|
1031
|
+
? [
|
|
1032
|
+
{
|
|
1033
|
+
type: 'item',
|
|
1034
|
+
id: 'add-effect',
|
|
1035
|
+
keyHint: null,
|
|
1036
|
+
label: 'Add effect...',
|
|
1037
|
+
leftItem: null,
|
|
1038
|
+
disabled: !canAddEffect,
|
|
1039
|
+
onClick: () => {
|
|
1040
|
+
if (!canAddEffect ||
|
|
1041
|
+
previewServerState.type !== 'connected') {
|
|
1042
|
+
return;
|
|
1043
|
+
}
|
|
1044
|
+
setSelectedModal({
|
|
1045
|
+
type: 'add-effect',
|
|
1046
|
+
clientId: previewServerState.clientId,
|
|
1047
|
+
fileName: nodePath.absolutePath,
|
|
1048
|
+
nodePath,
|
|
1049
|
+
});
|
|
1050
|
+
},
|
|
1051
|
+
quickSwitcherLabel: null,
|
|
1052
|
+
subMenu: null,
|
|
1053
|
+
value: 'add-effect',
|
|
1054
|
+
},
|
|
1055
|
+
{
|
|
1056
|
+
type: 'divider',
|
|
1057
|
+
id: 'add-effect-divider',
|
|
1058
|
+
},
|
|
1059
|
+
]
|
|
1060
|
+
: []),
|
|
1061
|
+
],
|
|
1024
1062
|
});
|
|
1025
1063
|
}, [
|
|
1026
1064
|
confirm,
|
|
1027
1065
|
onSelect,
|
|
1028
1066
|
previewServerState,
|
|
1029
1067
|
selectAsset,
|
|
1068
|
+
setSelectedModal,
|
|
1030
1069
|
setPropStatuses,
|
|
1031
1070
|
target,
|
|
1032
1071
|
updateResolvedStackTrace,
|
|
@@ -364,7 +364,9 @@ const SelectedOutlineOverlay = ({ scale }) => {
|
|
|
364
364
|
return new Map(outlineTargets.map((target) => [target.key, target]));
|
|
365
365
|
}, [outlineTargets]);
|
|
366
366
|
const allDragTargets = (0, react_1.useMemo)(() => {
|
|
367
|
-
return outlineTargets.flatMap((target) => target.selected
|
|
367
|
+
return outlineTargets.flatMap((target) => (target.selected || target.containsSelection) && target.drag !== null
|
|
368
|
+
? [target.drag]
|
|
369
|
+
: []);
|
|
368
370
|
}, [outlineTargets]);
|
|
369
371
|
const allScaleDragTargets = (0, react_1.useMemo)(() => {
|
|
370
372
|
return outlineTargets.flatMap((target) => target.selected && target.scaleDrag !== null ? [target.scaleDrag] : []);
|
|
@@ -231,15 +231,15 @@ const TimelineInner = () => {
|
|
|
231
231
|
return null;
|
|
232
232
|
}
|
|
233
233
|
return (jsx_runtime_1.jsx(SubscribeToNodePaths_1.SubscribeToNodePaths, { overrideId: sequence.controls.overrideId, componentIdentity: sequence.controls.componentIdentity, schema: sequence.controls.schema, getStack: sequence.getStack, effects: sequence.effects }, sequence.id));
|
|
234
|
-
}), jsx_runtime_1.jsx(SequencePropsObserver_1.SequencePropsObserver, {}), jsx_runtime_1.
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
234
|
+
}), jsx_runtime_1.jsx(SequencePropsObserver_1.SequencePropsObserver, {}), jsx_runtime_1.jsx(TimelineKeyframeTracksContext_1.TimelineKeyframeTracksProvider, { tracks: filtered, children: jsx_runtime_1.jsxs(TimelineSelection_1.TimelineSelectableItemsProvider, { timeline: shown, children: [
|
|
235
|
+
jsx_runtime_1.jsx(TimelineSelection_1.TimelineSelectAllKeybindings, { timeline: shown }), jsx_runtime_1.jsx(TimelineHeightContainer_1.TimelineHeightContainer, { shown: shown, hasBeenCut: hasBeenCut, children: isStill ? (jsx_runtime_1.jsx(TimelineList_1.TimelineList, { timeline: shown })) : (jsx_runtime_1.jsxs(TimelineWidthProvider_1.TimelineWidthProvider, { children: [
|
|
236
|
+
jsx_runtime_1.jsx(TimelinePinchZoom_1.TimelinePinchZoom, {}), jsx_runtime_1.jsxs(SplitterContainer_1.SplitterContainer, { orientation: "vertical", defaultFlex: 0.2, id: "names-to-timeline", maxFlex: 0.5, minFlex: 0.15, children: [
|
|
237
|
+
jsx_runtime_1.jsx(SplitterElement_1.SplitterElement, { type: "flexer", sticky: jsx_runtime_1.jsx(TimelineTimeIndicators_1.TimelineTimePlaceholders, {}), children: jsx_runtime_1.jsx(TimelineList_1.TimelineList, { timeline: shown }) }), jsx_runtime_1.jsx(SplitterHandle_1.SplitterHandle, { onCollapse: noop, allowToCollapse: "none" }), jsx_runtime_1.jsx(SplitterElement_1.SplitterElement, { type: "anti-flexer", sticky: null, children: jsx_runtime_1.jsxs(TimelineScrollable_1.TimelineScrollable, { children: [
|
|
238
|
+
jsx_runtime_1.jsx(TimelineTracks_1.TimelineTracks, { timeline: shown, hasBeenCut: hasBeenCut }), jsx_runtime_1.jsx(TimelinePlayCursorSyncer_1.TimelinePlayCursorSyncer, {}), jsx_runtime_1.jsx(TimelineInOutPointer_1.TimelineInOutPointer, {}), jsx_runtime_1.jsx(TimelineTimeIndicators_1.TimelineTimeIndicators, {}), jsx_runtime_1.jsx(TimelineDragHandler_1.TimelineDragHandler, {}), jsx_runtime_1.jsx(TimelineInOutDragHandler_1.TimelineInOutDragHandler, {}), jsx_runtime_1.jsx(TimelineSlider_1.TimelineSlider, {})
|
|
239
|
+
] }) })
|
|
240
|
+
] })
|
|
241
|
+
] })) })
|
|
242
|
+
] }) })
|
|
243
243
|
] }));
|
|
244
244
|
};
|
|
245
245
|
exports.Timeline = react_1.default.memo(TimelineInner);
|
|
@@ -316,7 +316,7 @@ const TimelineEffectItem = ({ label, nodePathInfo, effectIndex, effectSchema, do
|
|
|
316
316
|
...(dropIndicator === 'before' ? { top: -1 } : { bottom: -1 }),
|
|
317
317
|
};
|
|
318
318
|
}, [dropIndicator]);
|
|
319
|
-
const row = (jsx_runtime_1.jsx(TimelineRowChrome_1.TimelineRowChrome, { depth: rowDepth, eye: canToggle ? (jsx_runtime_1.jsx(TimelineLayerEye_1.TimelineLayerEye, { type: "effect", hidden: isDisabled, onInvoked: onToggle })) : (jsx_runtime_1.jsx(TimelineLayerEye_1.TimelineLayerEyeSpacer, {})), arrow: jsx_runtime_1.jsx(TimelineExpandArrowButton_1.TimelineExpandArrowButton, { isExpanded: isExpanded, onClick: () => toggleTrack(nodePathInfo), label: `${label} section`, disabled: false }), style: rowStyle, selected: selection.selected, selectable: selection.selectable, onSelect: selection.onSelect, showSelectedBackground: true, containsSelection: false, outerHeight: null, children: jsx_runtime_1.jsx("span", { title: label, style: labelStyle, children: label }) }));
|
|
319
|
+
const row = (jsx_runtime_1.jsx(TimelineRowChrome_1.TimelineRowChrome, { depth: rowDepth, eye: canToggle ? (jsx_runtime_1.jsx(TimelineLayerEye_1.TimelineLayerEye, { type: "effect", hidden: isDisabled, onInvoked: onToggle })) : (jsx_runtime_1.jsx(TimelineLayerEye_1.TimelineLayerEyeSpacer, {})), arrow: jsx_runtime_1.jsx(TimelineExpandArrowButton_1.TimelineExpandArrowButton, { isExpanded: isExpanded, onClick: () => toggleTrack(nodePathInfo), label: `${label} section`, disabled: false }), style: rowStyle, selected: selection.selected, selectable: selection.selectable, selectionItem: selection.selectionItem, onSelect: selection.onSelect, showSelectedBackground: true, containsSelection: false, outerHeight: null, children: jsx_runtime_1.jsx("span", { title: label, style: labelStyle, children: label }) }));
|
|
320
320
|
const draggableRow = canReorder ? (jsx_runtime_1.jsxs("div", { draggable: true, onDragStart: onDragStart, onDragEnd: onDragEnd, onDragOver: onDragOver, onDragLeave: onDragLeave, onDrop: onDrop, style: reorderWrapper, children: [reorderLineStyle ? jsx_runtime_1.jsx("div", { style: reorderLineStyle }) : null, row] })) : (row);
|
|
321
321
|
return previewConnected ? (jsx_runtime_1.jsx(ContextMenu_1.ContextMenu, { values: contextMenuValues, onOpen: selection.selectable ? selection.onSelect : null, children: draggableRow })) : (draggableRow);
|
|
322
322
|
};
|
|
@@ -359,7 +359,7 @@ const TimelineEffectPropItem = ({ field, validatedLocation, rowDepth, nodePath,
|
|
|
359
359
|
previewServerState,
|
|
360
360
|
propStatus,
|
|
361
361
|
]);
|
|
362
|
-
const row = (jsx_runtime_1.jsxs(TimelineRowChrome_1.TimelineRowChrome, { depth: rowDepth, eye: jsx_runtime_1.jsx(TimelineLayerEye_1.TimelineLayerEyeSpacer, {}), keyframeControls: keyframeControls, arrow: jsx_runtime_1.jsx(TimelineExpandArrowButton_1.TimelineExpandArrowSpacer, {}), style: style, selected: selection.selected, selectable: selection.selectable, onSelect: selection.onSelect, showSelectedBackground: true, containsSelection: false, outerHeight: null, children: [
|
|
362
|
+
const row = (jsx_runtime_1.jsxs(TimelineRowChrome_1.TimelineRowChrome, { depth: rowDepth, eye: jsx_runtime_1.jsx(TimelineLayerEye_1.TimelineLayerEyeSpacer, {}), keyframeControls: keyframeControls, arrow: jsx_runtime_1.jsx(TimelineExpandArrowButton_1.TimelineExpandArrowSpacer, {}), style: style, selected: selection.selected, selectable: selection.selectable, selectionItem: selection.selectionItem, onSelect: selection.onSelect, showSelectedBackground: true, containsSelection: false, outerHeight: null, children: [
|
|
363
363
|
jsx_runtime_1.jsx(TimelineFieldLabel_1.TimelineFieldLabel, { rowDepth: rowDepth, selected: selection.selected, label: (_c = field.description) !== null && _c !== void 0 ? _c : field.key }), jsx_runtime_1.jsx("div", { style: timeline_field_row_layout_1.timelineFieldValueColumnStyle, children: jsx_runtime_1.jsx(exports.TimelineEffectPropValue, { field: field, nodePath: nodePath, validatedLocation: validatedLocation, sourceFrame: sourceFrame }) })
|
|
364
364
|
] }));
|
|
365
365
|
return (jsx_runtime_1.jsx(ContextMenu_1.ContextMenu, { values: contextMenuValues, onOpen: selection.selectable ? selection.onSelect : null, children: row }));
|
|
@@ -1,8 +1,41 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.TimelineExpandArrowSpacer = exports.TimelineExpandArrowButton = void 0;
|
|
4
37
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
-
const react_1 = require("react");
|
|
38
|
+
const react_1 = __importStar(require("react"));
|
|
6
39
|
const arrowButton = {
|
|
7
40
|
background: 'none',
|
|
8
41
|
border: 'none',
|
|
@@ -27,6 +60,13 @@ const arrowSpacer = {
|
|
|
27
60
|
};
|
|
28
61
|
const svgStyle = { display: 'block' };
|
|
29
62
|
const TimelineExpandArrowButton = ({ isExpanded, onClick, label, disabled = false }) => {
|
|
63
|
+
const handleClick = react_1.default.useCallback((e) => {
|
|
64
|
+
e.stopPropagation();
|
|
65
|
+
onClick();
|
|
66
|
+
}, [onClick]);
|
|
67
|
+
const stopPropagation = react_1.default.useCallback((e) => {
|
|
68
|
+
e.stopPropagation();
|
|
69
|
+
}, []);
|
|
30
70
|
const style = (0, react_1.useMemo)(() => {
|
|
31
71
|
return {
|
|
32
72
|
...arrowButton,
|
|
@@ -35,7 +75,7 @@ const TimelineExpandArrowButton = ({ isExpanded, onClick, label, disabled = fals
|
|
|
35
75
|
opacity: disabled ? 0.5 : 1,
|
|
36
76
|
};
|
|
37
77
|
}, [isExpanded, disabled]);
|
|
38
|
-
return (jsx_runtime_1.jsx("button", { type: "button", style: style, onClick:
|
|
78
|
+
return (jsx_runtime_1.jsx("button", { type: "button", style: style, onClick: handleClick, onDoubleClick: stopPropagation, onPointerDown: stopPropagation, disabled: disabled, "aria-expanded": isExpanded, "aria-label": `${isExpanded ? 'Collapse' : 'Expand'} ${label}`, children: jsx_runtime_1.jsx("svg", { width: "12", height: "12", viewBox: "0 0 8 8", style: svgStyle, children: jsx_runtime_1.jsx("path", { d: "M2 1L6 4L2 7Z", fill: "#ccc" }) }) }));
|
|
39
79
|
};
|
|
40
80
|
exports.TimelineExpandArrowButton = TimelineExpandArrowButton;
|
|
41
81
|
const TimelineExpandArrowSpacer = () => {
|
|
@@ -44,7 +44,7 @@ const TimelineExpandedRow = ({ node, depth, nestedDepth, rowDepthBase, getIsExpa
|
|
|
44
44
|
const isExpanded = getIsExpanded(node.nodePathInfo);
|
|
45
45
|
return (jsx_runtime_1.jsx(TimelineRowChrome_1.TimelineRowChrome, { depth: rowDepth, eye: jsx_runtime_1.jsx(TimelineLayerEye_1.TimelineLayerEyeSpacer, {}), arrow: jsx_runtime_1.jsx(TimelineExpandArrowButton_1.TimelineExpandArrowButton, { isExpanded: isExpanded, onClick: () => toggleTrack(node.nodePathInfo), label: `${node.label} section`, disabled: false }), style: {
|
|
46
46
|
height: timeline_layout_1.TREE_GROUP_ROW_HEIGHT,
|
|
47
|
-
}, selected: selection.selected, selectable: selection.selectable, onSelect: selection.onSelect, showSelectedBackground: true, containsSelection: false, outerHeight: null, children: jsx_runtime_1.jsx("span", { style: labelStyle, children: node.label }) }));
|
|
47
|
+
}, selected: selection.selected, selectable: selection.selectable, selectionItem: selection.selectionItem, onSelect: selection.onSelect, showSelectedBackground: true, containsSelection: false, outerHeight: null, children: jsx_runtime_1.jsx("span", { style: labelStyle, children: node.label }) }));
|
|
48
48
|
}
|
|
49
49
|
if (node.field) {
|
|
50
50
|
if (node.field.kind === 'effect-field') {
|
|
@@ -57,6 +57,6 @@ const TimelineExpandedRow = ({ node, depth, nestedDepth, rowDepthBase, getIsExpa
|
|
|
57
57
|
}
|
|
58
58
|
return (jsx_runtime_1.jsx(TimelineRowChrome_1.TimelineRowChrome, { depth: rowDepth, eye: jsx_runtime_1.jsx(TimelineLayerEye_1.TimelineLayerEyeSpacer, {}), arrow: jsx_runtime_1.jsx(TimelineExpandArrowButton_1.TimelineExpandArrowSpacer, {}), style: {
|
|
59
59
|
height: (0, timeline_layout_1.getTreeRowHeight)(node),
|
|
60
|
-
}, selected: selection.selected, selectable: selection.selectable, onSelect: selection.onSelect, showSelectedBackground: true, containsSelection: false, outerHeight: null, children: jsx_runtime_1.jsx("span", { style: labelStyle, children: node.label }) }));
|
|
60
|
+
}, selected: selection.selected, selectable: selection.selectable, selectionItem: selection.selectionItem, onSelect: selection.onSelect, showSelectedBackground: true, containsSelection: false, outerHeight: null, children: jsx_runtime_1.jsx("span", { style: labelStyle, children: node.label }) }));
|
|
61
61
|
};
|
|
62
62
|
exports.TimelineExpandedRow = TimelineExpandedRow;
|
|
@@ -53,17 +53,16 @@ const separator = {
|
|
|
53
53
|
borderBottom: `1px solid ${colors_1.TIMELINE_TRACK_SEPARATOR}`,
|
|
54
54
|
};
|
|
55
55
|
const TimelineExpandedSection = ({ sequence, validatedLocation, nodePathInfo, nestedDepth, keyframeDisplayOffset, }) => {
|
|
56
|
-
const {
|
|
56
|
+
const { filteredTree, getIsExpanded, toggleTrack } = (0, use_timeline_expanded_tree_1.useTimelineExpandedTree)({
|
|
57
57
|
sequence,
|
|
58
58
|
nodePathInfo,
|
|
59
59
|
});
|
|
60
|
-
const flat = (0, react_1.useMemo)(() => (0, timeline_layout_1.flattenVisibleTreeNodes)({ nodes:
|
|
61
|
-
const expandedHeight = (0, react_1.useMemo)(() =>
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}), [sequence, nodePathInfo, getIsExpanded, propStatuses]);
|
|
60
|
+
const flat = (0, react_1.useMemo)(() => (0, timeline_layout_1.flattenVisibleTreeNodes)({ nodes: filteredTree, getIsExpanded }), [filteredTree, getIsExpanded]);
|
|
61
|
+
const expandedHeight = (0, react_1.useMemo)(() => {
|
|
62
|
+
const totalRowsHeight = flat.reduce((sum, { node }) => sum + (0, timeline_layout_1.getTreeRowHeight)(node), 0);
|
|
63
|
+
const separators = Math.max(0, flat.length - 1);
|
|
64
|
+
return totalRowsHeight + separators;
|
|
65
|
+
}, [flat]);
|
|
67
66
|
const style = (0, react_1.useMemo)(() => {
|
|
68
67
|
return {
|
|
69
68
|
...expandedSectionBase,
|
|
@@ -72,7 +71,7 @@ const TimelineExpandedSection = ({ sequence, validatedLocation, nodePathInfo, ne
|
|
|
72
71
|
}, [expandedHeight]);
|
|
73
72
|
const { schema } = sequence.controls;
|
|
74
73
|
if (flat.length === 0) {
|
|
75
|
-
return
|
|
74
|
+
return null;
|
|
76
75
|
}
|
|
77
76
|
return (jsx_runtime_1.jsx("div", { style: style, children: flat.map(({ node, depth }, i) => {
|
|
78
77
|
return (jsx_runtime_1.jsxs(react_1.default.Fragment, { children: [i > 0 ? jsx_runtime_1.jsx("div", { style: separator }) : null, jsx_runtime_1.jsx(TimelineExpandedRow_1.TimelineExpandedRow, { node: node, depth: depth, nestedDepth: nestedDepth, getIsExpanded: getIsExpanded, toggleTrack: toggleTrack, validatedLocation: validatedLocation, nodePath: nodePathInfo.sequenceSubscriptionKey, schema: schema, keyframeDisplayOffset: keyframeDisplayOffset })
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { TimelineSelectionInteraction } from './TimelineSelection';
|
|
3
|
+
import { type TimelineSelection } from './TimelineSelection';
|
|
3
4
|
export declare const TimelineRowChrome: React.FC<{
|
|
4
5
|
readonly depth: number;
|
|
5
6
|
readonly eye: React.ReactNode;
|
|
@@ -9,6 +10,7 @@ export declare const TimelineRowChrome: React.FC<{
|
|
|
9
10
|
readonly style: React.CSSProperties;
|
|
10
11
|
readonly selected: boolean;
|
|
11
12
|
readonly selectable: boolean;
|
|
13
|
+
readonly selectionItem: TimelineSelection | null;
|
|
12
14
|
readonly onSelect: (interaction?: TimelineSelectionInteraction) => void;
|
|
13
15
|
readonly showSelectedBackground: boolean;
|
|
14
16
|
readonly containsSelection: boolean;
|
|
@@ -23,8 +23,10 @@ const keyframeControlsColumnBaseStyle = {
|
|
|
23
23
|
flexShrink: 0,
|
|
24
24
|
justifyContent: 'flex-start',
|
|
25
25
|
};
|
|
26
|
-
const TimelineRowChrome = ({ depth, eye, keyframeControls, arrow, children, style, selected, selectable, onSelect, showSelectedBackground, containsSelection, outerHeight, onDragLeave, onDragOver, onDrop, onDoubleClick, }) => {
|
|
26
|
+
const TimelineRowChrome = ({ depth, eye, keyframeControls, arrow, children, style, selected, selectable, selectionItem, onSelect, showSelectedBackground, containsSelection, outerHeight, onDragLeave, onDragOver, onDrop, onDoubleClick, }) => {
|
|
27
|
+
const ref = (0, react_1.useRef)(null);
|
|
27
28
|
const indentWidth = (0, timeline_row_layout_1.getTimelineRowIndentWidth)(depth);
|
|
29
|
+
(0, TimelineSelection_1.useTimelineFocusableItem)(selectionItem, ref);
|
|
28
30
|
const keyframeControlsColumnStyle = (0, react_1.useMemo)(() => ({
|
|
29
31
|
...keyframeControlsColumnBaseStyle,
|
|
30
32
|
width: (0, timeline_row_layout_1.getTimelineRowLeftChromeWidth)(depth),
|
|
@@ -73,8 +75,8 @@ const TimelineRowChrome = ({ depth, eye, keyframeControls, arrow, children, styl
|
|
|
73
75
|
const chrome = (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
74
76
|
jsx_runtime_1.jsx("div", { style: leftChromeStyle, children: keyframeControls ? (jsx_runtime_1.jsx("div", { style: keyframeControlsColumnStyle, children: keyframeControls })) : (jsx_runtime_1.jsxs("div", { style: chromeColumnStyle, children: [eye, indentWidth > 0 ? jsx_runtime_1.jsx(Padder_1.Padder, { depth: depth }) : null, arrow] })) }), children] }));
|
|
75
77
|
if (outerStyle) {
|
|
76
|
-
return (jsx_runtime_1.jsx("div", { style: outerStyle, onDragLeave: onDragLeave, onDragOver: onDragOver, onDrop: onDrop, onPointerDown: selectable ? onPointerDown : undefined, onContextMenu: selectable ? onContextMenu : undefined, onDoubleClick: onDoubleClick, children: jsx_runtime_1.jsx("div", { style: innerRowStyle, children: chrome }) }));
|
|
78
|
+
return (jsx_runtime_1.jsx("div", { ref: ref, style: outerStyle, onDragLeave: onDragLeave, onDragOver: onDragOver, onDrop: onDrop, onPointerDown: selectable ? onPointerDown : undefined, onContextMenu: selectable ? onContextMenu : undefined, onDoubleClick: onDoubleClick, children: jsx_runtime_1.jsx("div", { style: innerRowStyle, children: chrome }) }));
|
|
77
79
|
}
|
|
78
|
-
return (jsx_runtime_1.jsx("div", { onDragLeave: onDragLeave, onDragOver: onDragOver, onDrop: onDrop, onPointerDown: selectable ? onPointerDown : undefined, onContextMenu: selectable ? onContextMenu : undefined, onDoubleClick: onDoubleClick, style: innerRowStyle, children: chrome }));
|
|
80
|
+
return (jsx_runtime_1.jsx("div", { ref: ref, onDragLeave: onDragLeave, onDragOver: onDragOver, onDrop: onDrop, onPointerDown: selectable ? onPointerDown : undefined, onContextMenu: selectable ? onContextMenu : undefined, onDoubleClick: onDoubleClick, style: innerRowStyle, children: chrome }));
|
|
79
81
|
};
|
|
80
82
|
exports.TimelineRowChrome = TimelineRowChrome;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import React, { type CSSProperties } from 'react';
|
|
2
|
+
import { type GetDragOverrides, type GetEffectDragOverrides, type PropStatuses } from 'remotion';
|
|
2
3
|
import type { SequenceNodePathInfo, TrackWithHash } from '../../helpers/get-timeline-sequence-sort-key';
|
|
4
|
+
import { type GetIsExpanded } from '../ExpandedTracksProvider';
|
|
3
5
|
export declare const TIMELINE_SELECTED_BACKGROUND = "#3B3F42";
|
|
4
6
|
export declare const TIMELINE_SELECTED_LABEL_BACKGROUND = "#B0B0B0";
|
|
5
7
|
export declare const TIMELINE_SELECTED_LABEL_TEXT = "black";
|
|
@@ -114,10 +116,10 @@ type TimelineSelectionContextValue = {
|
|
|
114
116
|
readonly canSelect: boolean;
|
|
115
117
|
readonly selectedItems: readonly TimelineSelection[];
|
|
116
118
|
readonly isSelected: (item: TimelineSelection) => boolean;
|
|
117
|
-
readonly selectItem: (item: TimelineSelection, interaction?: TimelineSelectionInteraction) => void;
|
|
119
|
+
readonly selectItem: (item: TimelineSelection, interaction?: TimelineSelectionInteraction, allSelectableItems?: readonly TimelineSelection[]) => void;
|
|
118
120
|
readonly selectItems: (items: readonly TimelineSelection[]) => void;
|
|
119
|
-
readonly registerSelectableItem: (item: TimelineSelection) => () => void;
|
|
120
121
|
readonly registerMarqueeSelectableItem: (item: TimelineSelection, getRect: () => DOMRect | null) => () => void;
|
|
122
|
+
readonly registerFocusableItem: (item: TimelineSelection, getRect: () => DOMRect | null) => () => void;
|
|
121
123
|
readonly getMarqueeSelection: (marqueeRect: TimelineMarqueeRect, lockedSelectionKind: TimelineMarqueeSelectionKind | null) => {
|
|
122
124
|
readonly lockedSelectionKind: TimelineMarqueeSelectionKind | null;
|
|
123
125
|
readonly selectedItems: readonly TimelineSelection[];
|
|
@@ -125,13 +127,30 @@ type TimelineSelectionContextValue = {
|
|
|
125
127
|
readonly containsSelection: (nodePathInfo: SequenceNodePathInfo) => boolean;
|
|
126
128
|
readonly clearSelection: () => void;
|
|
127
129
|
};
|
|
130
|
+
export declare const TimelineSelectionOrderProvider: React.FC<{
|
|
131
|
+
readonly children: React.ReactNode;
|
|
132
|
+
readonly items: readonly TimelineSelection[];
|
|
133
|
+
}>;
|
|
128
134
|
export declare const getTimelineSelectionFromNodePathInfo: (nodePathInfo: SequenceNodePathInfo | null) => TimelineSelection | null;
|
|
129
135
|
export declare const getTimelineSelectionKey: (item: TimelineSelection) => string;
|
|
130
136
|
export declare const getSelectableTimelineSequenceSelections: (tracks: readonly Pick<TrackWithHash, "nodePathInfo">[]) => TimelineSelection[];
|
|
137
|
+
export declare const getSelectableTimelineItems: ({ getDragOverrides, getEffectDragOverrides, getIsExpanded, propStatuses, selectedItems, timeline, timelinePosition, }: {
|
|
138
|
+
readonly getDragOverrides: GetDragOverrides;
|
|
139
|
+
readonly getEffectDragOverrides: GetEffectDragOverrides;
|
|
140
|
+
readonly getIsExpanded: GetIsExpanded;
|
|
141
|
+
readonly propStatuses: PropStatuses;
|
|
142
|
+
readonly selectedItems: readonly TimelineSelection[];
|
|
143
|
+
readonly timeline: readonly TrackWithHash[];
|
|
144
|
+
readonly timelinePosition: number;
|
|
145
|
+
}) => TimelineSelection[];
|
|
131
146
|
export declare const getTimelineSequenceSelectionKey: (nodePathInfo: SequenceNodePathInfo) => string;
|
|
132
147
|
export declare const TimelineSelectAllKeybindings: React.FC<{
|
|
133
148
|
readonly timeline: readonly TrackWithHash[];
|
|
134
149
|
}>;
|
|
150
|
+
export declare const TimelineSelectableItemsProvider: React.FC<{
|
|
151
|
+
readonly children: React.ReactNode;
|
|
152
|
+
readonly timeline: readonly TrackWithHash[];
|
|
153
|
+
}>;
|
|
135
154
|
export declare const TimelineSelectionProvider: React.FC<{
|
|
136
155
|
readonly children: React.ReactNode;
|
|
137
156
|
}>;
|
|
@@ -144,6 +163,7 @@ export declare const useTimelineMarqueeSelection: () => {
|
|
|
144
163
|
onPointerDownCapture: (event: React.PointerEvent<HTMLDivElement>) => void;
|
|
145
164
|
};
|
|
146
165
|
export declare const useTimelineMarqueeSelectableItem: (item: TimelineSelection | null, ref: React.RefObject<Element | null>) => void;
|
|
166
|
+
export declare const useTimelineFocusableItem: (item: TimelineSelection | null, ref: React.RefObject<Element | null>) => void;
|
|
147
167
|
export declare const useTimelineRowSelection: (nodePathInfo: SequenceNodePathInfo | null) => {
|
|
148
168
|
onSelect: (interaction?: TimelineSelectionInteraction | undefined) => void;
|
|
149
169
|
selectable: boolean;
|