@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
|
@@ -113,13 +113,13 @@ const effectStatusToSnapshot = (effect) => {
|
|
|
113
113
|
params,
|
|
114
114
|
};
|
|
115
115
|
};
|
|
116
|
-
const getSnapshotsFromSelection = ({ selection,
|
|
116
|
+
const getSnapshotsFromSelection = ({ selection, propStatuses, }) => {
|
|
117
117
|
if (selection.type !== 'sequence-effect' &&
|
|
118
118
|
selection.type !== 'sequence-all-effects') {
|
|
119
119
|
return null;
|
|
120
120
|
}
|
|
121
121
|
const { sequenceSubscriptionKey } = selection.nodePathInfo;
|
|
122
|
-
const sequenceStatus =
|
|
122
|
+
const sequenceStatus = propStatuses[remotion_1.Internals.makeSequencePropsSubscriptionKey(sequenceSubscriptionKey)];
|
|
123
123
|
if (!sequenceStatus || !sequenceStatus.canUpdate) {
|
|
124
124
|
return null;
|
|
125
125
|
}
|
|
@@ -143,11 +143,11 @@ const getSnapshotsFromSelection = ({ selection, codeValues, }) => {
|
|
|
143
143
|
return snapshots;
|
|
144
144
|
};
|
|
145
145
|
exports.getSnapshotsFromSelection = getSnapshotsFromSelection;
|
|
146
|
-
const getEffectPropClipboardDataFromSelection = ({ selection,
|
|
146
|
+
const getEffectPropClipboardDataFromSelection = ({ selection, propStatuses, }) => {
|
|
147
147
|
if (selection.type !== 'sequence-effect-prop') {
|
|
148
148
|
return null;
|
|
149
149
|
}
|
|
150
|
-
const sequenceStatus =
|
|
150
|
+
const sequenceStatus = propStatuses[remotion_1.Internals.makeSequencePropsSubscriptionKey(selection.nodePathInfo.sequenceSubscriptionKey)];
|
|
151
151
|
if (!sequenceStatus || !sequenceStatus.canUpdate) {
|
|
152
152
|
return null;
|
|
153
153
|
}
|
|
@@ -176,7 +176,7 @@ const getEffectPropClipboardDataFromSelection = ({ selection, codeValues, }) =>
|
|
|
176
176
|
};
|
|
177
177
|
};
|
|
178
178
|
exports.getEffectPropClipboardDataFromSelection = getEffectPropClipboardDataFromSelection;
|
|
179
|
-
const getPasteEffectPropTarget = ({ selectedItems, payload,
|
|
179
|
+
const getPasteEffectPropTarget = ({ selectedItems, payload, propStatuses, sequences, overrideIdsToNodePaths, }) => {
|
|
180
180
|
var _a;
|
|
181
181
|
if (selectedItems.length === 0) {
|
|
182
182
|
return { type: 'none' };
|
|
@@ -223,7 +223,7 @@ const getPasteEffectPropTarget = ({ selectedItems, payload, codeValues, sequence
|
|
|
223
223
|
if (!effect || !isVisibleFieldSchema(fieldSchema)) {
|
|
224
224
|
return { type: 'prop-mismatch' };
|
|
225
225
|
}
|
|
226
|
-
const sequenceStatus =
|
|
226
|
+
const sequenceStatus = propStatuses[remotion_1.Internals.makeSequencePropsSubscriptionKey(selection.nodePathInfo.sequenceSubscriptionKey)];
|
|
227
227
|
if (!(sequenceStatus === null || sequenceStatus === void 0 ? void 0 : sequenceStatus.canUpdate)) {
|
|
228
228
|
return { type: 'uncopyable' };
|
|
229
229
|
}
|
|
@@ -254,9 +254,9 @@ const TimelineClipboardKeybindings = () => {
|
|
|
254
254
|
const { previewServerState } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx);
|
|
255
255
|
const { canSelect } = (0, TimelineSelection_1.useTimelineSelection)();
|
|
256
256
|
const currentSelection = (0, TimelineSelection_1.useCurrentTimelineSelectionStateAsRef)();
|
|
257
|
-
const
|
|
258
|
-
const {
|
|
259
|
-
const
|
|
257
|
+
const propStatusesRef = (0, react_1.useContext)(remotion_1.Internals.VisualModePropStatusesRefContext);
|
|
258
|
+
const { setPropStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModeSettersContext);
|
|
259
|
+
const sequencesRef = (0, react_1.useContext)(remotion_1.Internals.SequenceManagerRefContext);
|
|
260
260
|
const { overrideIdToNodePathMappings } = (0, react_1.useContext)(remotion_1.Internals.OverrideIdsToNodePathsGettersContext);
|
|
261
261
|
(0, react_1.useEffect)(() => {
|
|
262
262
|
if (!canSelect || previewServerState.type !== 'connected') {
|
|
@@ -269,6 +269,7 @@ const TimelineClipboardKeybindings = () => {
|
|
|
269
269
|
callback: (e) => {
|
|
270
270
|
var _a;
|
|
271
271
|
const { selectedItems } = currentSelection.current;
|
|
272
|
+
const propStatuses = propStatusesRef.current;
|
|
272
273
|
if (selectedItems.length === 0) {
|
|
273
274
|
return;
|
|
274
275
|
}
|
|
@@ -281,7 +282,7 @@ const TimelineClipboardKeybindings = () => {
|
|
|
281
282
|
}
|
|
282
283
|
const payload = (0, exports.getEffectPropClipboardDataFromSelection)({
|
|
283
284
|
selection: selectedItems[0],
|
|
284
|
-
|
|
285
|
+
propStatuses,
|
|
285
286
|
});
|
|
286
287
|
if (payload === null) {
|
|
287
288
|
(0, NotificationCenter_1.showNotification)('Cannot copy effect prop because its value cannot be copied', 3000);
|
|
@@ -310,7 +311,7 @@ const TimelineClipboardKeybindings = () => {
|
|
|
310
311
|
const snapshots = selectedItems.flatMap((selection) => {
|
|
311
312
|
const itemSnapshots = (0, exports.getSnapshotsFromSelection)({
|
|
312
313
|
selection,
|
|
313
|
-
|
|
314
|
+
propStatuses,
|
|
314
315
|
});
|
|
315
316
|
return itemSnapshots !== null && itemSnapshots !== void 0 ? itemSnapshots : [null];
|
|
316
317
|
});
|
|
@@ -352,6 +353,8 @@ const TimelineClipboardKeybindings = () => {
|
|
|
352
353
|
navigator.clipboard
|
|
353
354
|
.readText()
|
|
354
355
|
.then((text) => {
|
|
356
|
+
const propStatuses = propStatusesRef.current;
|
|
357
|
+
const sequences = sequencesRef.current;
|
|
355
358
|
const effectPropResult = (0, studio_shared_1.parseEffectPropClipboardDataResult)(text);
|
|
356
359
|
if (effectPropResult.status !== 'invalid') {
|
|
357
360
|
e.preventDefault();
|
|
@@ -362,7 +365,7 @@ const TimelineClipboardKeybindings = () => {
|
|
|
362
365
|
const effectPropTarget = (0, exports.getPasteEffectPropTarget)({
|
|
363
366
|
selectedItems,
|
|
364
367
|
payload: effectPropResult.data,
|
|
365
|
-
|
|
368
|
+
propStatuses,
|
|
366
369
|
sequences,
|
|
367
370
|
overrideIdsToNodePaths: overrideIdToNodePathMappings,
|
|
368
371
|
});
|
|
@@ -406,7 +409,7 @@ const TimelineClipboardKeybindings = () => {
|
|
|
406
409
|
}),
|
|
407
410
|
defaultValue: effectPropTarget.defaultValue,
|
|
408
411
|
schema: effectPropTarget.schema,
|
|
409
|
-
|
|
412
|
+
setPropStatuses,
|
|
410
413
|
clientId,
|
|
411
414
|
}).then(() => {
|
|
412
415
|
(0, NotificationCenter_1.showNotification)('Pasted effect prop', 2000);
|
|
@@ -466,13 +469,13 @@ const TimelineClipboardKeybindings = () => {
|
|
|
466
469
|
};
|
|
467
470
|
}, [
|
|
468
471
|
canSelect,
|
|
469
|
-
codeValues,
|
|
470
472
|
currentSelection,
|
|
471
473
|
keybindings,
|
|
472
474
|
overrideIdToNodePathMappings,
|
|
475
|
+
propStatusesRef,
|
|
473
476
|
previewServerState,
|
|
474
|
-
|
|
475
|
-
|
|
477
|
+
sequencesRef,
|
|
478
|
+
setPropStatuses,
|
|
476
479
|
]);
|
|
477
480
|
return null;
|
|
478
481
|
};
|
|
@@ -10,52 +10,39 @@ const delete_selected_timeline_item_1 = require("./delete-selected-timeline-item
|
|
|
10
10
|
const duplicate_selected_timeline_item_1 = require("./duplicate-selected-timeline-item");
|
|
11
11
|
const reset_selected_timeline_props_1 = require("./reset-selected-timeline-props");
|
|
12
12
|
const TimelineSelection_1 = require("./TimelineSelection");
|
|
13
|
+
const update_selected_easing_1 = require("./update-selected-easing");
|
|
13
14
|
const TimelineDeleteKeybindings = () => {
|
|
14
15
|
const keybindings = (0, use_keybinding_1.useKeybinding)();
|
|
15
16
|
const { previewServerState } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx);
|
|
16
|
-
const
|
|
17
|
+
const sequencesRef = (0, react_1.useContext)(remotion_1.Internals.SequenceManagerRefContext);
|
|
17
18
|
const { overrideIdToNodePathMappings } = (0, react_1.useContext)(remotion_1.Internals.OverrideIdsToNodePathsGettersContext);
|
|
18
|
-
const
|
|
19
|
-
const {
|
|
20
|
-
const { canSelect } = (0, TimelineSelection_1.useTimelineSelection)();
|
|
19
|
+
const propStatusesRef = (0, react_1.useContext)(remotion_1.Internals.VisualModePropStatusesRefContext);
|
|
20
|
+
const { setPropStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModeSettersContext);
|
|
21
|
+
const { canSelect, canSelectEasing } = (0, TimelineSelection_1.useTimelineSelection)();
|
|
21
22
|
const currentSelection = (0, TimelineSelection_1.useCurrentTimelineSelectionStateAsRef)();
|
|
22
23
|
const confirm = (0, ConfirmationDialog_1.useConfirmationDialog)();
|
|
23
24
|
(0, react_1.useEffect)(() => {
|
|
24
|
-
if (!canSelect
|
|
25
|
+
if ((!canSelect && !canSelectEasing) ||
|
|
26
|
+
previewServerState.type !== 'connected') {
|
|
25
27
|
return;
|
|
26
28
|
}
|
|
27
29
|
const { clientId } = previewServerState;
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
if (resetPromise !== null) {
|
|
45
|
-
resetPromise.catch(() => undefined);
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
const deletePromise = (0, delete_selected_timeline_item_1.deleteSelectedTimelineItems)({
|
|
49
|
-
selections: selectedItems,
|
|
50
|
-
sequences,
|
|
51
|
-
overrideIdsToNodePaths: overrideIdToNodePathMappings,
|
|
52
|
-
setCodeValues,
|
|
53
|
-
clientId,
|
|
54
|
-
confirm,
|
|
55
|
-
});
|
|
56
|
-
if (deletePromise === null) {
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
30
|
+
const handleDelete = () => {
|
|
31
|
+
const { selectedItems, clearSelection } = currentSelection.current;
|
|
32
|
+
const sequences = sequencesRef.current;
|
|
33
|
+
const propStatuses = propStatusesRef.current;
|
|
34
|
+
if (selectedItems.length === 0) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
const deletePromise = (0, delete_selected_timeline_item_1.deleteSelectedTimelineItems)({
|
|
38
|
+
selections: selectedItems,
|
|
39
|
+
sequences,
|
|
40
|
+
overrideIdsToNodePaths: overrideIdToNodePathMappings,
|
|
41
|
+
setPropStatuses,
|
|
42
|
+
clientId,
|
|
43
|
+
confirm,
|
|
44
|
+
});
|
|
45
|
+
if (deletePromise !== null) {
|
|
59
46
|
deletePromise
|
|
60
47
|
.then((deleted) => {
|
|
61
48
|
if (deleted) {
|
|
@@ -63,7 +50,49 @@ const TimelineDeleteKeybindings = () => {
|
|
|
63
50
|
}
|
|
64
51
|
})
|
|
65
52
|
.catch(() => undefined);
|
|
66
|
-
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const easingSelections = (0, update_selected_easing_1.getEasingSelections)(selectedItems);
|
|
56
|
+
if (easingSelections.length === selectedItems.length) {
|
|
57
|
+
const resetEasingPromise = (0, update_selected_easing_1.updateSelectedTimelineEasings)({
|
|
58
|
+
selections: easingSelections,
|
|
59
|
+
sequences,
|
|
60
|
+
overrideIdsToNodePaths: overrideIdToNodePathMappings,
|
|
61
|
+
propStatuses,
|
|
62
|
+
setPropStatuses,
|
|
63
|
+
clientId,
|
|
64
|
+
easing: 'linear',
|
|
65
|
+
});
|
|
66
|
+
if (resetEasingPromise !== null) {
|
|
67
|
+
resetEasingPromise.catch(() => undefined);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
const resetPromise = (0, reset_selected_timeline_props_1.resetSelectedTimelineProps)({
|
|
72
|
+
selections: selectedItems,
|
|
73
|
+
sequences,
|
|
74
|
+
overrideIdsToNodePaths: overrideIdToNodePathMappings,
|
|
75
|
+
propStatuses,
|
|
76
|
+
setPropStatuses,
|
|
77
|
+
clientId,
|
|
78
|
+
});
|
|
79
|
+
if (resetPromise !== null) {
|
|
80
|
+
resetPromise.catch(() => undefined);
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
const backspace = keybindings.registerKeybinding({
|
|
84
|
+
event: 'keydown',
|
|
85
|
+
key: 'Backspace',
|
|
86
|
+
callback: handleDelete,
|
|
87
|
+
commandCtrlKey: false,
|
|
88
|
+
preventDefault: true,
|
|
89
|
+
triggerIfInputFieldFocused: false,
|
|
90
|
+
keepRegisteredWhenNotHighestContext: false,
|
|
91
|
+
});
|
|
92
|
+
const deleteKey = keybindings.registerKeybinding({
|
|
93
|
+
event: 'keydown',
|
|
94
|
+
key: 'Delete',
|
|
95
|
+
callback: handleDelete,
|
|
67
96
|
commandCtrlKey: false,
|
|
68
97
|
preventDefault: true,
|
|
69
98
|
triggerIfInputFieldFocused: false,
|
|
@@ -93,18 +122,20 @@ const TimelineDeleteKeybindings = () => {
|
|
|
93
122
|
});
|
|
94
123
|
return () => {
|
|
95
124
|
backspace.unregister();
|
|
125
|
+
deleteKey.unregister();
|
|
96
126
|
duplicate.unregister();
|
|
97
127
|
};
|
|
98
128
|
}, [
|
|
99
129
|
canSelect,
|
|
100
|
-
|
|
130
|
+
canSelectEasing,
|
|
101
131
|
confirm,
|
|
102
132
|
currentSelection,
|
|
103
133
|
keybindings,
|
|
104
134
|
overrideIdToNodePathMappings,
|
|
135
|
+
propStatusesRef,
|
|
105
136
|
previewServerState,
|
|
106
|
-
|
|
107
|
-
|
|
137
|
+
sequencesRef,
|
|
138
|
+
setPropStatuses,
|
|
108
139
|
]);
|
|
109
140
|
return null;
|
|
110
141
|
};
|
|
@@ -82,13 +82,13 @@ const TimelineDragHandler = () => {
|
|
|
82
82
|
return {
|
|
83
83
|
...container,
|
|
84
84
|
width: 100 * zoom + '%',
|
|
85
|
-
|
|
85
|
+
height: TimelineTimeIndicators_1.TIMELINE_TIME_INDICATOR_HEIGHT,
|
|
86
86
|
};
|
|
87
87
|
}, [canvasContent, zoomMap]);
|
|
88
88
|
if (!canvasContent || canvasContent.type !== 'composition') {
|
|
89
89
|
return null;
|
|
90
90
|
}
|
|
91
|
-
return (jsx_runtime_1.jsx("div", { ref: timeline_refs_1.sliderAreaRef, style: containerStyle, children: video ? jsx_runtime_1.jsx(TimelineDragHandlerInnerMemo, {}) : null }));
|
|
91
|
+
return (jsx_runtime_1.jsx("div", { ref: timeline_refs_1.sliderAreaRef, style: containerStyle, [TimelineSelection_1.TIMELINE_SCRUBBER_ATTR]: true, children: video ? jsx_runtime_1.jsx(TimelineDragHandlerInnerMemo, {}) : null }));
|
|
92
92
|
};
|
|
93
93
|
exports.TimelineDragHandler = TimelineDragHandler;
|
|
94
94
|
const TimelineDragHandlerInner = () => {
|
|
@@ -68,15 +68,15 @@ const TimelineEffectItem = ({ label, nodePathInfo, effectIndex, effectSchema, do
|
|
|
68
68
|
var _b;
|
|
69
69
|
const { previewServerState } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx);
|
|
70
70
|
const previewConnected = previewServerState.type === 'connected';
|
|
71
|
-
const {
|
|
72
|
-
const {
|
|
71
|
+
const { propStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModePropStatusesContext);
|
|
72
|
+
const { setPropStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModeSettersContext);
|
|
73
73
|
const selection = (0, TimelineSelection_1.useTimelineRowSelection)(nodePathInfo);
|
|
74
74
|
const [dropIndicator, setDropIndicator] = (0, react_1.useState)(null);
|
|
75
|
-
const effectStatus = (0, react_1.useMemo)(() => remotion_1.Internals.
|
|
76
|
-
|
|
75
|
+
const effectStatus = (0, react_1.useMemo)(() => remotion_1.Internals.getEffectPropStatusesCtx({
|
|
76
|
+
propStatuses,
|
|
77
77
|
nodePath,
|
|
78
78
|
effectIndex,
|
|
79
|
-
}), [
|
|
79
|
+
}), [propStatuses, nodePath, effectIndex]);
|
|
80
80
|
const disabledStatus = effectStatus.type === 'can-update-effect'
|
|
81
81
|
? ((_b = (_a = effectStatus.props) === null || _a === void 0 ? void 0 : _a.disabled) !== null && _b !== void 0 ? _b : null)
|
|
82
82
|
: null;
|
|
@@ -90,8 +90,7 @@ const TimelineEffectItem = ({ label, nodePathInfo, effectIndex, effectSchema, do
|
|
|
90
90
|
const deleteDisabled = !previewConnected ||
|
|
91
91
|
effectStatus.type !== 'can-update-effect' ||
|
|
92
92
|
!validatedLocation.source;
|
|
93
|
-
const canReorder =
|
|
94
|
-
previewConnected &&
|
|
93
|
+
const canReorder = previewConnected &&
|
|
95
94
|
effectStatus.type === 'can-update-effect' &&
|
|
96
95
|
Boolean(validatedLocation.source);
|
|
97
96
|
const nodePathKey = (0, react_1.useMemo)(() => remotion_1.Internals.makeSequencePropsSubscriptionKey(nodePath), [nodePath]);
|
|
@@ -186,7 +185,7 @@ const TimelineEffectItem = ({ label, nodePathInfo, effectIndex, effectSchema, do
|
|
|
186
185
|
value: newValue,
|
|
187
186
|
defaultValue,
|
|
188
187
|
schema: effectSchema,
|
|
189
|
-
|
|
188
|
+
setPropStatuses,
|
|
190
189
|
clientId: previewServerState.clientId,
|
|
191
190
|
});
|
|
192
191
|
}, [
|
|
@@ -195,7 +194,7 @@ const TimelineEffectItem = ({ label, nodePathInfo, effectIndex, effectSchema, do
|
|
|
195
194
|
effectSchema,
|
|
196
195
|
nodePath,
|
|
197
196
|
previewServerState,
|
|
198
|
-
|
|
197
|
+
setPropStatuses,
|
|
199
198
|
validatedLocation.source,
|
|
200
199
|
]);
|
|
201
200
|
const isExpanded = getIsExpanded(nodePathInfo);
|
|
@@ -43,15 +43,15 @@ const isResettableStatus = ({ status, defaultValue, }) => {
|
|
|
43
43
|
const Value = ({ field, nodePath, validatedLocation, keyframeDisplayOffset }) => {
|
|
44
44
|
var _a;
|
|
45
45
|
var _b;
|
|
46
|
-
const { setEffectDragOverrides, clearEffectDragOverrides,
|
|
46
|
+
const { setEffectDragOverrides, clearEffectDragOverrides, setPropStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModeSettersContext);
|
|
47
47
|
const { getEffectDragOverrides } = (0, react_1.useContext)(remotion_1.Internals.VisualModeDragOverridesContext);
|
|
48
|
-
const {
|
|
48
|
+
const { propStatuses: visualModePropStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModePropStatusesContext);
|
|
49
49
|
const { previewServerState } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx);
|
|
50
50
|
const clientId = previewServerState.type === 'connected'
|
|
51
51
|
? previewServerState.clientId
|
|
52
52
|
: null;
|
|
53
|
-
const effectStatus = remotion_1.Internals.
|
|
54
|
-
|
|
53
|
+
const effectStatus = remotion_1.Internals.getEffectPropStatusesCtx({
|
|
54
|
+
propStatuses: visualModePropStatuses,
|
|
55
55
|
nodePath,
|
|
56
56
|
effectIndex: field.effectIndex,
|
|
57
57
|
});
|
|
@@ -110,8 +110,8 @@ const Value = ({ field, nodePath, validatedLocation, keyframeDisplayOffset }) =>
|
|
|
110
110
|
}
|
|
111
111
|
return (0, save_prop_queue_1.enqueueSavePropChange)({
|
|
112
112
|
nodePath,
|
|
113
|
-
|
|
114
|
-
applyOptimistic: (prev) => (0, studio_shared_1.
|
|
113
|
+
setPropStatuses,
|
|
114
|
+
applyOptimistic: (prev) => (0, studio_shared_1.optimisticUpdateForEffectPropStatuses)({
|
|
115
115
|
previous: prev,
|
|
116
116
|
effectIndex: field.effectIndex,
|
|
117
117
|
fieldKey: field.key,
|
|
@@ -139,7 +139,7 @@ const Value = ({ field, nodePath, validatedLocation, keyframeDisplayOffset }) =>
|
|
|
139
139
|
field.key,
|
|
140
140
|
nodePath,
|
|
141
141
|
propStatus,
|
|
142
|
-
|
|
142
|
+
setPropStatuses,
|
|
143
143
|
validatedLocation,
|
|
144
144
|
]);
|
|
145
145
|
const onSaveKeyframed = (0, react_1.useCallback)((value, sourceFrame) => {
|
|
@@ -157,7 +157,7 @@ const Value = ({ field, nodePath, validatedLocation, keyframeDisplayOffset }) =>
|
|
|
157
157
|
sourceFrame,
|
|
158
158
|
value,
|
|
159
159
|
schema: field.effectSchema,
|
|
160
|
-
|
|
160
|
+
setPropStatuses,
|
|
161
161
|
clientId,
|
|
162
162
|
});
|
|
163
163
|
}, [
|
|
@@ -166,7 +166,7 @@ const Value = ({ field, nodePath, validatedLocation, keyframeDisplayOffset }) =>
|
|
|
166
166
|
field.effectSchema,
|
|
167
167
|
field.key,
|
|
168
168
|
nodePath,
|
|
169
|
-
|
|
169
|
+
setPropStatuses,
|
|
170
170
|
validatedLocation,
|
|
171
171
|
]);
|
|
172
172
|
if (field.fieldSchema.type === 'scale') {
|
|
@@ -203,7 +203,7 @@ const Value = ({ field, nodePath, validatedLocation, keyframeDisplayOffset }) =>
|
|
|
203
203
|
return jsx_runtime_1.jsx(TimelineSchemaField_1.UnsupportedStatus, { label: (0, get_timeline_keyframes_1.getComputedStatusLabel)(propStatus) });
|
|
204
204
|
}
|
|
205
205
|
const effectiveValue = remotion_1.Internals.getEffectiveVisualModeValue({
|
|
206
|
-
|
|
206
|
+
propStatus,
|
|
207
207
|
dragOverrideValue,
|
|
208
208
|
defaultValue: field.fieldSchema.default,
|
|
209
209
|
frame: jsxFrame,
|
|
@@ -216,8 +216,8 @@ const TimelineEffectPropItem = ({ field, validatedLocation, rowDepth, nodePath,
|
|
|
216
216
|
var _b, _c;
|
|
217
217
|
const { previewServerState } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx);
|
|
218
218
|
const { setSelectedModal } = (0, react_1.useContext)(modals_1.ModalsContext);
|
|
219
|
-
const {
|
|
220
|
-
const {
|
|
219
|
+
const { setPropStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModeSettersContext);
|
|
220
|
+
const { propStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModePropStatusesContext);
|
|
221
221
|
const { getEffectDragOverrides } = (0, react_1.useContext)(remotion_1.Internals.VisualModeDragOverridesContext);
|
|
222
222
|
const selection = (0, TimelineSelection_1.useTimelineRowSelection)(nodePathInfo);
|
|
223
223
|
const style = (0, react_1.useMemo)(() => {
|
|
@@ -226,11 +226,11 @@ const TimelineEffectPropItem = ({ field, validatedLocation, rowDepth, nodePath,
|
|
|
226
226
|
height: field.rowHeight,
|
|
227
227
|
};
|
|
228
228
|
}, [field.rowHeight]);
|
|
229
|
-
const effectStatus = (0, react_1.useMemo)(() => remotion_1.Internals.
|
|
230
|
-
|
|
229
|
+
const effectStatus = (0, react_1.useMemo)(() => remotion_1.Internals.getEffectPropStatusesCtx({
|
|
230
|
+
propStatuses,
|
|
231
231
|
nodePath,
|
|
232
232
|
effectIndex: field.effectIndex,
|
|
233
|
-
}), [
|
|
233
|
+
}), [propStatuses, nodePath, field.effectIndex]);
|
|
234
234
|
const propStatus = effectStatus.type === 'can-update-effect'
|
|
235
235
|
? ((_b = (_a = effectStatus.props) === null || _a === void 0 ? void 0 : _a[field.key]) !== null && _b !== void 0 ? _b : null)
|
|
236
236
|
: null;
|
|
@@ -246,7 +246,7 @@ const TimelineEffectPropItem = ({ field, validatedLocation, rowDepth, nodePath,
|
|
|
246
246
|
schema: field.effectSchema,
|
|
247
247
|
key: field.key,
|
|
248
248
|
}),
|
|
249
|
-
}) ? (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: field.effectSchema, effectIndex: field.effectIndex })) : null;
|
|
249
|
+
}) ? (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: field.effectSchema, effectIndex: field.effectIndex, nodePathInfo: nodePathInfo })) : null;
|
|
250
250
|
const canResetToDefault = (0, react_1.useMemo)(() => {
|
|
251
251
|
if (!propStatus || propStatus.status === 'computed') {
|
|
252
252
|
return false;
|
|
@@ -278,7 +278,7 @@ const TimelineEffectPropItem = ({ field, validatedLocation, rowDepth, nodePath,
|
|
|
278
278
|
value: field.fieldSchema.default,
|
|
279
279
|
defaultValue,
|
|
280
280
|
schema: field.effectSchema,
|
|
281
|
-
|
|
281
|
+
setPropStatuses,
|
|
282
282
|
clientId: previewServerState.clientId,
|
|
283
283
|
});
|
|
284
284
|
}, [
|
|
@@ -290,7 +290,7 @@ const TimelineEffectPropItem = ({ field, validatedLocation, rowDepth, nodePath,
|
|
|
290
290
|
field.key,
|
|
291
291
|
nodePath,
|
|
292
292
|
previewServerState,
|
|
293
|
-
|
|
293
|
+
setPropStatuses,
|
|
294
294
|
validatedLocation.source,
|
|
295
295
|
]);
|
|
296
296
|
const onOpenKeyframeSettings = (0, react_1.useCallback)(() => {
|
|
@@ -37,7 +37,9 @@ exports.TimelineExpandedKeyframeRow = void 0;
|
|
|
37
37
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
38
38
|
const react_1 = __importStar(require("react"));
|
|
39
39
|
const timeline_layout_1 = require("../../helpers/timeline-layout");
|
|
40
|
+
const get_timeline_easing_segments_1 = require("./get-timeline-easing-segments");
|
|
40
41
|
const TimelineKeyframeDiamond_1 = require("./TimelineKeyframeDiamond");
|
|
42
|
+
const TimelineKeyframeEasingLine_1 = require("./TimelineKeyframeEasingLine");
|
|
41
43
|
const TimelineSelection_1 = require("./TimelineSelection");
|
|
42
44
|
const TimelineWidthProvider_1 = require("./TimelineWidthProvider");
|
|
43
45
|
const row = {
|
|
@@ -46,10 +48,13 @@ const row = {
|
|
|
46
48
|
const rowSeparator = {
|
|
47
49
|
height: timeline_layout_1.TIMELINE_ITEM_BORDER_BOTTOM,
|
|
48
50
|
};
|
|
49
|
-
const TimelineExpandedKeyframeRowUnmemoized = ({ height, keyframes, nodePathInfo, showSeparator }) => {
|
|
51
|
+
const TimelineExpandedKeyframeRowUnmemoized = ({ height, keyframes, canEditEasing, nodePathInfo, showSeparator }) => {
|
|
50
52
|
const timelineWidth = (0, react_1.useContext)(TimelineWidthProvider_1.TimelineWidthContext);
|
|
51
53
|
const { selected: rowSelected } = (0, TimelineSelection_1.useTimelineRowSelection)(nodePathInfo);
|
|
52
|
-
|
|
54
|
+
const easingSegments = canEditEasing
|
|
55
|
+
? (0, get_timeline_easing_segments_1.getTimelineEasingSegments)(keyframes)
|
|
56
|
+
: [];
|
|
57
|
+
return (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [showSeparator ? jsx_runtime_1.jsx("div", { style: rowSeparator }) : null, jsx_runtime_1.jsxs("div", { style: { ...row, height }, children: [rowSelected && timelineWidth !== null ? (jsx_runtime_1.jsx("div", { style: (0, TimelineSelection_1.getTimelineSelectedTrackHighlightStyle)(timelineWidth) })) : null, easingSegments.map((segment) => (jsx_runtime_1.jsx(TimelineKeyframeEasingLine_1.TimelineKeyframeEasingLine, { fromFrame: segment.fromFrame, toFrame: segment.toFrame, rowHeight: height, nodePathInfo: nodePathInfo, segmentIndex: segment.segmentIndex }, `${segment.segmentIndex}-${segment.fromFrame}-${segment.toFrame}`))), keyframes.map((keyframe) => (jsx_runtime_1.jsx(TimelineKeyframeDiamond_1.TimelineKeyframeDiamond, { frame: keyframe.frame, rowHeight: height, nodePathInfo: nodePathInfo }, keyframe.frame)))] })
|
|
53
58
|
] }));
|
|
54
59
|
};
|
|
55
60
|
exports.TimelineExpandedKeyframeRow = react_1.default.memo(TimelineExpandedKeyframeRowUnmemoized);
|
|
@@ -56,28 +56,28 @@ const separator = {
|
|
|
56
56
|
const TimelineExpandedSection = ({ sequence, validatedLocation, nodePathInfo, nestedDepth, keyframeDisplayOffset, }) => {
|
|
57
57
|
const { getIsExpanded } = (0, react_1.useContext)(ExpandedTracksProvider_1.ExpandedTracksGetterContext);
|
|
58
58
|
const { toggleTrack } = (0, react_1.useContext)(ExpandedTracksProvider_1.ExpandedTracksSetterContext);
|
|
59
|
-
const {
|
|
59
|
+
const { propStatuses: visualModePropStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModePropStatusesContext);
|
|
60
60
|
const { getDragOverrides, getEffectDragOverrides } = (0, react_1.useContext)(remotion_1.Internals.VisualModeDragOverridesContext);
|
|
61
61
|
const tree = (0, react_1.useMemo)(() => (0, timeline_layout_1.buildTimelineTree)({
|
|
62
62
|
sequence,
|
|
63
63
|
nodePathInfo,
|
|
64
64
|
getDragOverrides,
|
|
65
65
|
getEffectDragOverrides,
|
|
66
|
-
|
|
66
|
+
propStatuses: visualModePropStatuses,
|
|
67
67
|
}), [
|
|
68
68
|
sequence,
|
|
69
69
|
nodePathInfo,
|
|
70
70
|
getDragOverrides,
|
|
71
71
|
getEffectDragOverrides,
|
|
72
|
-
|
|
72
|
+
visualModePropStatuses,
|
|
73
73
|
]);
|
|
74
74
|
const flat = (0, react_1.useMemo)(() => (0, timeline_layout_1.flattenVisibleTreeNodes)({ nodes: tree, getIsExpanded }), [tree, getIsExpanded]);
|
|
75
75
|
const expandedHeight = (0, react_1.useMemo)(() => (0, timeline_layout_1.getExpandedTrackHeight)({
|
|
76
76
|
sequence,
|
|
77
77
|
nodePathInfo,
|
|
78
78
|
getIsExpanded,
|
|
79
|
-
|
|
80
|
-
}), [sequence, nodePathInfo, getIsExpanded,
|
|
79
|
+
propStatuses: visualModePropStatuses,
|
|
80
|
+
}), [sequence, nodePathInfo, getIsExpanded, visualModePropStatuses]);
|
|
81
81
|
const style = (0, react_1.useMemo)(() => {
|
|
82
82
|
return {
|
|
83
83
|
...expandedSectionBase,
|
|
@@ -14,6 +14,6 @@ const TimelineExpandedTrackKeyframesInner = ({ nodePathInfo, sequence, keyframeD
|
|
|
14
14
|
nodePathInfo,
|
|
15
15
|
keyframeDisplayOffset,
|
|
16
16
|
});
|
|
17
|
-
return (jsx_runtime_1.jsx("div", { style: { height: expandedHeight }, children: rows.map((row, index) => (jsx_runtime_1.jsx(TimelineExpandedKeyframeRow_1.TimelineExpandedKeyframeRow, { height: row.height, keyframes: row.keyframes, nodePathInfo: row.nodePathInfo, showSeparator: index > 0 }, row.rowKey))) }));
|
|
17
|
+
return (jsx_runtime_1.jsx("div", { style: { height: expandedHeight }, children: rows.map((row, index) => (jsx_runtime_1.jsx(TimelineExpandedKeyframeRow_1.TimelineExpandedKeyframeRow, { height: row.height, keyframes: row.keyframes, canEditEasing: row.canEditEasing, nodePathInfo: row.nodePathInfo, showSeparator: index > 0 }, row.rowKey))) }));
|
|
18
18
|
};
|
|
19
19
|
exports.TimelineExpandedTrackKeyframes = react_1.default.memo(TimelineExpandedTrackKeyframesInner);
|
|
@@ -36,12 +36,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.TimelineHeightContainer = void 0;
|
|
37
37
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
38
38
|
const react_1 = __importStar(require("react"));
|
|
39
|
+
const TimelineSelection_1 = require("./TimelineSelection");
|
|
39
40
|
const use_timeline_height_1 = require("./use-timeline-height");
|
|
40
41
|
const baseStyle = {
|
|
41
42
|
display: 'flex',
|
|
42
43
|
flex: 1,
|
|
43
44
|
minHeight: '100%',
|
|
44
45
|
overflowX: 'hidden',
|
|
46
|
+
backgroundColor: TimelineSelection_1.TIMELINE_BACKGROUND,
|
|
45
47
|
};
|
|
46
48
|
const TimelineHeightContainerInner = ({ shown, hasBeenCut, children }) => {
|
|
47
49
|
const height = (0, use_timeline_height_1.useTimelineHeight)({ shown, hasBeenCut });
|
|
@@ -3,63 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.TimelineItemStack = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const react_1 = require("react");
|
|
6
|
-
const client_id_1 = require("../../helpers/client-id");
|
|
7
6
|
const colors_1 = require("../../helpers/colors");
|
|
8
|
-
const get_git_menu_item_1 = require("../../helpers/get-git-menu-item");
|
|
9
|
-
const open_in_editor_1 = require("../../helpers/open-in-editor");
|
|
10
|
-
const layout_1 = require("../layout");
|
|
11
|
-
const NotificationCenter_1 = require("../Notifications/NotificationCenter");
|
|
12
|
-
const Spinner_1 = require("../Spinner");
|
|
13
|
-
const TimelineSelection_1 = require("./TimelineSelection");
|
|
14
7
|
const source_attribution_1 = require("./TimelineStack/source-attribution");
|
|
15
8
|
const TimelineItemStack = ({ originalLocation }) => {
|
|
16
|
-
const [hovered, setHovered] = (0, react_1.useState)(false);
|
|
17
|
-
const [opening, setOpening] = (0, react_1.useState)(false);
|
|
18
|
-
const connectionStatus = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx)
|
|
19
|
-
.previewServerState.type;
|
|
20
|
-
const openEditor = (0, react_1.useCallback)(async (location) => {
|
|
21
|
-
if (!window.remotion_editorName) {
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
|
-
setOpening(true);
|
|
25
|
-
try {
|
|
26
|
-
await (0, open_in_editor_1.openOriginalPositionInEditor)(location);
|
|
27
|
-
}
|
|
28
|
-
catch (err) {
|
|
29
|
-
(0, NotificationCenter_1.showNotification)(err.message, 2000);
|
|
30
|
-
}
|
|
31
|
-
finally {
|
|
32
|
-
setOpening(false);
|
|
33
|
-
}
|
|
34
|
-
}, []);
|
|
35
|
-
const canOpenInEditor = Boolean(window.remotion_editorName &&
|
|
36
|
-
connectionStatus === 'connected' &&
|
|
37
|
-
originalLocation);
|
|
38
|
-
const canOpenInGitHub = Boolean(window.remotion_gitSource && originalLocation);
|
|
39
|
-
const hoverable = !TimelineSelection_1.SELECTION_ENABLED && (canOpenInEditor || canOpenInGitHub);
|
|
40
|
-
const onClick = (0, react_1.useCallback)(() => {
|
|
41
|
-
if (!originalLocation) {
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
|
-
if (canOpenInEditor) {
|
|
45
|
-
openEditor(originalLocation);
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
if (canOpenInGitHub) {
|
|
49
|
-
window.open((0, get_git_menu_item_1.getGitRefUrl)(window.remotion_gitSource, originalLocation), '_blank');
|
|
50
|
-
}
|
|
51
|
-
}, [canOpenInEditor, canOpenInGitHub, openEditor, originalLocation]);
|
|
52
|
-
const onPointerEnter = (0, react_1.useCallback)(() => setHovered(true), []);
|
|
53
|
-
const onPointerLeave = (0, react_1.useCallback)(() => setHovered(false), []);
|
|
54
9
|
const style = (0, react_1.useMemo)(() => {
|
|
55
10
|
return {
|
|
56
11
|
fontSize: 12,
|
|
57
|
-
color:
|
|
58
|
-
? colors_1.VERY_LIGHT_TEXT
|
|
59
|
-
: hovered && hoverable
|
|
60
|
-
? colors_1.LIGHT_TEXT
|
|
61
|
-
: colors_1.VERY_LIGHT_TEXT,
|
|
62
|
-
cursor: hoverable ? 'pointer' : undefined,
|
|
12
|
+
color: colors_1.VERY_LIGHT_TEXT,
|
|
63
13
|
display: 'flex',
|
|
64
14
|
flexDirection: 'row',
|
|
65
15
|
alignItems: 'center',
|
|
@@ -70,13 +20,10 @@ const TimelineItemStack = ({ originalLocation }) => {
|
|
|
70
20
|
userSelect: 'none',
|
|
71
21
|
WebkitUserSelect: 'none',
|
|
72
22
|
};
|
|
73
|
-
}, [
|
|
23
|
+
}, []);
|
|
74
24
|
if (!originalLocation) {
|
|
75
25
|
return null;
|
|
76
26
|
}
|
|
77
|
-
return (jsx_runtime_1.
|
|
78
|
-
jsx_runtime_1.jsx("div", { onPointerEnter: hoverable ? onPointerEnter : undefined, onPointerLeave: hoverable ? onPointerLeave : undefined, onClick: hoverable ? onClick : undefined, style: style, children: (0, source_attribution_1.getOriginalSourceAttribution)(originalLocation) }), opening ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
79
|
-
jsx_runtime_1.jsx(layout_1.Spacing, { x: 0.5 }), jsx_runtime_1.jsx(Spinner_1.Spinner, { duration: 0.5, size: 12 })
|
|
80
|
-
] })) : null] }));
|
|
27
|
+
return (jsx_runtime_1.jsx("div", { style: style, children: (0, source_attribution_1.getOriginalSourceAttribution)(originalLocation) }));
|
|
81
28
|
};
|
|
82
29
|
exports.TimelineItemStack = TimelineItemStack;
|