@remotion/studio 4.0.478 → 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/AssetSelector.js +8 -14
- package/dist/components/AudioWaveform.js +19 -11
- package/dist/components/Button.d.ts +2 -0
- package/dist/components/Button.js +9 -6
- package/dist/components/CompactExplanation.d.ts +12 -0
- package/dist/components/CompactExplanation.js +52 -0
- package/dist/components/CompositionSelector.js +2 -4
- package/dist/components/CurrentAsset.d.ts +3 -1
- package/dist/components/CurrentAsset.js +42 -34
- package/dist/components/CurrentComposition.d.ts +1 -1
- package/dist/components/CurrentComposition.js +38 -31
- package/dist/components/CurrentCompositionSideEffects.d.ts +0 -3
- package/dist/components/CurrentCompositionSideEffects.js +1 -37
- package/dist/components/DefaultPropsEditor.d.ts +12 -2
- package/dist/components/DefaultPropsEditor.js +2 -2
- package/dist/components/Editor.js +2 -5
- package/dist/components/EditorContent.js +2 -1
- package/dist/components/EffectPickerModal.d.ts +5 -0
- package/dist/components/EffectPickerModal.js +179 -0
- 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/InspectorInfoHeader.d.ts +11 -0
- package/dist/components/InspectorInfoHeader.js +55 -0
- package/dist/components/InspectorPanel/DefaultInspector.d.ts +8 -0
- package/dist/components/InspectorPanel/DefaultInspector.js +93 -0
- package/dist/components/InspectorPanel/EasingInspector.d.ts +5 -0
- package/dist/components/InspectorPanel/EasingInspector.js +41 -0
- package/dist/components/InspectorPanel/GuideInspector.d.ts +7 -0
- package/dist/components/InspectorPanel/GuideInspector.js +55 -0
- package/dist/components/InspectorPanel/KeyframeInspector.d.ts +7 -0
- package/dist/components/InspectorPanel/KeyframeInspector.js +109 -0
- package/dist/components/InspectorPanel/SelectedInspector.d.ts +5 -0
- package/dist/components/InspectorPanel/SelectedInspector.js +26 -0
- package/dist/components/InspectorPanel/SequenceSelectionInspector.d.ts +5 -0
- package/dist/components/InspectorPanel/SequenceSelectionInspector.js +117 -0
- package/dist/components/InspectorPanel/common.d.ts +15 -0
- package/dist/components/InspectorPanel/common.js +18 -0
- package/dist/components/InspectorPanel/inspector-selection.d.ts +10 -0
- package/dist/components/InspectorPanel/inspector-selection.js +35 -0
- package/dist/components/InspectorPanel/styles.d.ts +28 -0
- package/dist/components/InspectorPanel/styles.js +196 -0
- package/dist/components/InspectorPanel/use-track-for-selection.d.ts +2 -0
- package/dist/components/InspectorPanel/use-track-for-selection.js +22 -0
- package/dist/components/InspectorPanel.d.ts +8 -0
- package/dist/components/InspectorPanel.js +26 -0
- package/dist/components/InspectorPanelLayout.d.ts +1 -0
- package/dist/components/InspectorPanelLayout.js +4 -0
- package/dist/components/InspectorSequenceSection.d.ts +19 -0
- package/dist/components/InspectorSequenceSection.js +157 -0
- package/dist/components/InspectorSourceLocation.d.ts +7 -0
- package/dist/components/InspectorSourceLocation.js +71 -0
- package/dist/components/KeyboardShortcutsExplainer.js +10 -2
- package/dist/components/Modals.js +3 -3
- package/dist/components/NewComposition/InputDragger.js +1 -1
- package/dist/components/NewComposition/RemInput.d.ts +1 -0
- package/dist/components/NewComposition/RemInput.js +8 -2
- package/dist/components/NewComposition/RemTextarea.d.ts +1 -0
- package/dist/components/NewComposition/RemTextarea.js +8 -2
- package/dist/components/NewComposition/ValidationMessage.d.ts +3 -0
- package/dist/components/NewComposition/ValidationMessage.js +16 -5
- package/dist/components/OptionsPanel.d.ts +1 -1
- package/dist/components/OptionsPanel.js +8 -17
- package/dist/components/QuickSwitcher/QuickSwitcherContent.js +2 -7
- package/dist/components/QuickSwitcher/QuickSwitcherResult.js +3 -10
- package/dist/components/QuickSwitcher/shared.d.ts +4 -0
- package/dist/components/QuickSwitcher/shared.js +24 -0
- package/dist/components/RenderModal/DataEditor.d.ts +29 -2
- package/dist/components/RenderModal/DataEditor.js +107 -56
- package/dist/components/RenderModal/RenderModalJSONPropsEditor.d.ts +1 -0
- package/dist/components/RenderModal/RenderModalJSONPropsEditor.js +25 -7
- package/dist/components/RenderModal/SchemaEditor/Fieldset.d.ts +2 -1
- package/dist/components/RenderModal/SchemaEditor/Fieldset.js +10 -5
- package/dist/components/RenderModal/SchemaEditor/SchemaEditor.d.ts +4 -0
- package/dist/components/RenderModal/SchemaEditor/SchemaEditor.js +27 -4
- package/dist/components/RenderModal/SchemaEditor/SchemaErrorMessages.d.ts +12 -4
- package/dist/components/RenderModal/SchemaEditor/SchemaErrorMessages.js +23 -9
- package/dist/components/RenderModal/SchemaEditor/SchemaLabel.js +3 -3
- package/dist/components/RenderModal/SchemaEditor/SchemaSeparationLine.js +8 -1
- package/dist/components/RenderModal/SchemaEditor/ZodColorEditor.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodDateEditor.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodDiscriminatedUnionEditor.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodEnumEditor.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodErrorMessages.d.ts +1 -0
- package/dist/components/RenderModal/SchemaEditor/ZodErrorMessages.js +23 -6
- package/dist/components/RenderModal/SchemaEditor/ZodFieldValidation.js +2 -2
- package/dist/components/RenderModal/SchemaEditor/ZodNonEditableValue.js +2 -1
- package/dist/components/RenderModal/SchemaEditor/ZodNumberEditor.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodObjectEditor.js +9 -11
- package/dist/components/RenderModal/SchemaEditor/ZodOrNullishEditor.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodStaticFileEditor.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodStringEditor.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodTextareaEditor.js +1 -1
- package/dist/components/RenderModal/WarningIndicatorButton.d.ts +1 -0
- package/dist/components/RenderModal/WarningIndicatorButton.js +17 -4
- package/dist/components/RenderModal/get-render-modal-warnings.d.ts +2 -1
- package/dist/components/RenderModal/get-render-modal-warnings.js +6 -3
- package/dist/components/RendersTab.js +1 -1
- package/dist/components/ResetZoomButton.d.ts +2 -1
- package/dist/components/ResetZoomButton.js +5 -1
- package/dist/components/SegmentedControl.d.ts +3 -0
- package/dist/components/SegmentedControl.js +11 -5
- package/dist/components/SelectedOutlineElement.js +96 -24
- package/dist/components/SelectedOutlineOverlay.d.ts +1 -1
- package/dist/components/SelectedOutlineOverlay.js +44 -30
- package/dist/components/SelectedOutlineUvControls.d.ts +9 -0
- package/dist/components/SelectedOutlineUvControls.js +64 -10
- package/dist/components/Tabs/index.js +4 -4
- package/dist/components/Timeline/EasingEditorModal.d.ts +5 -4
- package/dist/components/Timeline/EasingEditorModal.js +597 -124
- package/dist/components/Timeline/KeyframeSettingsModal.d.ts +2 -2
- package/dist/components/Timeline/SubscribeToNodePaths.d.ts +2 -2
- package/dist/components/Timeline/Timeline.js +9 -9
- package/dist/components/Timeline/TimelineClipboardKeybindings.d.ts +15 -3
- package/dist/components/Timeline/TimelineClipboardKeybindings.js +85 -1
- package/dist/components/Timeline/TimelineDeleteKeybindings.js +10 -3
- package/dist/components/Timeline/TimelineEffectItem.d.ts +2 -2
- package/dist/components/Timeline/TimelineEffectItem.js +1 -1
- package/dist/components/Timeline/TimelineEffectPropItem.d.ts +8 -0
- package/dist/components/Timeline/TimelineEffectPropItem.js +25 -21
- package/dist/components/Timeline/TimelineExpandArrowButton.js +42 -2
- package/dist/components/Timeline/TimelineExpandedRow.d.ts +5 -2
- package/dist/components/Timeline/TimelineExpandedRow.js +6 -6
- package/dist/components/Timeline/TimelineExpandedSection.d.ts +1 -1
- package/dist/components/Timeline/TimelineExpandedSection.js +10 -25
- package/dist/components/Timeline/TimelineKeyframeControls.d.ts +8 -2
- package/dist/components/Timeline/TimelineKeyframeControls.js +24 -3
- package/dist/components/Timeline/TimelineKeyframeEasingLine.js +2 -47
- package/dist/components/Timeline/TimelineKeyframedValue.d.ts +1 -1
- package/dist/components/Timeline/TimelineKeyframedValue.js +8 -10
- package/dist/components/Timeline/TimelineNumberField.js +5 -11
- package/dist/components/Timeline/TimelineRotationField.js +5 -6
- package/dist/components/Timeline/TimelineRowChrome.d.ts +2 -0
- package/dist/components/Timeline/TimelineRowChrome.js +5 -3
- package/dist/components/Timeline/TimelineScaleField.js +4 -8
- package/dist/components/Timeline/TimelineSelection.d.ts +28 -2
- package/dist/components/Timeline/TimelineSelection.js +342 -61
- package/dist/components/Timeline/TimelineSequence.js +19 -3
- package/dist/components/Timeline/TimelineSequenceItem.js +68 -64
- package/dist/components/Timeline/TimelineSequencePropItem.d.ts +12 -2
- package/dist/components/Timeline/TimelineSequencePropItem.js +57 -53
- package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +6 -4
- package/dist/components/Timeline/TimelineTransformOriginField.js +4 -5
- package/dist/components/Timeline/TimelineTranslateField.js +4 -5
- package/dist/components/Timeline/TimelineUvCoordinateField.js +4 -4
- package/dist/components/Timeline/call-add-keyframe.d.ts +4 -4
- package/dist/components/Timeline/call-delete-keyframe.d.ts +4 -4
- package/dist/components/Timeline/call-move-keyframe.d.ts +2 -2
- package/dist/components/Timeline/call-update-keyframe-settings.d.ts +3 -3
- package/dist/components/Timeline/delete-selected-timeline-item.d.ts +2 -1
- package/dist/components/Timeline/delete-selected-timeline-item.js +27 -1
- 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/parse-keyframe-field-from-node-path.js +2 -2
- package/dist/components/Timeline/reset-selected-timeline-props.d.ts +3 -3
- package/dist/components/Timeline/reset-selected-timeline-props.js +34 -7
- package/dist/components/Timeline/save-effect-prop.d.ts +2 -2
- package/dist/components/Timeline/save-sequence-prop.d.ts +2 -2
- package/dist/components/Timeline/sequence-props-subscription-store.d.ts +3 -3
- 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/timeline-field-display-utils.d.ts +5 -0
- package/dist/components/Timeline/timeline-field-display-utils.js +244 -0
- package/dist/components/Timeline/update-selected-easing.d.ts +47 -4
- package/dist/components/Timeline/update-selected-easing.js +40 -9
- package/dist/components/Timeline/use-expanded-track-keyframe-rows.js +50 -18
- package/dist/components/Timeline/use-sequence-freeze-frame-menu-item.d.ts +13 -0
- package/dist/components/Timeline/use-sequence-freeze-frame-menu-item.js +73 -0
- package/dist/components/Timeline/use-sequence-props-subscription.d.ts +3 -3
- package/dist/components/Timeline/use-timeline-expanded-tree.d.ts +12 -0
- package/dist/components/Timeline/use-timeline-expanded-tree.js +60 -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/VisualControls/VisualControlsContent.d.ts +1 -1
- package/dist/components/VisualControls/VisualControlsContent.js +4 -5
- package/dist/components/effect-drag-and-drop.d.ts +10 -0
- package/dist/components/effect-drag-and-drop.js +17 -8
- package/dist/components/effect-picker-search.d.ts +5 -0
- package/dist/components/effect-picker-search.js +77 -0
- package/dist/components/selected-outline-drag.d.ts +21 -2
- package/dist/components/selected-outline-drag.js +31 -6
- package/dist/components/selected-outline-measurement.js +48 -14
- package/dist/components/selected-outline-types.d.ts +7 -7
- package/dist/components/selected-outline-uv.d.ts +4 -3
- package/dist/components/selected-outline-uv.js +6 -2
- package/dist/error-overlay/remotion-overlay/ErrorLoader.js +8 -1
- package/dist/esm/{chunk-hrw9799x.js → chunk-4rq5gt8c.js} +30557 -26640
- package/dist/esm/internals.mjs +30557 -26640
- package/dist/esm/previewEntry.mjs +18584 -14665
- package/dist/esm/renderEntry.mjs +1 -1
- package/dist/helpers/migrate-expanded-tracks-for-subscription-key.js +3 -3
- package/dist/helpers/render-codec-label.d.ts +2 -0
- package/dist/helpers/render-codec-label.js +49 -0
- package/dist/helpers/timeline-layout.d.ts +4 -4
- package/dist/helpers/use-media-metadata.d.ts +8 -2
- package/dist/helpers/use-media-metadata.js +17 -4
- package/dist/state/modals.d.ts +9 -4
- package/package.json +12 -12
|
@@ -36,11 +36,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.TimelineExpandedSection = void 0;
|
|
37
37
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
38
38
|
const react_1 = __importStar(require("react"));
|
|
39
|
-
const remotion_1 = require("remotion");
|
|
40
39
|
const colors_1 = require("../../helpers/colors");
|
|
41
40
|
const timeline_layout_1 = require("../../helpers/timeline-layout");
|
|
42
|
-
const ExpandedTracksProvider_1 = require("../ExpandedTracksProvider");
|
|
43
41
|
const TimelineExpandedRow_1 = require("./TimelineExpandedRow");
|
|
42
|
+
const use_timeline_expanded_tree_1 = require("./use-timeline-expanded-tree");
|
|
44
43
|
const expandedSectionBase = {
|
|
45
44
|
color: 'white',
|
|
46
45
|
fontFamily: 'Arial, Helvetica, sans-serif',
|
|
@@ -54,30 +53,16 @@ const separator = {
|
|
|
54
53
|
borderBottom: `1px solid ${colors_1.TIMELINE_TRACK_SEPARATOR}`,
|
|
55
54
|
};
|
|
56
55
|
const TimelineExpandedSection = ({ sequence, validatedLocation, nodePathInfo, nestedDepth, keyframeDisplayOffset, }) => {
|
|
57
|
-
const { getIsExpanded } = (0,
|
|
58
|
-
const { toggleTrack } = (0, react_1.useContext)(ExpandedTracksProvider_1.ExpandedTracksSetterContext);
|
|
59
|
-
const { propStatuses: visualModePropStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModePropStatusesContext);
|
|
60
|
-
const { getDragOverrides, getEffectDragOverrides } = (0, react_1.useContext)(remotion_1.Internals.VisualModeDragOverridesContext);
|
|
61
|
-
const tree = (0, react_1.useMemo)(() => (0, timeline_layout_1.buildTimelineTree)({
|
|
56
|
+
const { filteredTree, getIsExpanded, toggleTrack } = (0, use_timeline_expanded_tree_1.useTimelineExpandedTree)({
|
|
62
57
|
sequence,
|
|
63
58
|
nodePathInfo,
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
getEffectDragOverrides,
|
|
72
|
-
visualModePropStatuses,
|
|
73
|
-
]);
|
|
74
|
-
const flat = (0, react_1.useMemo)(() => (0, timeline_layout_1.flattenVisibleTreeNodes)({ nodes: tree, getIsExpanded }), [tree, getIsExpanded]);
|
|
75
|
-
const expandedHeight = (0, react_1.useMemo)(() => (0, timeline_layout_1.getExpandedTrackHeight)({
|
|
76
|
-
sequence,
|
|
77
|
-
nodePathInfo,
|
|
78
|
-
getIsExpanded,
|
|
79
|
-
propStatuses: visualModePropStatuses,
|
|
80
|
-
}), [sequence, nodePathInfo, getIsExpanded, visualModePropStatuses]);
|
|
59
|
+
});
|
|
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]);
|
|
81
66
|
const style = (0, react_1.useMemo)(() => {
|
|
82
67
|
return {
|
|
83
68
|
...expandedSectionBase,
|
|
@@ -86,7 +71,7 @@ const TimelineExpandedSection = ({ sequence, validatedLocation, nodePathInfo, ne
|
|
|
86
71
|
}, [expandedHeight]);
|
|
87
72
|
const { schema } = sequence.controls;
|
|
88
73
|
if (flat.length === 0) {
|
|
89
|
-
return
|
|
74
|
+
return null;
|
|
90
75
|
}
|
|
91
76
|
return (jsx_runtime_1.jsx("div", { style: style, children: flat.map(({ node, depth }, i) => {
|
|
92
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,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type { CanUpdateSequencePropStatus, DragOverrideValue, SequencePropsSubscriptionKey,
|
|
2
|
+
import type { CanUpdateSequencePropStatus, DragOverrideValue, SequencePropsSubscriptionKey, InteractivitySchema } from 'remotion';
|
|
3
3
|
import type { SequenceNodePathInfo } from '../../helpers/get-timeline-sequence-sort-key';
|
|
4
4
|
import { type TimelineSelection } from './TimelineSelection';
|
|
5
5
|
export declare const getSelectedKeyframeControlNodePathInfos: ({ clickedNodePathInfo, selectedItems, }: {
|
|
@@ -11,6 +11,11 @@ export declare const shouldShowTimelineKeyframeControls: ({ propStatus, selected
|
|
|
11
11
|
selected: boolean;
|
|
12
12
|
keyframable: boolean;
|
|
13
13
|
}) => boolean;
|
|
14
|
+
export type TimelineKeyframeControlsMode = 'timeline' | 'inspector';
|
|
15
|
+
export declare const shouldShowTimelineKeyframeNavigation: ({ propStatus, selected, }: {
|
|
16
|
+
readonly propStatus: CanUpdateSequencePropStatus;
|
|
17
|
+
readonly selected: boolean;
|
|
18
|
+
}) => boolean;
|
|
14
19
|
export declare const TimelineKeyframeControls: React.FC<{
|
|
15
20
|
readonly fieldKey: string;
|
|
16
21
|
readonly propStatus: CanUpdateSequencePropStatus;
|
|
@@ -19,7 +24,8 @@ export declare const TimelineKeyframeControls: React.FC<{
|
|
|
19
24
|
readonly keyframeDisplayOffset: number;
|
|
20
25
|
readonly defaultValue: unknown;
|
|
21
26
|
readonly dragOverrideValue: DragOverrideValue | undefined;
|
|
22
|
-
readonly schema:
|
|
27
|
+
readonly schema: InteractivitySchema;
|
|
23
28
|
readonly effectIndex: number | null;
|
|
24
29
|
readonly nodePathInfo: SequenceNodePathInfo;
|
|
30
|
+
readonly mode?: TimelineKeyframeControlsMode;
|
|
25
31
|
}>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TimelineKeyframeControls = exports.shouldShowTimelineKeyframeControls = exports.getSelectedKeyframeControlNodePathInfos = void 0;
|
|
3
|
+
exports.TimelineKeyframeControls = exports.shouldShowTimelineKeyframeNavigation = exports.shouldShowTimelineKeyframeControls = exports.getSelectedKeyframeControlNodePathInfos = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const studio_shared_1 = require("@remotion/studio-shared");
|
|
6
6
|
const react_1 = require("react");
|
|
@@ -255,6 +255,13 @@ const shouldShowTimelineKeyframeControls = ({ propStatus, selected, keyframable,
|
|
|
255
255
|
return isKeyframedStatus(propStatus);
|
|
256
256
|
};
|
|
257
257
|
exports.shouldShowTimelineKeyframeControls = shouldShowTimelineKeyframeControls;
|
|
258
|
+
const shouldShowTimelineKeyframeNavigation = ({ propStatus, selected, }) => {
|
|
259
|
+
if (selected) {
|
|
260
|
+
return true;
|
|
261
|
+
}
|
|
262
|
+
return isKeyframedStatus(propStatus);
|
|
263
|
+
};
|
|
264
|
+
exports.shouldShowTimelineKeyframeNavigation = shouldShowTimelineKeyframeNavigation;
|
|
258
265
|
const TimelineKeyframeControls = ({ fieldKey, propStatus, nodePath, fileName, keyframeDisplayOffset, defaultValue, dragOverrideValue, schema, effectIndex, nodePathInfo, }) => {
|
|
259
266
|
const videoConfig = (0, remotion_1.useVideoConfig)();
|
|
260
267
|
const timelinePosition = remotion_1.Internals.Timeline.useTimelinePosition();
|
|
@@ -278,6 +285,18 @@ const TimelineKeyframeControls = ({ fieldKey, propStatus, nodePath, fileName, ke
|
|
|
278
285
|
}, [jsxFrame, propStatus]);
|
|
279
286
|
const previousDisplayFrame = (0, react_1.useMemo)(() => (0, get_keyframe_navigation_1.getPreviousKeyframeDisplayFrame)(keyframes, timelinePosition, videoConfig.durationInFrames), [keyframes, timelinePosition, videoConfig.durationInFrames]);
|
|
280
287
|
const nextDisplayFrame = (0, react_1.useMemo)(() => (0, get_keyframe_navigation_1.getNextKeyframeDisplayFrame)(keyframes, timelinePosition, videoConfig.durationInFrames), [keyframes, timelinePosition, videoConfig.durationInFrames]);
|
|
288
|
+
const propertySelected = (0, react_1.useMemo)(() => {
|
|
289
|
+
const propertySelection = (0, TimelineSelection_1.getTimelineSelectionFromNodePathInfo)(nodePathInfo);
|
|
290
|
+
if (propertySelection === null) {
|
|
291
|
+
return false;
|
|
292
|
+
}
|
|
293
|
+
const propertySelectionKey = (0, TimelineSelection_1.getTimelineSelectionKey)(propertySelection);
|
|
294
|
+
return selectedItems.some((selection) => (0, TimelineSelection_1.getTimelineSelectionKey)(selection) === propertySelectionKey);
|
|
295
|
+
}, [nodePathInfo, selectedItems]);
|
|
296
|
+
const showNavigationButtons = (0, exports.shouldShowTimelineKeyframeNavigation)({
|
|
297
|
+
propStatus,
|
|
298
|
+
selected: propertySelected,
|
|
299
|
+
});
|
|
281
300
|
const keyframable = (0, studio_shared_1.isSchemaFieldKeyframable)({
|
|
282
301
|
schema,
|
|
283
302
|
key: fieldKey,
|
|
@@ -404,12 +423,14 @@ const TimelineKeyframeControls = ({ fieldKey, propStatus, nodePath, fileName, ke
|
|
|
404
423
|
...navButtonStyle,
|
|
405
424
|
cursor: previousDisabled ? 'default' : 'pointer',
|
|
406
425
|
opacity: previousDisabled ? 0.35 : 1,
|
|
407
|
-
|
|
426
|
+
visibility: showNavigationButtons ? 'visible' : 'hidden',
|
|
427
|
+
}), [previousDisabled, showNavigationButtons]);
|
|
408
428
|
const nextStyle = (0, react_1.useMemo)(() => ({
|
|
409
429
|
...navButtonStyle,
|
|
410
430
|
cursor: nextDisabled ? 'default' : 'pointer',
|
|
411
431
|
opacity: nextDisabled ? 0.35 : 1,
|
|
412
|
-
|
|
432
|
+
visibility: showNavigationButtons ? 'visible' : 'hidden',
|
|
433
|
+
}), [nextDisabled, showNavigationButtons]);
|
|
413
434
|
const diamondStyle = (0, react_1.useMemo)(() => ({
|
|
414
435
|
...diamondButtonStyle,
|
|
415
436
|
cursor: canToggleKeyframe && clientId ? 'pointer' : 'default',
|
|
@@ -42,7 +42,6 @@ const client_id_1 = require("../../helpers/client-id");
|
|
|
42
42
|
const colors_1 = require("../../helpers/colors");
|
|
43
43
|
const get_left_of_timeline_slider_1 = require("../../helpers/get-left-of-timeline-slider");
|
|
44
44
|
const timeline_layout_1 = require("../../helpers/timeline-layout");
|
|
45
|
-
const modals_1 = require("../../state/modals");
|
|
46
45
|
const ContextMenu_1 = require("../ContextMenu");
|
|
47
46
|
const TimelineSelection_1 = require("./TimelineSelection");
|
|
48
47
|
const TimelineWidthProvider_1 = require("./TimelineWidthProvider");
|
|
@@ -85,7 +84,6 @@ const TimelineKeyframeEasingLineUnmemoized = ({ fromFrame, toFrame, rowHeight, n
|
|
|
85
84
|
const { setPropStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModeSettersContext);
|
|
86
85
|
const { overrideIdToNodePathMappings } = (0, react_1.useContext)(remotion_1.Internals.OverrideIdsToNodePathsGettersContext);
|
|
87
86
|
const currentSelection = (0, TimelineSelection_1.useCurrentTimelineSelectionStateAsRef)();
|
|
88
|
-
const { setSelectedModal } = (0, react_1.useContext)(modals_1.ModalsContext);
|
|
89
87
|
const getTargetSelections = (0, react_1.useCallback)(() => {
|
|
90
88
|
const selectedEasings = (0, update_selected_easing_1.getEasingSelections)(currentSelection.current.selectedItems);
|
|
91
89
|
return selected ? selectedEasings : [selectionItem];
|
|
@@ -112,33 +110,6 @@ const TimelineKeyframeEasingLineUnmemoized = ({ fromFrame, toFrame, rowHeight, n
|
|
|
112
110
|
sequencesRef,
|
|
113
111
|
setPropStatuses,
|
|
114
112
|
]);
|
|
115
|
-
const onOpenEasingEditor = (0, react_1.useCallback)(() => {
|
|
116
|
-
if (previewServerState.type !== 'connected') {
|
|
117
|
-
return;
|
|
118
|
-
}
|
|
119
|
-
const initialEasing = (0, update_selected_easing_1.getTimelineEasingValueForSelection)({
|
|
120
|
-
selection: selectionItem,
|
|
121
|
-
sequences: sequencesRef.current,
|
|
122
|
-
overrideIdsToNodePaths: overrideIdToNodePathMappings,
|
|
123
|
-
propStatuses: propStatusesRef.current,
|
|
124
|
-
});
|
|
125
|
-
if (initialEasing === null) {
|
|
126
|
-
return;
|
|
127
|
-
}
|
|
128
|
-
setSelectedModal({
|
|
129
|
-
type: 'easing-editor',
|
|
130
|
-
initialEasing,
|
|
131
|
-
selections: getTargetSelections(),
|
|
132
|
-
});
|
|
133
|
-
}, [
|
|
134
|
-
getTargetSelections,
|
|
135
|
-
overrideIdToNodePathMappings,
|
|
136
|
-
previewServerState,
|
|
137
|
-
propStatusesRef,
|
|
138
|
-
selectionItem,
|
|
139
|
-
sequencesRef,
|
|
140
|
-
setSelectedModal,
|
|
141
|
-
]);
|
|
142
113
|
const contextMenuValues = (0, react_1.useMemo)(() => {
|
|
143
114
|
return [
|
|
144
115
|
{
|
|
@@ -148,7 +119,7 @@ const TimelineKeyframeEasingLineUnmemoized = ({ fromFrame, toFrame, rowHeight, n
|
|
|
148
119
|
label: 'Linear',
|
|
149
120
|
leftItem: null,
|
|
150
121
|
disabled: previewServerState.type !== 'connected',
|
|
151
|
-
onClick: () => updateEasing(
|
|
122
|
+
onClick: () => updateEasing(studio_shared_1.LINEAR_KEYFRAME_EASING),
|
|
152
123
|
quickSwitcherLabel: null,
|
|
153
124
|
subMenu: null,
|
|
154
125
|
value: 'linear',
|
|
@@ -165,24 +136,8 @@ const TimelineKeyframeEasingLineUnmemoized = ({ fromFrame, toFrame, rowHeight, n
|
|
|
165
136
|
subMenu: null,
|
|
166
137
|
value: preset.id,
|
|
167
138
|
})),
|
|
168
|
-
{
|
|
169
|
-
type: 'divider',
|
|
170
|
-
id: 'edit-easing-divider',
|
|
171
|
-
},
|
|
172
|
-
{
|
|
173
|
-
type: 'item',
|
|
174
|
-
id: 'edit-easing',
|
|
175
|
-
keyHint: null,
|
|
176
|
-
label: 'Edit...',
|
|
177
|
-
leftItem: null,
|
|
178
|
-
disabled: previewServerState.type !== 'connected',
|
|
179
|
-
onClick: onOpenEasingEditor,
|
|
180
|
-
quickSwitcherLabel: null,
|
|
181
|
-
subMenu: null,
|
|
182
|
-
value: 'edit-easing',
|
|
183
|
-
},
|
|
184
139
|
];
|
|
185
|
-
}, [
|
|
140
|
+
}, [previewServerState.type, updateEasing]);
|
|
186
141
|
const onOpenContextMenu = (0, react_1.useCallback)((event) => {
|
|
187
142
|
if (!selectable) {
|
|
188
143
|
return false;
|
|
@@ -4,7 +4,7 @@ import type { SchemaFieldInfo, TimelineFieldOnDragValueChange } from '../../help
|
|
|
4
4
|
export declare const TimelineKeyframedValue: React.FC<{
|
|
5
5
|
readonly field: SchemaFieldInfo;
|
|
6
6
|
readonly propStatus: CanUpdateSequencePropStatusKeyframed;
|
|
7
|
-
readonly
|
|
7
|
+
readonly sourceFrame: number;
|
|
8
8
|
readonly dragOverrideValue: DragOverrideValue | undefined;
|
|
9
9
|
readonly onSave: (value: unknown, sourceFrame: number) => Promise<void>;
|
|
10
10
|
readonly onDragValueChange: TimelineFieldOnDragValueChange;
|
|
@@ -8,19 +8,17 @@ const TimelineSchemaField_1 = require("./TimelineSchemaField");
|
|
|
8
8
|
const valuesEqual = (left, right) => {
|
|
9
9
|
return JSON.stringify(left) === JSON.stringify(right);
|
|
10
10
|
};
|
|
11
|
-
const TimelineKeyframedValue = ({ field, propStatus,
|
|
12
|
-
const timelinePosition = remotion_1.Internals.Timeline.useTimelinePosition();
|
|
13
|
-
const jsxFrame = timelinePosition - keyframeDisplayOffset;
|
|
11
|
+
const TimelineKeyframedValue = ({ field, propStatus, sourceFrame, dragOverrideValue, onSave, onDragValueChange, onDragEnd, scaleLockNodePath, }) => {
|
|
14
12
|
const computedValue = (0, react_1.useMemo)(() => {
|
|
15
13
|
const raw = remotion_1.Internals.interpolateKeyframedStatus({
|
|
16
|
-
frame:
|
|
14
|
+
frame: sourceFrame,
|
|
17
15
|
status: propStatus,
|
|
18
16
|
});
|
|
19
17
|
if (typeof raw === 'number') {
|
|
20
18
|
return Math.round(raw * 100) / 100;
|
|
21
19
|
}
|
|
22
20
|
return raw;
|
|
23
|
-
}, [
|
|
21
|
+
}, [propStatus, sourceFrame]);
|
|
24
22
|
const fakeStatus = (0, react_1.useMemo)(() => ({
|
|
25
23
|
status: 'static',
|
|
26
24
|
codeValue: computedValue,
|
|
@@ -29,19 +27,19 @@ const TimelineKeyframedValue = ({ field, propStatus, keyframeDisplayOffset, drag
|
|
|
29
27
|
return remotion_1.Internals.getEffectiveVisualModeValue({
|
|
30
28
|
propStatus: fakeStatus,
|
|
31
29
|
dragOverrideValue,
|
|
32
|
-
frame:
|
|
30
|
+
frame: sourceFrame,
|
|
33
31
|
defaultValue: field.fieldSchema.default,
|
|
34
32
|
shouldResortToDefaultValueIfUndefined: true,
|
|
35
33
|
});
|
|
36
|
-
}, [dragOverrideValue, fakeStatus, field.fieldSchema.default,
|
|
34
|
+
}, [dragOverrideValue, fakeStatus, field.fieldSchema.default, sourceFrame]);
|
|
37
35
|
const onSaveIfChanged = (0, react_1.useCallback)((value) => {
|
|
38
|
-
const existingKeyframe = propStatus.keyframes.find((keyframe) => keyframe.frame ===
|
|
36
|
+
const existingKeyframe = propStatus.keyframes.find((keyframe) => keyframe.frame === sourceFrame);
|
|
39
37
|
if (valuesEqual(value, computedValue) ||
|
|
40
38
|
(existingKeyframe && valuesEqual(value, existingKeyframe.value))) {
|
|
41
39
|
return Promise.resolve();
|
|
42
40
|
}
|
|
43
|
-
return onSave(value,
|
|
44
|
-
}, [computedValue,
|
|
41
|
+
return onSave(value, sourceFrame);
|
|
42
|
+
}, [computedValue, onSave, propStatus.keyframes, sourceFrame]);
|
|
45
43
|
if (computedValue === null) {
|
|
46
44
|
return null;
|
|
47
45
|
}
|
|
@@ -4,6 +4,7 @@ exports.TimelineNumberField = void 0;
|
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const InputDragger_1 = require("../NewComposition/InputDragger");
|
|
7
|
+
const timeline_field_display_utils_1 = require("./timeline-field-display-utils");
|
|
7
8
|
const timeline_field_utils_1 = require("./timeline-field-utils");
|
|
8
9
|
const TimelineNumberField = ({ field, effectiveValue, onSave, onDragValueChange, onDragEnd, propStatus, }) => {
|
|
9
10
|
var _a, _b;
|
|
@@ -35,19 +36,12 @@ const TimelineNumberField = ({ field, effectiveValue, onSave, onDragValueChange,
|
|
|
35
36
|
}, [onSave, propStatus]);
|
|
36
37
|
const configuredStep = field.fieldSchema.type === 'number' ? field.fieldSchema.step : undefined;
|
|
37
38
|
const step = configuredStep !== null && configuredStep !== void 0 ? configuredStep : 1;
|
|
38
|
-
const stepDecimals = (0, react_1.useMemo)(() => configuredStep === undefined ? null : (0, timeline_field_utils_1.getDecimalPlaces)(configuredStep), [configuredStep]);
|
|
39
39
|
const formatter = (0, react_1.useCallback)((v) => {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
return digits === 0 ? String(num) : num.toFixed(digits);
|
|
44
|
-
}
|
|
45
|
-
return (0, timeline_field_utils_1.formatTimelineNumber)({
|
|
46
|
-
decimalPlaces: stepDecimals,
|
|
47
|
-
fixed: true,
|
|
48
|
-
value: num,
|
|
40
|
+
return (0, timeline_field_display_utils_1.formatTimelineFieldValueForDisplay)({
|
|
41
|
+
fieldSchema: field.fieldSchema,
|
|
42
|
+
value: v,
|
|
49
43
|
});
|
|
50
|
-
}, [
|
|
44
|
+
}, [field.fieldSchema]);
|
|
51
45
|
return (jsx_runtime_1.jsx(InputDragger_1.InputDragger, { type: "number", value: dragValue !== null && dragValue !== void 0 ? dragValue : effectiveValue, style: timeline_field_utils_1.draggerStyle, status: "ok", small: true, onValueChange: onValueChange, onValueChangeEnd: onValueChangeEnd, onTextChange: onTextChange, min: field.fieldSchema.type === 'number'
|
|
52
46
|
? ((_a = field.fieldSchema.min) !== null && _a !== void 0 ? _a : -Infinity)
|
|
53
47
|
: -Infinity, max: field.fieldSchema.type === 'number'
|
|
@@ -4,6 +4,7 @@ exports.TimelineRotationField = void 0;
|
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const InputDragger_1 = require("../NewComposition/InputDragger");
|
|
7
|
+
const timeline_field_display_utils_1 = require("./timeline-field-display-utils");
|
|
7
8
|
const timeline_field_utils_1 = require("./timeline-field-utils");
|
|
8
9
|
const timeline_rotation_utils_1 = require("./timeline-rotation-utils");
|
|
9
10
|
const TimelineRotationField = ({ field, effectiveValue, propStatus, onSave, onDragValueChange, onDragEnd, }) => {
|
|
@@ -66,13 +67,11 @@ const TimelineRotationField = ({ field, effectiveValue, propStatus, onSave, onDr
|
|
|
66
67
|
}
|
|
67
68
|
}, [propStatus, onSave, serializeValue]);
|
|
68
69
|
const formatter = (0, react_1.useCallback)((v) => {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
value: (0, timeline_field_utils_1.normalizeTimelineNumber)(Number(v)),
|
|
70
|
+
return (0, timeline_field_display_utils_1.formatTimelineFieldValueForDisplay)({
|
|
71
|
+
fieldSchema: field.fieldSchema,
|
|
72
|
+
value: v,
|
|
73
73
|
});
|
|
74
|
-
|
|
75
|
-
}, [decimalPlaces]);
|
|
74
|
+
}, [field.fieldSchema]);
|
|
76
75
|
return (jsx_runtime_1.jsx(InputDragger_1.InputDragger, { type: "number", value: dragValue !== null && dragValue !== void 0 ? dragValue : degrees, style: timeline_field_utils_1.draggerStyle, status: "ok", small: true, onValueChange: onValueChange, onValueChangeEnd: onValueChangeEnd, onTextChange: onTextChange, min: min, max: max, step: step, formatter: formatter, rightAlign: false }));
|
|
77
76
|
};
|
|
78
77
|
exports.TimelineRotationField = TimelineRotationField;
|
|
@@ -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;
|
|
@@ -7,6 +7,7 @@ const no_react_1 = require("remotion/no-react");
|
|
|
7
7
|
const colors_1 = require("../../helpers/colors");
|
|
8
8
|
const scale_lock_1 = require("../../state/scale-lock");
|
|
9
9
|
const InputDragger_1 = require("../NewComposition/InputDragger");
|
|
10
|
+
const timeline_field_display_utils_1 = require("./timeline-field-display-utils");
|
|
10
11
|
const timeline_field_utils_1 = require("./timeline-field-utils");
|
|
11
12
|
const TimelineLayerEye_1 = require("./TimelineLayerEye");
|
|
12
13
|
const leftDraggerStyle = {
|
|
@@ -98,17 +99,12 @@ const TimelineScaleField = ({ field, propStatus, effectiveValue, onSave, onDragV
|
|
|
98
99
|
const max = field.fieldSchema.type === 'scale'
|
|
99
100
|
? ((_b = field.fieldSchema.max) !== null && _b !== void 0 ? _b : Infinity)
|
|
100
101
|
: Infinity;
|
|
101
|
-
const decimalPlaces = (0, react_1.useMemo)(() => (0, timeline_field_utils_1.getTimelineDisplayDecimalPlaces)({
|
|
102
|
-
defaultDecimalPlaces: 3,
|
|
103
|
-
step: configuredStep,
|
|
104
|
-
}), [configuredStep]);
|
|
105
102
|
const formatter = (0, react_1.useCallback)((v) => {
|
|
106
|
-
return (0,
|
|
107
|
-
|
|
108
|
-
fixed: true,
|
|
103
|
+
return (0, timeline_field_display_utils_1.formatTimelineFieldValueForDisplay)({
|
|
104
|
+
fieldSchema: field.fieldSchema,
|
|
109
105
|
value: v,
|
|
110
106
|
});
|
|
111
|
-
}, [
|
|
107
|
+
}, [field.fieldSchema]);
|
|
112
108
|
const getDragStart = (0, react_1.useCallback)(() => {
|
|
113
109
|
if (dragStartRef.current === null) {
|
|
114
110
|
dragStartRef.current = [dragX !== null && dragX !== void 0 ? dragX : codeX, dragY !== null && dragY !== void 0 ? dragY : codeY];
|
|
@@ -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";
|
|
@@ -64,6 +66,7 @@ export type TimelineSelectionState = {
|
|
|
64
66
|
readonly selectedItems: readonly TimelineSelection[];
|
|
65
67
|
readonly anchor: TimelineSelection | null;
|
|
66
68
|
};
|
|
69
|
+
export declare const EMPTY_TIMELINE_SELECTION_STATE: TimelineSelectionState;
|
|
67
70
|
export type TimelineMarqueeRect = {
|
|
68
71
|
readonly left: number;
|
|
69
72
|
readonly top: number;
|
|
@@ -81,6 +84,11 @@ export declare const getTimelineSelectionAfterInteraction: ({ currentState, clic
|
|
|
81
84
|
readonly interaction: TimelineSelectionInteraction;
|
|
82
85
|
readonly allSelectableItems: readonly TimelineSelection[];
|
|
83
86
|
}) => TimelineSelectionState;
|
|
87
|
+
export declare const getAvailableTimelineSelectionState: ({ availableKeys, availableItemsByKey, state, }: {
|
|
88
|
+
readonly availableKeys: ReadonlySet<string>;
|
|
89
|
+
readonly availableItemsByKey?: ReadonlyMap<string, TimelineSelection> | undefined;
|
|
90
|
+
readonly state: TimelineSelectionState;
|
|
91
|
+
}) => TimelineSelectionState;
|
|
84
92
|
export declare const getNormalizedTimelineMarqueeRect: ({ startX, startY, currentX, currentY, }: {
|
|
85
93
|
readonly startX: number;
|
|
86
94
|
readonly startY: number;
|
|
@@ -108,10 +116,10 @@ type TimelineSelectionContextValue = {
|
|
|
108
116
|
readonly canSelect: boolean;
|
|
109
117
|
readonly selectedItems: readonly TimelineSelection[];
|
|
110
118
|
readonly isSelected: (item: TimelineSelection) => boolean;
|
|
111
|
-
readonly selectItem: (item: TimelineSelection, interaction?: TimelineSelectionInteraction) => void;
|
|
119
|
+
readonly selectItem: (item: TimelineSelection, interaction?: TimelineSelectionInteraction, allSelectableItems?: readonly TimelineSelection[]) => void;
|
|
112
120
|
readonly selectItems: (items: readonly TimelineSelection[]) => void;
|
|
113
|
-
readonly registerSelectableItem: (item: TimelineSelection) => () => void;
|
|
114
121
|
readonly registerMarqueeSelectableItem: (item: TimelineSelection, getRect: () => DOMRect | null) => () => void;
|
|
122
|
+
readonly registerFocusableItem: (item: TimelineSelection, getRect: () => DOMRect | null) => () => void;
|
|
115
123
|
readonly getMarqueeSelection: (marqueeRect: TimelineMarqueeRect, lockedSelectionKind: TimelineMarqueeSelectionKind | null) => {
|
|
116
124
|
readonly lockedSelectionKind: TimelineMarqueeSelectionKind | null;
|
|
117
125
|
readonly selectedItems: readonly TimelineSelection[];
|
|
@@ -119,13 +127,30 @@ type TimelineSelectionContextValue = {
|
|
|
119
127
|
readonly containsSelection: (nodePathInfo: SequenceNodePathInfo) => boolean;
|
|
120
128
|
readonly clearSelection: () => void;
|
|
121
129
|
};
|
|
130
|
+
export declare const TimelineSelectionOrderProvider: React.FC<{
|
|
131
|
+
readonly children: React.ReactNode;
|
|
132
|
+
readonly items: readonly TimelineSelection[];
|
|
133
|
+
}>;
|
|
122
134
|
export declare const getTimelineSelectionFromNodePathInfo: (nodePathInfo: SequenceNodePathInfo | null) => TimelineSelection | null;
|
|
123
135
|
export declare const getTimelineSelectionKey: (item: TimelineSelection) => string;
|
|
124
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[];
|
|
125
146
|
export declare const getTimelineSequenceSelectionKey: (nodePathInfo: SequenceNodePathInfo) => string;
|
|
126
147
|
export declare const TimelineSelectAllKeybindings: React.FC<{
|
|
127
148
|
readonly timeline: readonly TrackWithHash[];
|
|
128
149
|
}>;
|
|
150
|
+
export declare const TimelineSelectableItemsProvider: React.FC<{
|
|
151
|
+
readonly children: React.ReactNode;
|
|
152
|
+
readonly timeline: readonly TrackWithHash[];
|
|
153
|
+
}>;
|
|
129
154
|
export declare const TimelineSelectionProvider: React.FC<{
|
|
130
155
|
readonly children: React.ReactNode;
|
|
131
156
|
}>;
|
|
@@ -138,6 +163,7 @@ export declare const useTimelineMarqueeSelection: () => {
|
|
|
138
163
|
onPointerDownCapture: (event: React.PointerEvent<HTMLDivElement>) => void;
|
|
139
164
|
};
|
|
140
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;
|
|
141
167
|
export declare const useTimelineRowSelection: (nodePathInfo: SequenceNodePathInfo | null) => {
|
|
142
168
|
onSelect: (interaction?: TimelineSelectionInteraction | undefined) => void;
|
|
143
169
|
selectable: boolean;
|