@remotion/studio 4.0.473 → 4.0.475
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/AssetSelectorItem.js +30 -6
- package/dist/components/Canvas.js +77 -0
- package/dist/components/ColorPicker/ColorPicker.js +4 -31
- package/dist/components/CompositionSelectorItem.js +4 -4
- package/dist/components/Editor.js +4 -1
- package/dist/components/Modals.js +2 -2
- package/dist/components/NewComposition/ComboBox.js +1 -0
- package/dist/components/NewComposition/InputDragger.d.ts +1 -0
- package/dist/components/NewComposition/InputDragger.js +9 -6
- package/dist/components/PreviewToolbar.js +2 -2
- package/dist/components/SelectedOutlineOverlay.d.ts +61 -33
- package/dist/components/SelectedOutlineOverlay.js +813 -351
- package/dist/components/SelectedOutlineUvControls.d.ts +17 -0
- package/dist/components/SelectedOutlineUvControls.js +167 -0
- package/dist/components/StudioCanvasCapture.d.ts +5 -0
- package/dist/components/StudioCanvasCapture.js +40 -0
- package/dist/components/Timeline/EasingEditorModal.d.ts +11 -0
- package/dist/components/Timeline/EasingEditorModal.js +247 -0
- package/dist/components/Timeline/KeyframeSettingsModal.js +5 -4
- package/dist/components/Timeline/SequencePropsObserver.js +3 -3
- package/dist/components/Timeline/Timeline.js +10 -7
- package/dist/components/Timeline/TimelineClipboardKeybindings.d.ts +7 -7
- package/dist/components/Timeline/TimelineClipboardKeybindings.js +19 -16
- package/dist/components/Timeline/TimelineDeleteKeybindings.js +71 -40
- package/dist/components/Timeline/TimelineDragHandler.js +2 -2
- package/dist/components/Timeline/TimelineEffectItem.js +8 -9
- package/dist/components/Timeline/TimelineEffectPropItem.js +18 -18
- package/dist/components/Timeline/TimelineExpandedKeyframeRow.d.ts +1 -0
- package/dist/components/Timeline/TimelineExpandedKeyframeRow.js +7 -2
- package/dist/components/Timeline/TimelineExpandedSection.js +5 -5
- package/dist/components/Timeline/TimelineExpandedTrackKeyframes.js +1 -1
- package/dist/components/Timeline/TimelineHeightContainer.js +2 -0
- package/dist/components/Timeline/TimelineItemStack.js +3 -56
- package/dist/components/Timeline/TimelineKeyframeControls.d.ts +7 -0
- package/dist/components/Timeline/TimelineKeyframeControls.js +265 -68
- package/dist/components/Timeline/TimelineKeyframeDiamond.js +4 -3
- package/dist/components/Timeline/TimelineKeyframeEasingLine.d.ts +9 -0
- package/dist/components/Timeline/TimelineKeyframeEasingLine.js +245 -0
- package/dist/components/Timeline/TimelineKeyframeTracksContext.d.ts +7 -0
- package/dist/components/Timeline/TimelineKeyframeTracksContext.js +17 -0
- package/dist/components/Timeline/TimelineKeyframedValue.js +1 -1
- package/dist/components/Timeline/TimelineMediaInfo.js +4 -24
- package/dist/components/Timeline/TimelineNumberField.js +15 -7
- package/dist/components/Timeline/TimelinePrimitiveFieldValue.js +4 -0
- package/dist/components/Timeline/TimelineRotationField.js +22 -34
- package/dist/components/Timeline/TimelineScaleField.js +16 -12
- package/dist/components/Timeline/TimelineScrollable.js +19 -3
- package/dist/components/Timeline/TimelineSelection.d.ts +82 -3
- package/dist/components/Timeline/TimelineSelection.js +312 -30
- package/dist/components/Timeline/TimelineSequence.js +23 -15
- package/dist/components/Timeline/TimelineSequenceItem.js +48 -73
- package/dist/components/Timeline/TimelineSequenceName.js +3 -17
- package/dist/components/Timeline/TimelineSequencePropItem.js +37 -37
- package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.d.ts +5 -5
- package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +46 -44
- package/dist/components/Timeline/TimelineTimeIndicators.js +4 -2
- package/dist/components/Timeline/TimelineTransformOriginField.d.ts +11 -0
- package/dist/components/Timeline/TimelineTransformOriginField.js +138 -0
- package/dist/components/Timeline/TimelineTranslateField.js +24 -19
- package/dist/components/Timeline/TimelineUvCoordinateField.js +18 -12
- package/dist/components/Timeline/{apply-effect-response-to-code-values.d.ts → apply-effect-response-to-prop-statuses.d.ts} +1 -1
- package/dist/components/Timeline/{apply-effect-response-to-code-values.js → apply-effect-response-to-prop-statuses.js} +3 -3
- package/dist/components/Timeline/call-add-keyframe.d.ts +22 -5
- package/dist/components/Timeline/call-add-keyframe.js +71 -7
- package/dist/components/Timeline/call-delete-keyframe.d.ts +7 -7
- package/dist/components/Timeline/call-delete-keyframe.js +7 -7
- package/dist/components/Timeline/call-move-keyframe.d.ts +3 -3
- package/dist/components/Timeline/call-move-keyframe.js +3 -3
- package/dist/components/Timeline/call-update-keyframe-settings.d.ts +5 -5
- package/dist/components/Timeline/call-update-keyframe-settings.js +6 -6
- package/dist/components/Timeline/delete-selected-keyframe.d.ts +5 -5
- package/dist/components/Timeline/delete-selected-keyframe.js +5 -5
- package/dist/components/Timeline/delete-selected-timeline-item.d.ts +5 -5
- package/dist/components/Timeline/delete-selected-timeline-item.js +28 -16
- package/dist/components/Timeline/get-node-keyframes.d.ts +3 -3
- package/dist/components/Timeline/get-node-keyframes.js +4 -4
- package/dist/components/Timeline/get-timeline-easing-segments.d.ts +9 -0
- package/dist/components/Timeline/get-timeline-easing-segments.js +19 -0
- package/dist/components/Timeline/reset-selected-timeline-props.d.ts +7 -7
- package/dist/components/Timeline/reset-selected-timeline-props.js +23 -15
- package/dist/components/Timeline/save-effect-prop.d.ts +2 -2
- package/dist/components/Timeline/save-effect-prop.js +5 -5
- package/dist/components/Timeline/save-prop-queue.d.ts +3 -3
- package/dist/components/Timeline/save-prop-queue.js +3 -3
- package/dist/components/Timeline/save-sequence-prop.d.ts +3 -3
- package/dist/components/Timeline/save-sequence-prop.js +4 -4
- package/dist/components/Timeline/timeline-field-utils.d.ts +10 -0
- package/dist/components/Timeline/timeline-field-utils.js +26 -5
- package/dist/components/Timeline/timeline-rotation-utils.d.ts +2 -0
- package/dist/components/Timeline/timeline-rotation-utils.js +32 -0
- package/dist/components/Timeline/timeline-translate-utils.d.ts +1 -1
- package/dist/components/Timeline/timeline-translate-utils.js +4 -5
- package/dist/components/Timeline/transform-origin-utils.d.ts +24 -0
- package/dist/components/Timeline/transform-origin-utils.js +170 -0
- package/dist/components/Timeline/update-selected-easing.d.ts +35 -0
- package/dist/components/Timeline/update-selected-easing.js +133 -0
- package/dist/components/Timeline/use-expanded-track-keyframe-rows.d.ts +1 -0
- package/dist/components/Timeline/use-expanded-track-keyframe-rows.js +35 -7
- package/dist/components/Timeline/use-sequence-props-subscription.js +3 -3
- package/dist/components/Timeline/use-timeline-height.js +3 -3
- package/dist/components/Timeline/use-timeline-keyframe-drag.js +13 -11
- package/dist/components/canvas-capture-enabled.d.ts +1 -0
- package/dist/components/canvas-capture-enabled.js +4 -0
- package/dist/components/effect-drag-and-drop.d.ts +11 -0
- package/dist/components/effect-drag-and-drop.js +73 -0
- package/dist/components/import-assets.d.ts +15 -0
- package/dist/components/import-assets.js +63 -1
- package/dist/components/selected-outline-geometry.d.ts +20 -0
- package/dist/components/selected-outline-geometry.js +18 -0
- package/dist/components/selected-outline-uv.d.ts +46 -0
- package/dist/components/selected-outline-uv.js +240 -0
- package/dist/esm/{chunk-q0jkt0zq.js → chunk-qaqqvw4q.js} +8096 -5307
- package/dist/esm/internals.mjs +8096 -5307
- package/dist/esm/previewEntry.mjs +8106 -5317
- package/dist/esm/renderEntry.mjs +1 -1
- package/dist/helpers/colors.d.ts +0 -1
- package/dist/helpers/colors.js +1 -2
- package/dist/helpers/timeline-layout.d.ts +6 -6
- package/dist/helpers/timeline-layout.js +5 -5
- package/dist/state/modals.d.ts +2 -4
- package/package.json +11 -10
- package/dist/components/NewComposition/DeleteStaticFile.d.ts +0 -4
- package/dist/components/NewComposition/DeleteStaticFile.js +0 -44
|
@@ -62,19 +62,28 @@ const TimelineSequenceFn = ({ s, nodePathInfo, sequenceFrameOffset }) => {
|
|
|
62
62
|
};
|
|
63
63
|
const TimelineSequenceCurrentFrame = ({ s, displayDurationInFrames, premountWidth, postmountWidth, style, children, nodePathInfo, sequenceFrameOffset, fromCanUpdate, onMoveDragPointerDown, }) => {
|
|
64
64
|
var _a, _b;
|
|
65
|
-
const
|
|
65
|
+
const ref = (0, react_1.useRef)(null);
|
|
66
|
+
const { onSelect, selectable, selected, selectionItem } = (0, TimelineSelection_1.useTimelineRowSelection)(nodePathInfo);
|
|
67
|
+
(0, TimelineSelection_1.useTimelineMarqueeSelectableItem)(selectionItem, ref);
|
|
66
68
|
const onPointerDown = (0, react_1.useCallback)((e) => {
|
|
67
69
|
if (e.button === 0) {
|
|
68
70
|
e.stopPropagation();
|
|
69
|
-
|
|
71
|
+
if ((0, TimelineSelection_1.shouldSelectTimelineRowOnPointerDown)({
|
|
72
|
+
selected,
|
|
70
73
|
shiftKey: e.shiftKey,
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
+
metaKey: e.metaKey,
|
|
75
|
+
ctrlKey: e.ctrlKey,
|
|
76
|
+
})) {
|
|
77
|
+
onSelect({
|
|
78
|
+
shiftKey: e.shiftKey,
|
|
79
|
+
toggleKey: e.metaKey || e.ctrlKey,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
if (fromCanUpdate) {
|
|
74
83
|
onMoveDragPointerDown(e);
|
|
75
84
|
}
|
|
76
85
|
}
|
|
77
|
-
}, [fromCanUpdate, onMoveDragPointerDown, onSelect]);
|
|
86
|
+
}, [fromCanUpdate, onMoveDragPointerDown, onSelect, selected]);
|
|
78
87
|
const frame = (0, remotion_1.useCurrentFrame)();
|
|
79
88
|
const relativeFrame = frame - s.from;
|
|
80
89
|
const sequenceFrame = relativeFrame + sequenceFrameOffset;
|
|
@@ -94,7 +103,7 @@ const TimelineSequenceCurrentFrame = ({ s, displayDurationInFrames, premountWidt
|
|
|
94
103
|
opacity: isInRange ? 1 : 0.5,
|
|
95
104
|
};
|
|
96
105
|
}, [isInRange, style]);
|
|
97
|
-
return (jsx_runtime_1.jsxs("div", { style: actualStyle, title: s.displayName, onPointerDown: selectable ? onPointerDown : undefined, children: [premountWidth ? (jsx_runtime_1.jsx("div", { style: {
|
|
106
|
+
return (jsx_runtime_1.jsxs("div", { ref: ref, [TimelineSelection_1.TIMELINE_MARQUEE_ITEM_ATTR]: true, style: actualStyle, title: s.displayName, onPointerDown: selectable ? onPointerDown : undefined, children: [premountWidth ? (jsx_runtime_1.jsx("div", { style: {
|
|
98
107
|
width: premountWidth,
|
|
99
108
|
height: '100%',
|
|
100
109
|
background: `repeating-linear-gradient(
|
|
@@ -151,15 +160,15 @@ const TimelineSequenceInner = ({ s, windowWidth, nodePathInfo, sequenceFrameOffs
|
|
|
151
160
|
column: (_a = originalLocation.column) !== null && _a !== void 0 ? _a : 0,
|
|
152
161
|
};
|
|
153
162
|
}, [originalLocation]);
|
|
154
|
-
const {
|
|
163
|
+
const { propStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModePropStatusesContext);
|
|
155
164
|
const nodePath = (_d = nodePathInfo === null || nodePathInfo === void 0 ? void 0 : nodePathInfo.sequenceSubscriptionKey) !== null && _d !== void 0 ? _d : null;
|
|
156
|
-
const
|
|
165
|
+
const propStatusesForOverride = (0, react_1.useMemo)(() => {
|
|
157
166
|
return nodePath
|
|
158
|
-
? remotion_1.Internals.
|
|
167
|
+
? remotion_1.Internals.getPropStatusesCtx(propStatuses, nodePath)
|
|
159
168
|
: undefined;
|
|
160
|
-
}, [
|
|
161
|
-
const durationCanUpdate = Boolean(((_a =
|
|
162
|
-
const fromCanUpdate = Boolean(((_b =
|
|
169
|
+
}, [propStatuses, nodePath]);
|
|
170
|
+
const durationCanUpdate = Boolean(((_a = propStatusesForOverride === null || propStatusesForOverride === void 0 ? void 0 : propStatusesForOverride.durationInFrames) === null || _a === void 0 ? void 0 : _a.status) === 'static');
|
|
171
|
+
const fromCanUpdate = Boolean(((_b = propStatusesForOverride === null || propStatusesForOverride === void 0 ? void 0 : propStatusesForOverride.from) === null || _b === void 0 ? void 0 : _b.status) === 'static');
|
|
163
172
|
const { onPointerDown: onMoveDragPointerDown } = (0, TimelineSequenceRightEdgeDragHandle_1.useTimelineSequenceFromDrag)({
|
|
164
173
|
nodePathInfo,
|
|
165
174
|
windowWidth,
|
|
@@ -208,8 +217,7 @@ const TimelineSequenceInner = ({ s, windowWidth, nodePathInfo, sequenceFrameOffs
|
|
|
208
217
|
overflow: 'hidden',
|
|
209
218
|
};
|
|
210
219
|
}, [marginLeft, s.type, width]);
|
|
211
|
-
const showRightEdgeDragHandle =
|
|
212
|
-
(s.type === 'sequence' || s.type === 'image') &&
|
|
220
|
+
const showRightEdgeDragHandle = (s.type === 'sequence' || s.type === 'image') &&
|
|
213
221
|
!s.loopDisplay &&
|
|
214
222
|
!s.isInsideSeries &&
|
|
215
223
|
nodePath !== null &&
|
|
@@ -2,18 +2,18 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TimelineSequenceItem = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
-
const studio_shared_1 = require("@remotion/studio-shared");
|
|
6
5
|
const react_1 = require("react");
|
|
7
6
|
const remotion_1 = require("remotion");
|
|
8
7
|
const no_react_1 = require("remotion/no-react");
|
|
9
8
|
const client_id_1 = require("../../helpers/client-id");
|
|
10
9
|
const format_file_location_1 = require("../../helpers/format-file-location");
|
|
11
|
-
const install_required_package_1 = require("../../helpers/install-required-package");
|
|
12
10
|
const timeline_layout_1 = require("../../helpers/timeline-layout");
|
|
13
11
|
const call_api_1 = require("../call-api");
|
|
14
12
|
const ConfirmationDialog_1 = require("../ConfirmationDialog");
|
|
15
13
|
const ContextMenu_1 = require("../ContextMenu");
|
|
14
|
+
const effect_drag_and_drop_1 = require("../effect-drag-and-drop");
|
|
16
15
|
const ExpandedTracksProvider_1 = require("../ExpandedTracksProvider");
|
|
16
|
+
const layout_1 = require("../layout");
|
|
17
17
|
const NotificationCenter_1 = require("../Notifications/NotificationCenter");
|
|
18
18
|
const use_select_asset_1 = require("../use-select-asset");
|
|
19
19
|
const duplicate_selected_timeline_item_1 = require("./duplicate-selected-timeline-item");
|
|
@@ -34,7 +34,6 @@ const labelContainerStyle = {
|
|
|
34
34
|
display: 'flex',
|
|
35
35
|
flexDirection: 'row',
|
|
36
36
|
minWidth: 0,
|
|
37
|
-
gap: 4,
|
|
38
37
|
};
|
|
39
38
|
const effectDropHighlight = {
|
|
40
39
|
backgroundColor: 'rgba(0, 155, 255, 0.16)',
|
|
@@ -73,6 +72,9 @@ const sequenceReorderRejectionStyle = {
|
|
|
73
72
|
const hasSequenceReorderDragType = (dataTransfer) => {
|
|
74
73
|
return Array.from(dataTransfer.types).includes(SEQUENCE_REORDER_MIME_TYPE);
|
|
75
74
|
};
|
|
75
|
+
const isSequenceReorderDrag = (dataTransfer) => {
|
|
76
|
+
return (currentSequenceDrag !== null || hasSequenceReorderDragType(dataTransfer));
|
|
77
|
+
};
|
|
76
78
|
const getSequenceReorderDragData = (dataTransfer) => {
|
|
77
79
|
if (currentSequenceDrag) {
|
|
78
80
|
return currentSequenceDrag;
|
|
@@ -100,28 +102,6 @@ const getSequenceReorderDragData = (dataTransfer) => {
|
|
|
100
102
|
const getDestinationIndex = ({ fromIndex, insertionIndex, }) => {
|
|
101
103
|
return insertionIndex > fromIndex ? insertionIndex - 1 : insertionIndex;
|
|
102
104
|
};
|
|
103
|
-
const hasEffectDragType = (dataTransfer) => {
|
|
104
|
-
return Array.from(dataTransfer.types).some((type) => type === studio_shared_1.EFFECT_DRAG_MIME_TYPE ||
|
|
105
|
-
type === 'application/json' ||
|
|
106
|
-
type === 'text/plain');
|
|
107
|
-
};
|
|
108
|
-
const getEffectDragData = (dataTransfer) => {
|
|
109
|
-
for (const type of [
|
|
110
|
-
studio_shared_1.EFFECT_DRAG_MIME_TYPE,
|
|
111
|
-
'application/json',
|
|
112
|
-
'text/plain',
|
|
113
|
-
]) {
|
|
114
|
-
const value = dataTransfer.getData(type);
|
|
115
|
-
if (!value) {
|
|
116
|
-
continue;
|
|
117
|
-
}
|
|
118
|
-
const parsed = (0, studio_shared_1.parseEffectDragData)(value);
|
|
119
|
-
if (parsed) {
|
|
120
|
-
return parsed;
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
return null;
|
|
124
|
-
};
|
|
125
105
|
const TimelineSequenceItem = ({ nestedDepth, sequence, nodePathInfo, keyframeDisplayOffset, trackIndex, }) => {
|
|
126
106
|
var _a, _b;
|
|
127
107
|
var _c, _d;
|
|
@@ -130,8 +110,8 @@ const TimelineSequenceItem = ({ nestedDepth, sequence, nodePathInfo, keyframeDis
|
|
|
130
110
|
const previewConnected = previewServerState.type === 'connected';
|
|
131
111
|
const { getIsExpanded } = (0, react_1.useContext)(ExpandedTracksProvider_1.ExpandedTracksGetterContext);
|
|
132
112
|
const { toggleTrack } = (0, react_1.useContext)(ExpandedTracksProvider_1.ExpandedTracksSetterContext);
|
|
133
|
-
const {
|
|
134
|
-
const {
|
|
113
|
+
const { propStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModePropStatusesContext);
|
|
114
|
+
const { setPropStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModeSettersContext);
|
|
135
115
|
const selectAsset = (0, use_select_asset_1.useSelectAsset)();
|
|
136
116
|
const { onSelect, selectable, selected } = (0, TimelineSelection_1.useTimelineRowSelection)(nodePathInfo);
|
|
137
117
|
const containsSelection = (0, TimelineSelection_1.useTimelineRowContainsSelection)(nodePathInfo);
|
|
@@ -159,11 +139,10 @@ const TimelineSequenceItem = ({ nestedDepth, sequence, nodePathInfo, keyframeDis
|
|
|
159
139
|
const canDeleteFromSource = Boolean(nodePath && (validatedLocation === null || validatedLocation === void 0 ? void 0 : validatedLocation.source));
|
|
160
140
|
const nodePathKey = (0, react_1.useMemo)(() => nodePath ? remotion_1.Internals.makeSequencePropsSubscriptionKey(nodePath) : null, [nodePath]);
|
|
161
141
|
const parentId = (_d = sequence.parent) !== null && _d !== void 0 ? _d : null;
|
|
162
|
-
const canReorderSequence =
|
|
163
|
-
previewConnected &&
|
|
142
|
+
const canReorderSequence = previewConnected &&
|
|
164
143
|
Boolean(nodePath && nodePathKey && (validatedLocation === null || validatedLocation === void 0 ? void 0 : validatedLocation.source)) &&
|
|
165
144
|
(nodePathInfo === null || nodePathInfo === void 0 ? void 0 : nodePathInfo.numberOfSequencesWithThisNodePath) === 1;
|
|
166
|
-
const canHandleSequenceDrag =
|
|
145
|
+
const canHandleSequenceDrag = previewConnected;
|
|
167
146
|
const confirm = (0, ConfirmationDialog_1.useConfirmationDialog)();
|
|
168
147
|
const deleteDisabled = (0, react_1.useMemo)(() => !previewConnected || !sequence.controls || !canDeleteFromSource, [previewConnected, sequence.controls, canDeleteFromSource]);
|
|
169
148
|
const duplicateDisabled = deleteDisabled;
|
|
@@ -516,7 +495,7 @@ const TimelineSequenceItem = ({ nestedDepth, sequence, nodePathInfo, keyframeDis
|
|
|
516
495
|
toggleTrack(nodePathInfo);
|
|
517
496
|
}, [nodePathInfo, toggleTrack]);
|
|
518
497
|
const onShowInEditorDoubleClick = (0, react_1.useCallback)((e) => {
|
|
519
|
-
if (!
|
|
498
|
+
if (!canOpenInEditor) {
|
|
520
499
|
return;
|
|
521
500
|
}
|
|
522
501
|
if ((0, TimelineSelection_1.isTimelineSelectionModifierEvent)(e)) {
|
|
@@ -526,26 +505,26 @@ const TimelineSequenceItem = ({ nestedDepth, sequence, nodePathInfo, keyframeDis
|
|
|
526
505
|
e.stopPropagation();
|
|
527
506
|
openInEditor();
|
|
528
507
|
}, [canOpenInEditor, openInEditor]);
|
|
529
|
-
const
|
|
508
|
+
const propStatusesForOverride = (0, react_1.useMemo)(() => {
|
|
530
509
|
return nodePath
|
|
531
|
-
? remotion_1.Internals.
|
|
510
|
+
? remotion_1.Internals.getPropStatusesCtx(propStatuses, nodePath)
|
|
532
511
|
: undefined;
|
|
533
|
-
}, [
|
|
534
|
-
const codeHiddenStatus =
|
|
512
|
+
}, [propStatuses, nodePath]);
|
|
513
|
+
const codeHiddenStatus = propStatusesForOverride === null || propStatusesForOverride === void 0 ? void 0 : propStatusesForOverride.hidden;
|
|
535
514
|
const isItemHidden = (0, react_1.useMemo)(() => {
|
|
536
515
|
var _a;
|
|
537
|
-
const
|
|
516
|
+
const propStatus = codeHiddenStatus && codeHiddenStatus.status === 'static'
|
|
538
517
|
? codeHiddenStatus.codeValue
|
|
539
518
|
: undefined;
|
|
540
519
|
const runtimeValue = (_a = sequence.controls) === null || _a === void 0 ? void 0 : _a.currentRuntimeValueDotNotation.hidden;
|
|
541
|
-
const effective = (
|
|
520
|
+
const effective = (propStatus !== null && propStatus !== void 0 ? propStatus : runtimeValue);
|
|
542
521
|
return effective !== null && effective !== void 0 ? effective : false;
|
|
543
522
|
}, [codeHiddenStatus, (_a = sequence.controls) === null || _a === void 0 ? void 0 : _a.currentRuntimeValueDotNotation]);
|
|
544
523
|
const onToggleVisibility = (0, react_1.useCallback)((type) => {
|
|
545
524
|
if (!sequence.controls ||
|
|
546
525
|
!nodePath ||
|
|
547
526
|
!validatedLocation ||
|
|
548
|
-
!
|
|
527
|
+
!propStatusesForOverride ||
|
|
549
528
|
!codeHiddenStatus ||
|
|
550
529
|
codeHiddenStatus.status !== 'static' ||
|
|
551
530
|
previewServerState.type !== 'connected') {
|
|
@@ -568,18 +547,18 @@ const TimelineSequenceItem = ({ nestedDepth, sequence, nodePathInfo, keyframeDis
|
|
|
568
547
|
schema,
|
|
569
548
|
},
|
|
570
549
|
],
|
|
571
|
-
|
|
550
|
+
setPropStatuses,
|
|
572
551
|
clientId: previewServerState.clientId,
|
|
573
552
|
undoLabel: newValue ? 'Hide sequence' : 'Show sequence',
|
|
574
553
|
redoLabel: newValue ? 'Hide sequence again' : 'Show sequence again',
|
|
575
554
|
});
|
|
576
555
|
}, [
|
|
577
556
|
codeHiddenStatus,
|
|
578
|
-
|
|
557
|
+
propStatusesForOverride,
|
|
579
558
|
nodePath,
|
|
580
559
|
previewServerState,
|
|
581
560
|
sequence.controls,
|
|
582
|
-
|
|
561
|
+
setPropStatuses,
|
|
583
562
|
validatedLocation,
|
|
584
563
|
]);
|
|
585
564
|
const outerHeight = (0, react_1.useMemo)(() => (0, timeline_layout_1.getTimelineLayerHeight)(sequence.type) + timeline_layout_1.TIMELINE_ITEM_BORDER_BOTTOM, [sequence.type]);
|
|
@@ -623,7 +602,9 @@ const TimelineSequenceItem = ({ nestedDepth, sequence, nodePathInfo, keyframeDis
|
|
|
623
602
|
};
|
|
624
603
|
}, [sequenceDropIndicator]);
|
|
625
604
|
const onEffectDragOver = (0, react_1.useCallback)((e) => {
|
|
626
|
-
if (!canDropEffect ||
|
|
605
|
+
if (!canDropEffect ||
|
|
606
|
+
isSequenceReorderDrag(e.dataTransfer) ||
|
|
607
|
+
!(0, effect_drag_and_drop_1.hasEffectDragType)(e.dataTransfer)) {
|
|
627
608
|
return;
|
|
628
609
|
}
|
|
629
610
|
e.preventDefault();
|
|
@@ -640,43 +621,37 @@ const TimelineSequenceItem = ({ nestedDepth, sequence, nodePathInfo, keyframeDis
|
|
|
640
621
|
if (!canDropEffect ||
|
|
641
622
|
previewServerState.type !== 'connected' ||
|
|
642
623
|
nodePath === null ||
|
|
643
|
-
validatedLocation === null
|
|
624
|
+
validatedLocation === null ||
|
|
625
|
+
isSequenceReorderDrag(e.dataTransfer) ||
|
|
626
|
+
!(0, effect_drag_and_drop_1.hasEffectDragType)(e.dataTransfer)) {
|
|
644
627
|
return;
|
|
645
628
|
}
|
|
646
|
-
e.
|
|
647
|
-
e.stopPropagation();
|
|
648
|
-
setEffectDropHovered(false);
|
|
649
|
-
const dragData = getEffectDragData(e.dataTransfer);
|
|
629
|
+
const dragData = (0, effect_drag_and_drop_1.getEffectDragData)(e.dataTransfer);
|
|
650
630
|
if (!dragData) {
|
|
651
|
-
(0,
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
await (0, install_required_package_1.installRequiredPackages)(requiredPackage ? [requiredPackage] : []);
|
|
657
|
-
const result = await (0, call_api_1.callApi)('/api/add-effect', {
|
|
658
|
-
fileName: validatedLocation.source,
|
|
659
|
-
sequenceNodePath: nodePath,
|
|
660
|
-
effectName: dragData.effect.name,
|
|
661
|
-
effectImportPath: dragData.effect.importPath,
|
|
662
|
-
effectConfig: dragData.effect.config,
|
|
663
|
-
clientId: previewServerState.clientId,
|
|
664
|
-
});
|
|
665
|
-
if (result.success) {
|
|
666
|
-
(0, NotificationCenter_1.showNotification)(`Added ${dragData.effect.name}()`, 2000);
|
|
667
|
-
}
|
|
668
|
-
else {
|
|
669
|
-
(0, NotificationCenter_1.showNotification)(result.reason, 4000);
|
|
631
|
+
if ((0, effect_drag_and_drop_1.hasExplicitEffectDragType)(e.dataTransfer)) {
|
|
632
|
+
e.preventDefault();
|
|
633
|
+
e.stopPropagation();
|
|
634
|
+
setEffectDropHovered(false);
|
|
635
|
+
(0, NotificationCenter_1.showNotification)('Could not read effect drag data', 3000);
|
|
670
636
|
}
|
|
637
|
+
return;
|
|
671
638
|
}
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
639
|
+
e.preventDefault();
|
|
640
|
+
e.stopPropagation();
|
|
641
|
+
setEffectDropHovered(false);
|
|
642
|
+
await (0, effect_drag_and_drop_1.addEffectFromDragData)({
|
|
643
|
+
dragData,
|
|
644
|
+
fileName: validatedLocation.source,
|
|
645
|
+
nodePath,
|
|
646
|
+
clientId: previewServerState.clientId,
|
|
647
|
+
});
|
|
675
648
|
}, [canDropEffect, nodePath, previewServerState, validatedLocation]);
|
|
676
|
-
const trackRow = (jsx_runtime_1.jsx(TimelineRowChrome_1.TimelineRowChrome, { depth: nestedDepth, eye: canToggleVisibility ? (jsx_runtime_1.jsx(TimelineLayerEye_1.TimelineLayerEye, { type: sequence.type === 'audio' ? 'speaker' : 'eye', hidden: isItemHidden, onInvoked: onToggleVisibility })) : (jsx_runtime_1.jsx(TimelineLayerEye_1.TimelineLayerEyeSpacer, {})), arrow: hasExpandableContent ? (jsx_runtime_1.jsx(TimelineExpandArrowButton_1.TimelineExpandArrowButton, { isExpanded: isExpanded, onClick: onToggleExpand, label: "track properties", disabled: !previewConnected || nodePathInfo === null })) : (jsx_runtime_1.jsx(TimelineExpandArrowButton_1.TimelineExpandArrowSpacer, {})), style: rowStyle, selected: selected, selectable: selectable, onSelect: onSelect, showSelectedBackground: true, containsSelection: containsSelection, outerHeight: outerHeight, onDragLeave: canDropEffect ? onEffectDragLeave : undefined, onDragOver: canDropEffect ? onEffectDragOver : undefined, onDrop: canDropEffect ? onEffectDrop : undefined, onDoubleClick:
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
649
|
+
const trackRow = (jsx_runtime_1.jsx(TimelineRowChrome_1.TimelineRowChrome, { depth: nestedDepth, eye: canToggleVisibility ? (jsx_runtime_1.jsx(TimelineLayerEye_1.TimelineLayerEye, { type: sequence.type === 'audio' ? 'speaker' : 'eye', hidden: isItemHidden, onInvoked: onToggleVisibility })) : (jsx_runtime_1.jsx(TimelineLayerEye_1.TimelineLayerEyeSpacer, {})), arrow: hasExpandableContent ? (jsx_runtime_1.jsx(TimelineExpandArrowButton_1.TimelineExpandArrowButton, { isExpanded: isExpanded, onClick: onToggleExpand, label: "track properties", disabled: !previewConnected || nodePathInfo === null })) : (jsx_runtime_1.jsx(TimelineExpandArrowButton_1.TimelineExpandArrowSpacer, {})), style: rowStyle, selected: selected, selectable: selectable, onSelect: onSelect, showSelectedBackground: true, containsSelection: containsSelection, outerHeight: outerHeight, onDragLeave: canDropEffect ? onEffectDragLeave : undefined, onDragOver: canDropEffect ? onEffectDragOver : undefined, onDrop: canDropEffect ? onEffectDrop : undefined, onDoubleClick: canOpenInEditor ? onShowInEditorDoubleClick : undefined, children: jsx_runtime_1.jsxs("div", { style: labelContainerStyle, children: [
|
|
650
|
+
jsx_runtime_1.jsx(TimelineSequenceName_1.TimelineSequenceName, { sequence: sequence, selected: selected, containsSelection: containsSelection }), mediaSrc ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
651
|
+
jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.5 }),
|
|
652
|
+
" ",
|
|
653
|
+
jsx_runtime_1.jsx(TimelineMediaInfo_1.TimelineMediaInfo, { src: mediaSrc })
|
|
654
|
+
] })) : null, jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.5 }), jsx_runtime_1.jsx(TimelineItemStack_1.TimelineItemStack, { originalLocation: originalLocation })
|
|
680
655
|
] }) }));
|
|
681
656
|
const draggableTrackRow = canHandleSequenceDrag ? (jsx_runtime_1.jsxs("div", { draggable: canReorderSequence, onDragStart: onSequenceDragStart, onDragEnd: onSequenceDragEnd, onDragOver: onSequenceDragOver, onDragLeave: onSequenceDragLeave, onDrop: onSequenceDrop, style: sequenceReorderWrapper, children: [sequenceReorderLineStyle ? (jsx_runtime_1.jsx("div", { style: sequenceReorderLineStyle })) : null, sequenceDropRejection ? (jsx_runtime_1.jsx("div", { style: sequenceReorderRejectionStyle, children: sequenceDropRejection })) : null, trackRow] })) : (trackRow);
|
|
682
657
|
return (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [previewConnected ? (jsx_runtime_1.jsx(ContextMenu_1.ContextMenu, { values: contextMenuValues, onOpen: selectable ? onSelect : null, children: draggableTrackRow })) : (draggableTrackRow), previewConnected &&
|
|
@@ -12,19 +12,7 @@ const getTruncatedDisplayName = (displayName) => {
|
|
|
12
12
|
return displayName;
|
|
13
13
|
};
|
|
14
14
|
const TimelineSequenceName = ({ sequence, selected, containsSelection }) => {
|
|
15
|
-
const [hovered, setHovered] = (0, react_1.useState)(false);
|
|
16
|
-
const { documentationLink } = sequence;
|
|
17
|
-
const hoverable = !TimelineSelection_1.SELECTION_ENABLED && documentationLink !== null;
|
|
18
|
-
const onClick = (0, react_1.useCallback)(() => {
|
|
19
|
-
if (documentationLink === null) {
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
22
|
-
window.open(documentationLink, '_blank', 'noopener,noreferrer');
|
|
23
|
-
}, [documentationLink]);
|
|
24
|
-
const onPointerEnter = (0, react_1.useCallback)(() => setHovered(true), []);
|
|
25
|
-
const onPointerLeave = (0, react_1.useCallback)(() => setHovered(false), []);
|
|
26
15
|
const style = (0, react_1.useMemo)(() => {
|
|
27
|
-
const hoverEffect = hovered && hoverable;
|
|
28
16
|
return {
|
|
29
17
|
alignItems: 'center',
|
|
30
18
|
alignSelf: 'stretch',
|
|
@@ -33,18 +21,16 @@ const TimelineSequenceName = ({ sequence, selected, containsSelection }) => {
|
|
|
33
21
|
fontSize: 12,
|
|
34
22
|
whiteSpace: 'nowrap',
|
|
35
23
|
textOverflow: 'ellipsis',
|
|
36
|
-
overflow: 'hidden',
|
|
37
24
|
color: (0, TimelineSelection_1.getTimelineColor)(selected, false),
|
|
38
25
|
userSelect: 'none',
|
|
39
26
|
WebkitUserSelect: 'none',
|
|
40
|
-
textDecoration:
|
|
41
|
-
cursor: hoverEffect ? 'pointer' : undefined,
|
|
27
|
+
textDecoration: 'none',
|
|
42
28
|
boxShadow: containsSelection && !selected
|
|
43
29
|
? `inset 0 0 0 2px ${TimelineSelection_1.TIMELINE_SELECTED_LABEL_BACKGROUND}`
|
|
44
30
|
: undefined,
|
|
45
31
|
};
|
|
46
|
-
}, [
|
|
32
|
+
}, [selected, containsSelection]);
|
|
47
33
|
const text = getTruncatedDisplayName(sequence.displayName) || '<Sequence>';
|
|
48
|
-
return (jsx_runtime_1.jsx("div", {
|
|
34
|
+
return (jsx_runtime_1.jsx("div", { title: text, style: style, children: text }));
|
|
49
35
|
};
|
|
50
36
|
exports.TimelineSequenceName = TimelineSequenceName;
|
|
@@ -37,7 +37,7 @@ const isResettableStatus = ({ status, defaultValue, }) => {
|
|
|
37
37
|
const effectiveCodeValue = (_a = status.codeValue) !== null && _a !== void 0 ? _a : defaultValue;
|
|
38
38
|
return JSON.stringify(effectiveCodeValue) !== JSON.stringify(defaultValue);
|
|
39
39
|
};
|
|
40
|
-
const Value = ({ field, nodePath, validatedLocation, schema,
|
|
40
|
+
const Value = ({ field, nodePath, validatedLocation, schema, propStatus }) => {
|
|
41
41
|
const { getDragOverrides } = (0, react_1.useContext)(remotion_1.Internals.VisualModeDragOverridesContext);
|
|
42
42
|
const { setDragOverrides, clearDragOverrides } = (0, react_1.useContext)(remotion_1.Internals.VisualModeSettersContext);
|
|
43
43
|
const dragOverrideValue = (0, react_1.useMemo)(() => {
|
|
@@ -47,12 +47,12 @@ const Value = ({ field, nodePath, validatedLocation, schema, codeValue }) => {
|
|
|
47
47
|
: ((_a = getDragOverrides(nodePath)) !== null && _a !== void 0 ? _a : {})[field.key];
|
|
48
48
|
}, [getDragOverrides, nodePath, field.key]);
|
|
49
49
|
const effectiveValue = remotion_1.Internals.getEffectiveVisualModeValue({
|
|
50
|
-
|
|
50
|
+
propStatus,
|
|
51
51
|
dragOverrideValue,
|
|
52
52
|
defaultValue: field.fieldSchema.default,
|
|
53
53
|
shouldResortToDefaultValueIfUndefined: true,
|
|
54
54
|
});
|
|
55
|
-
const {
|
|
55
|
+
const { setPropStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModeSettersContext);
|
|
56
56
|
const { previewServerState } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx);
|
|
57
57
|
const clientId = previewServerState.type === 'connected'
|
|
58
58
|
? previewServerState.clientId
|
|
@@ -67,11 +67,11 @@ const Value = ({ field, nodePath, validatedLocation, schema, codeValue }) => {
|
|
|
67
67
|
: null;
|
|
68
68
|
const stringifiedValue = JSON.stringify(value);
|
|
69
69
|
const fieldLabel = (_a = field.description) !== null && _a !== void 0 ? _a : field.key;
|
|
70
|
-
if (value ===
|
|
70
|
+
if (value === propStatus.codeValue) {
|
|
71
71
|
return Promise.resolve();
|
|
72
72
|
}
|
|
73
73
|
if (defaultValue === stringifiedValue &&
|
|
74
|
-
|
|
74
|
+
propStatus.codeValue === undefined) {
|
|
75
75
|
return Promise.resolve();
|
|
76
76
|
}
|
|
77
77
|
return (0, save_sequence_prop_1.saveSequenceProps)({
|
|
@@ -85,20 +85,20 @@ const Value = ({ field, nodePath, validatedLocation, schema, codeValue }) => {
|
|
|
85
85
|
schema,
|
|
86
86
|
},
|
|
87
87
|
],
|
|
88
|
-
|
|
88
|
+
setPropStatuses,
|
|
89
89
|
clientId,
|
|
90
90
|
undoLabel: `Update ${fieldLabel}`,
|
|
91
91
|
redoLabel: `Update ${fieldLabel} again`,
|
|
92
92
|
});
|
|
93
93
|
}, [
|
|
94
|
-
|
|
94
|
+
propStatus,
|
|
95
95
|
clientId,
|
|
96
96
|
field.description,
|
|
97
97
|
field.fieldSchema.default,
|
|
98
98
|
field.key,
|
|
99
99
|
nodePath,
|
|
100
100
|
schema,
|
|
101
|
-
|
|
101
|
+
setPropStatuses,
|
|
102
102
|
validatedLocation,
|
|
103
103
|
]);
|
|
104
104
|
const onDragValueChange = (0, react_1.useCallback)((value) => {
|
|
@@ -113,36 +113,36 @@ const Value = ({ field, nodePath, validatedLocation, schema, codeValue }) => {
|
|
|
113
113
|
}
|
|
114
114
|
clearDragOverrides(nodePath);
|
|
115
115
|
}, [clearDragOverrides, nodePath]);
|
|
116
|
-
return (jsx_runtime_1.jsx(TimelineSchemaField_1.TimelineFieldValue, { field: field, propStatus:
|
|
116
|
+
return (jsx_runtime_1.jsx(TimelineSchemaField_1.TimelineFieldValue, { field: field, propStatus: propStatus, onSave: onSave, onDragValueChange: onDragValueChange, onDragEnd: onDragEnd, effectiveValue: effectiveValue, scaleLockNodePath: nodePath }));
|
|
117
117
|
};
|
|
118
118
|
const TimelineSequencePropItem = ({ field, validatedLocation, rowDepth, nodePath, nodePathInfo, schema, keyframeDisplayOffset, }) => {
|
|
119
119
|
var _a, _b;
|
|
120
|
-
const {
|
|
120
|
+
const { propStatuses: visualModePropStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModePropStatusesContext);
|
|
121
121
|
const { getDragOverrides } = (0, react_1.useContext)(remotion_1.Internals.VisualModeDragOverridesContext);
|
|
122
|
-
const {
|
|
122
|
+
const { setPropStatuses, setDragOverrides, clearDragOverrides } = (0, react_1.useContext)(remotion_1.Internals.VisualModeSettersContext);
|
|
123
123
|
const { previewServerState } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx);
|
|
124
124
|
const { setSelectedModal } = (0, react_1.useContext)(modals_1.ModalsContext);
|
|
125
125
|
const selection = (0, TimelineSelection_1.useTimelineRowSelection)(nodePathInfo);
|
|
126
126
|
const clientId = previewServerState.type === 'connected'
|
|
127
127
|
? previewServerState.clientId
|
|
128
128
|
: null;
|
|
129
|
-
const
|
|
130
|
-
const
|
|
129
|
+
const propStatusesForOverride = remotion_1.Internals.getPropStatusesCtx(visualModePropStatuses, nodePath);
|
|
130
|
+
const propStatus = (_a = propStatusesForOverride === null || propStatusesForOverride === void 0 ? void 0 : propStatusesForOverride[field.key]) !== null && _a !== void 0 ? _a : null;
|
|
131
131
|
const timelinePosition = remotion_1.Internals.Timeline.useTimelinePosition();
|
|
132
132
|
const jsxFrame = timelinePosition - keyframeDisplayOffset;
|
|
133
133
|
const dragOverrideValue = (0, react_1.useMemo)(() => {
|
|
134
134
|
var _a;
|
|
135
135
|
return ((_a = getDragOverrides(nodePath)) !== null && _a !== void 0 ? _a : {})[field.key];
|
|
136
136
|
}, [getDragOverrides, nodePath, field.key]);
|
|
137
|
-
const keyframeControls =
|
|
137
|
+
const keyframeControls = propStatus !== null &&
|
|
138
138
|
(0, TimelineKeyframeControls_1.shouldShowTimelineKeyframeControls)({
|
|
139
|
-
propStatus
|
|
139
|
+
propStatus,
|
|
140
140
|
selected: selection.selected,
|
|
141
141
|
keyframable: (0, studio_shared_1.isSchemaFieldKeyframable)({
|
|
142
142
|
schema,
|
|
143
143
|
key: field.key,
|
|
144
144
|
}),
|
|
145
|
-
}) ? (jsx_runtime_1.jsx(TimelineKeyframeControls_1.TimelineKeyframeControls, { fieldKey: field.key, propStatus:
|
|
145
|
+
}) ? (jsx_runtime_1.jsx(TimelineKeyframeControls_1.TimelineKeyframeControls, { fieldKey: field.key, propStatus: propStatus, nodePath: nodePath, fileName: validatedLocation.source, keyframeDisplayOffset: keyframeDisplayOffset, defaultValue: field.fieldSchema.default, dragOverrideValue: dragOverrideValue, schema: schema, effectIndex: null, nodePathInfo: nodePathInfo })) : null;
|
|
146
146
|
const style = (0, react_1.useMemo)(() => {
|
|
147
147
|
return {
|
|
148
148
|
...fieldRowBase,
|
|
@@ -150,24 +150,24 @@ const TimelineSequencePropItem = ({ field, validatedLocation, rowDepth, nodePath
|
|
|
150
150
|
};
|
|
151
151
|
}, [field.rowHeight]);
|
|
152
152
|
const canResetToDefault = (0, react_1.useMemo)(() => {
|
|
153
|
-
if (!
|
|
153
|
+
if (!propStatus || propStatus.status === 'computed') {
|
|
154
154
|
return false;
|
|
155
155
|
}
|
|
156
156
|
return isResettableStatus({
|
|
157
|
-
status:
|
|
157
|
+
status: propStatus,
|
|
158
158
|
defaultValue: field.fieldSchema.default,
|
|
159
159
|
});
|
|
160
|
-
}, [
|
|
160
|
+
}, [propStatus, field.fieldSchema.default]);
|
|
161
161
|
const canPerformReset = previewServerState.type === 'connected' &&
|
|
162
|
-
|
|
163
|
-
|
|
162
|
+
propStatus !== null &&
|
|
163
|
+
propStatus.status !== 'computed';
|
|
164
164
|
const canShowReset = canPerformReset && field.fieldSchema.default !== undefined;
|
|
165
165
|
const onReset = (0, react_1.useCallback)(() => {
|
|
166
166
|
var _a;
|
|
167
167
|
if (!canShowReset ||
|
|
168
168
|
!canResetToDefault ||
|
|
169
169
|
previewServerState.type !== 'connected' ||
|
|
170
|
-
|
|
170
|
+
propStatus === null) {
|
|
171
171
|
return;
|
|
172
172
|
}
|
|
173
173
|
const defaultValue = field.fieldSchema.default !== undefined
|
|
@@ -185,7 +185,7 @@ const TimelineSequencePropItem = ({ field, validatedLocation, rowDepth, nodePath
|
|
|
185
185
|
schema,
|
|
186
186
|
},
|
|
187
187
|
],
|
|
188
|
-
|
|
188
|
+
setPropStatuses,
|
|
189
189
|
clientId: previewServerState.clientId,
|
|
190
190
|
undoLabel: `Reset ${fieldLabel}`,
|
|
191
191
|
redoLabel: `Reapply ${fieldLabel}`,
|
|
@@ -199,9 +199,9 @@ const TimelineSequencePropItem = ({ field, validatedLocation, rowDepth, nodePath
|
|
|
199
199
|
nodePath,
|
|
200
200
|
previewServerState,
|
|
201
201
|
schema,
|
|
202
|
-
|
|
202
|
+
setPropStatuses,
|
|
203
203
|
validatedLocation.source,
|
|
204
|
-
|
|
204
|
+
propStatus,
|
|
205
205
|
]);
|
|
206
206
|
const onSaveKeyframed = (0, react_1.useCallback)((value, sourceFrame) => {
|
|
207
207
|
if (!clientId) {
|
|
@@ -214,7 +214,7 @@ const TimelineSequencePropItem = ({ field, validatedLocation, rowDepth, nodePath
|
|
|
214
214
|
sourceFrame,
|
|
215
215
|
value,
|
|
216
216
|
schema,
|
|
217
|
-
|
|
217
|
+
setPropStatuses,
|
|
218
218
|
clientId,
|
|
219
219
|
});
|
|
220
220
|
}, [
|
|
@@ -222,25 +222,25 @@ const TimelineSequencePropItem = ({ field, validatedLocation, rowDepth, nodePath
|
|
|
222
222
|
field.key,
|
|
223
223
|
nodePath,
|
|
224
224
|
schema,
|
|
225
|
-
|
|
225
|
+
setPropStatuses,
|
|
226
226
|
validatedLocation.source,
|
|
227
227
|
]);
|
|
228
228
|
const onKeyframedDragValueChange = (0, react_1.useCallback)((value) => {
|
|
229
|
-
if (
|
|
229
|
+
if (propStatus === null || !isKeyframedStatus(propStatus)) {
|
|
230
230
|
throw new Error('Expected keyframed status');
|
|
231
231
|
}
|
|
232
232
|
setDragOverrides(nodePath, field.key, remotion_1.Internals.makeKeyframedDragOverride({
|
|
233
|
-
status:
|
|
233
|
+
status: propStatus,
|
|
234
234
|
frame: jsxFrame,
|
|
235
235
|
value,
|
|
236
236
|
}));
|
|
237
|
-
}, [
|
|
237
|
+
}, [propStatus, field.key, jsxFrame, nodePath, setDragOverrides]);
|
|
238
238
|
const onKeyframedDragEnd = (0, react_1.useCallback)(() => {
|
|
239
239
|
clearDragOverrides(nodePath);
|
|
240
240
|
}, [clearDragOverrides, nodePath]);
|
|
241
241
|
const onOpenKeyframeSettings = (0, react_1.useCallback)(() => {
|
|
242
242
|
var _a;
|
|
243
|
-
if (
|
|
243
|
+
if (propStatus === null || !isKeyframedStatus(propStatus)) {
|
|
244
244
|
return;
|
|
245
245
|
}
|
|
246
246
|
setSelectedModal({
|
|
@@ -249,12 +249,12 @@ const TimelineSequencePropItem = ({ field, validatedLocation, rowDepth, nodePath
|
|
|
249
249
|
nodePath,
|
|
250
250
|
fieldKey: field.key,
|
|
251
251
|
fieldLabel: (_a = field.description) !== null && _a !== void 0 ? _a : field.key,
|
|
252
|
-
status:
|
|
252
|
+
status: propStatus,
|
|
253
253
|
schema,
|
|
254
254
|
effectIndex: null,
|
|
255
255
|
});
|
|
256
256
|
}, [
|
|
257
|
-
|
|
257
|
+
propStatus,
|
|
258
258
|
field.description,
|
|
259
259
|
field.key,
|
|
260
260
|
nodePath,
|
|
@@ -277,7 +277,7 @@ const TimelineSequencePropItem = ({ field, validatedLocation, rowDepth, nodePath
|
|
|
277
277
|
value: 'reset-sequence-field',
|
|
278
278
|
},
|
|
279
279
|
];
|
|
280
|
-
if (
|
|
280
|
+
if (propStatus !== null && isKeyframedStatus(propStatus)) {
|
|
281
281
|
values.push({
|
|
282
282
|
type: 'item',
|
|
283
283
|
id: 'keyframe-settings-sequence-field',
|
|
@@ -294,16 +294,16 @@ const TimelineSequencePropItem = ({ field, validatedLocation, rowDepth, nodePath
|
|
|
294
294
|
return values;
|
|
295
295
|
}, [
|
|
296
296
|
canShowReset,
|
|
297
|
-
|
|
297
|
+
propStatus,
|
|
298
298
|
onOpenKeyframeSettings,
|
|
299
299
|
onReset,
|
|
300
300
|
previewServerState,
|
|
301
301
|
]);
|
|
302
|
-
if (
|
|
302
|
+
if (propStatus === null) {
|
|
303
303
|
return null;
|
|
304
304
|
}
|
|
305
305
|
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: [
|
|
306
|
-
jsx_runtime_1.jsx(TimelineFieldLabel_1.TimelineFieldLabel, { rowDepth: rowDepth, selected: selection.selected, label: (_b = field.description) !== null && _b !== void 0 ? _b : field.key }), isKeyframedStatus(
|
|
306
|
+
jsx_runtime_1.jsx(TimelineFieldLabel_1.TimelineFieldLabel, { rowDepth: rowDepth, selected: selection.selected, label: (_b = field.description) !== null && _b !== void 0 ? _b : field.key }), isKeyframedStatus(propStatus) ? (jsx_runtime_1.jsx("div", { style: timeline_field_row_layout_1.timelineFieldValueColumnStyle, children: jsx_runtime_1.jsx(TimelineKeyframedValue_1.TimelineKeyframedValue, { field: field, propStatus: propStatus, keyframeDisplayOffset: keyframeDisplayOffset, dragOverrideValue: dragOverrideValue, onSave: onSaveKeyframed, onDragValueChange: onKeyframedDragValueChange, onDragEnd: onKeyframedDragEnd, scaleLockNodePath: nodePath }) })) : propStatus.status === 'static' ? (jsx_runtime_1.jsx("div", { style: timeline_field_row_layout_1.timelineFieldValueColumnStyle, children: jsx_runtime_1.jsx(Value, { field: field, nodePath: nodePath, validatedLocation: validatedLocation, schema: schema, propStatus: propStatus }) })) : (jsx_runtime_1.jsx("div", { style: timeline_field_row_layout_1.timelineFieldValueColumnStyle, children: jsx_runtime_1.jsx(TimelineSchemaField_1.TimelineNonEditableStatus, { propStatus: propStatus }) }))] }));
|
|
307
307
|
return (jsx_runtime_1.jsx(ContextMenu_1.ContextMenu, { values: contextMenuValues, onOpen: selection.selectable ? selection.onSelect : null, children: row }));
|
|
308
308
|
};
|
|
309
309
|
exports.TimelineSequencePropItem = TimelineSequencePropItem;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type {
|
|
2
|
+
import type { OverrideIdToNodePaths, PropStatuses, SequencePropsSubscriptionKey, TSequence } from 'remotion';
|
|
3
3
|
import type { SequenceNodePathInfo } from '../../helpers/get-timeline-sequence-sort-key';
|
|
4
4
|
import { type SaveSequencePropChange } from './save-sequence-prop';
|
|
5
5
|
import { type TimelineSelection } from './TimelineSelection';
|
|
@@ -29,19 +29,19 @@ export declare const getTimelineSequenceFromDragChanges: ({ targets, deltaFrames
|
|
|
29
29
|
readonly targets: readonly TimelineSequenceFromDragTarget[];
|
|
30
30
|
readonly deltaFrames: number;
|
|
31
31
|
}) => SaveSequencePropChange[];
|
|
32
|
-
export declare const getTimelineSequenceDurationDragTargets: ({ draggedNodePathInfo, selectedItems, sequences, overrideIdsToNodePaths,
|
|
32
|
+
export declare const getTimelineSequenceDurationDragTargets: ({ draggedNodePathInfo, selectedItems, sequences, overrideIdsToNodePaths, propStatuses, }: {
|
|
33
33
|
readonly draggedNodePathInfo: SequenceNodePathInfo;
|
|
34
34
|
readonly selectedItems: readonly TimelineSelection[];
|
|
35
35
|
readonly sequences: TSequence[];
|
|
36
36
|
readonly overrideIdsToNodePaths: OverrideIdToNodePaths;
|
|
37
|
-
readonly
|
|
37
|
+
readonly propStatuses: PropStatuses;
|
|
38
38
|
}) => TimelineSequenceDurationDragTarget[] | null;
|
|
39
|
-
export declare const getTimelineSequenceFromDragTargets: ({ draggedNodePathInfo, selectedItems, sequences, overrideIdsToNodePaths,
|
|
39
|
+
export declare const getTimelineSequenceFromDragTargets: ({ draggedNodePathInfo, selectedItems, sequences, overrideIdsToNodePaths, propStatuses, }: {
|
|
40
40
|
readonly draggedNodePathInfo: SequenceNodePathInfo;
|
|
41
41
|
readonly selectedItems: readonly TimelineSelection[];
|
|
42
42
|
readonly sequences: TSequence[];
|
|
43
43
|
readonly overrideIdsToNodePaths: OverrideIdToNodePaths;
|
|
44
|
-
readonly
|
|
44
|
+
readonly propStatuses: PropStatuses;
|
|
45
45
|
}) => TimelineSequenceFromDragTarget[] | null;
|
|
46
46
|
export declare const useTimelineSequenceFromDrag: ({ nodePathInfo, windowWidth, timelineDurationInFrames, }: {
|
|
47
47
|
readonly nodePathInfo: SequenceNodePathInfo | null;
|