@remotion/studio 4.0.484 → 4.0.485
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/ContextMenu.js +75 -1
- package/dist/components/CurrentComposition.js +3 -2
- package/dist/components/InlineCompositionName.d.ts +7 -0
- package/dist/components/InlineCompositionName.js +58 -0
- package/dist/components/InlineEditableTitle.d.ts +7 -0
- package/dist/components/InlineEditableTitle.js +129 -0
- package/dist/components/InspectorPanel/KeyframeInspector.js +1 -0
- package/dist/components/InspectorPanel/SequenceInspectorHeader.js +17 -30
- package/dist/components/InspectorPanel/styles.js +2 -2
- package/dist/components/InspectorSequenceSection.js +34 -1
- package/dist/components/Modals.js +1 -1
- package/dist/components/NewComposition/CodemodFooter.d.ts +7 -1
- package/dist/components/NewComposition/CodemodFooter.js +17 -12
- package/dist/components/NewComposition/DeleteComposition.js +7 -1
- package/dist/components/NewComposition/DeleteFolder.js +7 -1
- package/dist/components/NewComposition/DuplicateComposition.js +17 -10
- package/dist/components/NewComposition/InputAndValidationContainer.d.ts +3 -0
- package/dist/components/NewComposition/InputAndValidationContainer.js +15 -0
- package/dist/components/NewComposition/NewCompDuration.js +7 -6
- package/dist/components/NewComposition/NewComposition.d.ts +5 -1
- package/dist/components/NewComposition/NewComposition.js +29 -86
- package/dist/components/NewComposition/RenameComposition.js +13 -14
- package/dist/components/NewComposition/RenameFolder.js +9 -2
- package/dist/components/NewComposition/RenameStaticFile.js +2 -1
- package/dist/components/NewComposition/ValidationMessage.js +9 -1
- package/dist/components/OptionsPanel.d.ts +0 -3
- package/dist/components/OptionsPanel.js +7 -3
- package/dist/components/RenderModal/ServerRenderModal.js +4 -3
- package/dist/components/RenderModal/WebRenderModal.js +2 -1
- package/dist/components/SelectedOutlineElement.js +45 -3
- package/dist/components/SelectedOutlineOverlay.d.ts +1 -1
- package/dist/components/SelectedOutlineOverlay.js +15 -3
- package/dist/components/Timeline/TimelineDeleteKeybindings.js +34 -1
- package/dist/components/Timeline/TimelineExpandedSection.js +1 -0
- package/dist/components/Timeline/TimelineInOutPointerHandle.js +2 -1
- package/dist/components/Timeline/TimelineKeyframeControls.d.ts +1 -1
- package/dist/components/Timeline/TimelineKeyframeControls.js +1 -0
- package/dist/components/Timeline/TimelinePrimitiveFieldValue.js +4 -0
- package/dist/components/Timeline/TimelineSelection.js +1 -0
- package/dist/components/Timeline/TimelineSequenceItem.js +19 -101
- package/dist/components/Timeline/TimelineSequencePropItem.js +6 -3
- package/dist/components/Timeline/TimelineTextContentField.d.ts +12 -0
- package/dist/components/Timeline/TimelineTextContentField.js +100 -0
- package/dist/components/Timeline/TimelineWidthProvider.js +18 -3
- package/dist/components/Timeline/focus-inspector-field.d.ts +16 -0
- package/dist/components/Timeline/focus-inspector-field.js +49 -0
- package/dist/components/Timeline/split-selected-timeline-item.d.ts +38 -0
- package/dist/components/Timeline/split-selected-timeline-item.js +156 -0
- package/dist/components/Timeline/timeline-field-display-utils.js +2 -0
- package/dist/components/Timeline/use-expanded-track-keyframe-rows.js +1 -0
- package/dist/components/Timeline/use-rename-sequence.d.ts +30 -0
- package/dist/components/Timeline/use-rename-sequence.js +115 -0
- package/dist/components/Timeline/use-timeline-expanded-tree.d.ts +2 -1
- package/dist/components/Timeline/use-timeline-expanded-tree.js +3 -1
- package/dist/components/Timeline/use-timeline-height.js +1 -0
- package/dist/components/composition-menu-items.js +3 -0
- package/dist/components/folder-menu-items.js +20 -0
- package/dist/components/options-sidebar-tabs.d.ts +4 -0
- package/dist/components/options-sidebar-tabs.js +5 -0
- package/dist/components/selected-outline-types.d.ts +6 -1
- package/dist/esm/{chunk-9erwh79m.js → chunk-103pp4n7.js} +6734 -5683
- package/dist/esm/internals.mjs +6734 -5683
- package/dist/esm/previewEntry.mjs +6649 -5598
- package/dist/esm/renderEntry.mjs +1 -1
- package/dist/helpers/render-codec-label.d.ts +1 -1
- package/dist/helpers/timeline-layout.d.ts +4 -3
- package/dist/helpers/timeline-layout.js +3 -1
- package/dist/helpers/use-create-composition.d.ts +35 -0
- package/dist/helpers/use-create-composition.js +111 -0
- package/dist/helpers/use-rename-composition.d.ts +16 -0
- package/dist/helpers/use-rename-composition.js +49 -0
- package/dist/state/modals.d.ts +3 -0
- package/dist/state/timeline-zoom.js +17 -14
- package/dist/state/z-index.d.ts +1 -0
- package/dist/state/z-index.js +11 -2
- package/package.json +12 -12
|
@@ -36,6 +36,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.SelectedOutlineElement = void 0;
|
|
37
37
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
38
38
|
const react_1 = __importStar(require("react"));
|
|
39
|
+
const react_dom_1 = require("react-dom");
|
|
39
40
|
const remotion_1 = require("remotion");
|
|
40
41
|
const no_react_1 = require("remotion/no-react");
|
|
41
42
|
const client_id_1 = require("../helpers/client-id");
|
|
@@ -49,6 +50,7 @@ const ContextMenu_1 = require("./ContextMenu");
|
|
|
49
50
|
const effect_drag_and_drop_1 = require("./effect-drag-and-drop");
|
|
50
51
|
const ForceSpecificCursor_1 = require("./ForceSpecificCursor");
|
|
51
52
|
const NotificationCenter_1 = require("./Notifications/NotificationCenter");
|
|
53
|
+
const options_sidebar_tabs_1 = require("./options-sidebar-tabs");
|
|
52
54
|
const selected_outline_drag_1 = require("./selected-outline-drag");
|
|
53
55
|
const selected_outline_measurement_1 = require("./selected-outline-measurement");
|
|
54
56
|
const selected_outline_types_1 = require("./selected-outline-types");
|
|
@@ -56,6 +58,7 @@ const selected_outline_uv_1 = require("./selected-outline-uv");
|
|
|
56
58
|
const call_add_keyframe_1 = require("./Timeline/call-add-keyframe");
|
|
57
59
|
const disable_sequence_interactivity_1 = require("./Timeline/disable-sequence-interactivity");
|
|
58
60
|
const duplicate_selected_timeline_item_1 = require("./Timeline/duplicate-selected-timeline-item");
|
|
61
|
+
const focus_inspector_field_1 = require("./Timeline/focus-inspector-field");
|
|
59
62
|
const get_sequence_context_menu_items_1 = require("./Timeline/get-sequence-context-menu-items");
|
|
60
63
|
const save_sequence_prop_1 = require("./Timeline/save-sequence-prop");
|
|
61
64
|
const timeline_asset_link_1 = require("./Timeline/timeline-asset-link");
|
|
@@ -310,7 +313,7 @@ const SelectedOutlineTransformOriginHandle = ({ outline, onDraggingChange, targe
|
|
|
310
313
|
jsx_runtime_1.jsx("circle", { cx: position.x, cy: position.y, r: 4, stroke: colors_1.BLUE, fill: "none", strokeWidth: 2, vectorEffect: "non-scaling-stroke" }), jsx_runtime_1.jsx("line", { x1: position.x - 8, y1: position.y, x2: position.x + 8, y2: position.y, stroke: colors_1.BLUE, strokeWidth: 2, vectorEffect: "non-scaling-stroke" }), jsx_runtime_1.jsx("line", { x1: position.x, y1: position.y - 8, x2: position.x, y2: position.y + 8, stroke: colors_1.BLUE, strokeWidth: 2, vectorEffect: "non-scaling-stroke" })
|
|
311
314
|
] }));
|
|
312
315
|
};
|
|
313
|
-
const SelectedOutlinePolygon = ({ allDragTargets, contextMenuValues, dragging, hovered, onContextMenuOpen, outline, onDraggingChange, onHoverChange, onSelect, scale, target, }) => {
|
|
316
|
+
const SelectedOutlinePolygon = ({ allDragTargets, contextMenuValues, dragging, hovered, onContextMenuOpen, outline, onDraggingChange, onHoverChange, onSelect, onTextEditStart, scale, target, }) => {
|
|
314
317
|
var _a, _b, _c, _d;
|
|
315
318
|
const { getDragOverrides } = (0, react_1.useContext)(remotion_1.Internals.VisualModeDragOverridesContext);
|
|
316
319
|
const { setPropStatuses, setDragOverrides, clearDragOverrides } = (0, react_1.useContext)(remotion_1.Internals.VisualModeSettersContext);
|
|
@@ -339,6 +342,9 @@ const SelectedOutlinePolygon = ({ allDragTargets, contextMenuValues, dragging, h
|
|
|
339
342
|
if (drag === null || interaction.shiftKey || interaction.toggleKey) {
|
|
340
343
|
return;
|
|
341
344
|
}
|
|
345
|
+
if ((0, focus_inspector_field_1.commitPendingInspectorFields)()) {
|
|
346
|
+
return;
|
|
347
|
+
}
|
|
342
348
|
const startPointerX = event.clientX;
|
|
343
349
|
const startPointerY = event.clientY;
|
|
344
350
|
const dragStates = (0, selected_outline_drag_1.getSelectedOutlineDragStates)({
|
|
@@ -478,6 +484,14 @@ const SelectedOutlinePolygon = ({ allDragTargets, contextMenuValues, dragging, h
|
|
|
478
484
|
setDragOverrides,
|
|
479
485
|
target,
|
|
480
486
|
]);
|
|
487
|
+
const onDoubleClick = react_1.default.useCallback((event) => {
|
|
488
|
+
if (target === undefined) {
|
|
489
|
+
return;
|
|
490
|
+
}
|
|
491
|
+
event.preventDefault();
|
|
492
|
+
event.stopPropagation();
|
|
493
|
+
onTextEditStart(target);
|
|
494
|
+
}, [onTextEditStart, target]);
|
|
481
495
|
const onEffectDragOver = react_1.default.useCallback((event) => {
|
|
482
496
|
if (effectDrop === null || !(0, effect_drag_and_drop_1.hasEffectDragType)(event.dataTransfer)) {
|
|
483
497
|
return;
|
|
@@ -526,7 +540,7 @@ const SelectedOutlinePolygon = ({ allDragTargets, contextMenuValues, dragging, h
|
|
|
526
540
|
if (!dragging) {
|
|
527
541
|
onHoverChange(null);
|
|
528
542
|
}
|
|
529
|
-
}, onPointerDown: onPointerDown, onDragOver: effectDrop === null ? undefined : onEffectDragOver, onDragLeave: effectDrop === null ? undefined : onEffectDragLeave, onDrop: effectDrop === null ? undefined : onEffectDrop }), jsx_runtime_1.jsx(ContextMenu_1.ContextMenuForTarget, { triggerRef: polygonRef, values: [...contextMenuValues], onOpen: onContextMenuOpen })
|
|
543
|
+
}, onPointerDown: onPointerDown, onDoubleClick: onDoubleClick, onDragOver: effectDrop === null ? undefined : onEffectDragOver, onDragLeave: effectDrop === null ? undefined : onEffectDragLeave, onDrop: effectDrop === null ? undefined : onEffectDrop }), jsx_runtime_1.jsx(ContextMenu_1.ContextMenuForTarget, { triggerRef: polygonRef, values: [...contextMenuValues], onOpen: onContextMenuOpen })
|
|
530
544
|
] }));
|
|
531
545
|
};
|
|
532
546
|
const SelectedOutlineScaleEdgeLine = ({ allScaleDragTargets, contextMenuValues, dragging, edge, outline, onDraggingChange, onContextMenuOpen, onHoverChange, onSelect, target, }) => {
|
|
@@ -554,6 +568,9 @@ const SelectedOutlineScaleEdgeLine = ({ allScaleDragTargets, contextMenuValues,
|
|
|
554
568
|
if (interaction.shiftKey || interaction.toggleKey) {
|
|
555
569
|
return;
|
|
556
570
|
}
|
|
571
|
+
if ((0, focus_inspector_field_1.commitPendingInspectorFields)()) {
|
|
572
|
+
return;
|
|
573
|
+
}
|
|
557
574
|
const startPointer = { x: event.clientX, y: event.clientY };
|
|
558
575
|
const dragStates = (0, selected_outline_drag_1.getSelectedOutlineScaleDragStates)({
|
|
559
576
|
dragTargets: selected ? allScaleDragTargets : [scaleDrag],
|
|
@@ -728,6 +745,9 @@ const SelectedOutlineRotationCornerHandle = ({ allRotationDragTargets, contextMe
|
|
|
728
745
|
if (interaction.toggleKey) {
|
|
729
746
|
return;
|
|
730
747
|
}
|
|
748
|
+
if ((0, focus_inspector_field_1.commitPendingInspectorFields)()) {
|
|
749
|
+
return;
|
|
750
|
+
}
|
|
731
751
|
const startPointer = { x: event.clientX, y: event.clientY };
|
|
732
752
|
const svgRect = svg.getBoundingClientRect();
|
|
733
753
|
const center = svgPointToClientPoint((0, selected_outline_measurement_1.getSelectedOutlineRotationPivot)({
|
|
@@ -916,6 +936,28 @@ const SelectedOutlineElement = ({ allDragTargets, allRotationDragTargets, allSca
|
|
|
916
936
|
const confirm = (0, ConfirmationDialog_1.useConfirmationDialog)();
|
|
917
937
|
const selectAsset = (0, use_select_asset_1.useSelectAsset)();
|
|
918
938
|
const { setSelectedModal } = (0, react_1.useContext)(modals_1.ModalsContext);
|
|
939
|
+
const onTextEditStart = react_1.default.useCallback((editTarget) => {
|
|
940
|
+
const { textEdit } = editTarget;
|
|
941
|
+
if (textEdit === null) {
|
|
942
|
+
return;
|
|
943
|
+
}
|
|
944
|
+
if (textEdit.propStatus.status !== 'static' ||
|
|
945
|
+
typeof textEdit.propStatus.codeValue !== 'string') {
|
|
946
|
+
(0, NotificationCenter_1.showNotification)('This text is computed and cannot be edited visually', 3000);
|
|
947
|
+
return;
|
|
948
|
+
}
|
|
949
|
+
(0, react_dom_1.flushSync)(() => {
|
|
950
|
+
var _a;
|
|
951
|
+
if (!editTarget.selected) {
|
|
952
|
+
onSelect(editTarget.selection, { shiftKey: false, toggleKey: false });
|
|
953
|
+
}
|
|
954
|
+
(_a = options_sidebar_tabs_1.optionsSidebarTabs.current) === null || _a === void 0 ? void 0 : _a.selectInspectorPanel();
|
|
955
|
+
});
|
|
956
|
+
(0, focus_inspector_field_1.requestFocusInspectorField)({
|
|
957
|
+
fieldKey: 'children',
|
|
958
|
+
nodePath: textEdit.nodePath,
|
|
959
|
+
});
|
|
960
|
+
}, [onSelect]);
|
|
919
961
|
const onContextMenuOpen = react_1.default.useCallback(async () => {
|
|
920
962
|
if (target === undefined || previewServerState.type !== 'connected') {
|
|
921
963
|
return false;
|
|
@@ -1071,7 +1113,7 @@ const SelectedOutlineElement = ({ allDragTargets, allRotationDragTargets, allSca
|
|
|
1071
1113
|
updateResolvedStackTrace,
|
|
1072
1114
|
]);
|
|
1073
1115
|
return (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
1074
|
-
jsx_runtime_1.jsx(SelectedOutlinePolygon, { allDragTargets: allDragTargets, contextMenuValues: emptyContextMenuValues, dragging: dragging, hovered: hovered, outline: outline, onContextMenuOpen: onContextMenuOpen, onDraggingChange: onDraggingChange, onHoverChange: onHoverChange, onSelect: onSelect, scale: scale, target: target }), (target === null || target === void 0 ? void 0 : target.containsSelection) || hovered
|
|
1116
|
+
jsx_runtime_1.jsx(SelectedOutlinePolygon, { allDragTargets: allDragTargets, contextMenuValues: emptyContextMenuValues, dragging: dragging, hovered: hovered, outline: outline, onContextMenuOpen: onContextMenuOpen, onDraggingChange: onDraggingChange, onHoverChange: onHoverChange, onSelect: onSelect, onTextEditStart: onTextEditStart, scale: scale, target: target }), (target === null || target === void 0 ? void 0 : target.containsSelection) || hovered
|
|
1075
1117
|
? ['top', 'right', 'bottom', 'left'].map((edge) => (jsx_runtime_1.jsx(SelectedOutlineScaleEdgeLine, { allScaleDragTargets: allScaleDragTargets, contextMenuValues: emptyContextMenuValues, dragging: dragging, edge: edge, outline: outline, onContextMenuOpen: onContextMenuOpen, onDraggingChange: onDraggingChange, onHoverChange: onHoverChange, onSelect: onSelect, target: target }, edge)))
|
|
1076
1118
|
: null, (target === null || target === void 0 ? void 0 : target.containsSelection) || hovered
|
|
1077
1119
|
? ['top-left', 'top-right', 'bottom-right', 'bottom-left'].map((corner) => (jsx_runtime_1.jsx(SelectedOutlineRotationCornerHandle, { allRotationDragTargets: allRotationDragTargets, contextMenuValues: emptyContextMenuValues, corner: corner, dragging: dragging, outline: outline, onContextMenuOpen: onContextMenuOpen, onDraggingChange: onDraggingChange, onHoverChange: onHoverChange, onSelect: onSelect, target: target }, corner)))
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { type SelectedOutline } from './selected-outline-geometry';
|
|
3
3
|
import { type SelectedOutlineTarget } from './selected-outline-types';
|
|
4
|
-
export { applySelectedOutlineDragAxisLock, applySelectedOutlineTransformOriginAxisLock, compensateTranslateForTransformOrigin, getSelectedOutlineActiveSchema, getSelectedOutlineDragChanges, getSelectedOutlineDragValues, getSelectedOutlineKeyboardNudgeDelta, getSelectedOutlineKeyboardNudgeDeltas, getSelectedOutlineRotationDragChanges, getSelectedOutlineRotationDragStates, getSelectedOutlineRotationDragValues, getSelectedOutlineScaleDragChanges, getSelectedOutlineScaleDragStates, getSelectedOutlineScaleDragValues, getSelectedOutlineScaleEdgeInfo, getSelectedOutlineTransformOriginLockedAxis, isSelectedOutlineDragPastThreshold,
|
|
4
|
+
export { applySelectedOutlineDragAxisLock, applySelectedOutlineTransformOriginAxisLock, compensateTranslateForTransformOrigin, getSelectedOutlineActiveSchema, getSelectedOutlineDragChanges, getSelectedOutlineDragValues, getSelectedOutlineKeyboardNudgeDelta, getSelectedOutlineKeyboardNudgeDeltas, getSelectedOutlineRotationDragChanges, getSelectedOutlineRotationDragStates, getSelectedOutlineRotationDragValues, getSelectedOutlineScaleDragChanges, getSelectedOutlineScaleDragStates, getSelectedOutlineScaleDragValues, getSelectedOutlineScaleEdgeInfo, getSelectedOutlineTransformOriginLockedAxis, isSelectedOutlineDragPastThreshold, selectedOutlineTransformOriginSnapThresholdPx, selectedOutlineUvSnapThresholdPx, snapSelectedOutlineRotationDeltaDegrees, snapSelectedOutlineTransformOriginUv, snapSelectedOutlineUv, } from './selected-outline-drag';
|
|
5
5
|
export { getOutlineSelectionInteraction, getSelectedEffectFieldsBySequenceKey, getSelectedOutlineRotationCornerInfo, getSelectedOutlineRotationDeltaDegrees, getSelectedOutlineRotationPivot, getSelectedSequenceKeys, getSequencesWithSelectableOutlines, getTransformedSvgViewportPoints, } from './selected-outline-measurement';
|
|
6
6
|
export { selectedOutlineDragThresholdPx } from './selected-outline-types';
|
|
7
7
|
export type { SelectedOutlineDragState, SelectedOutlineRotationDragState, SelectedOutlineScaleDragState, } from './selected-outline-types';
|
|
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.SelectedOutlineOverlay = exports.orderOutlinesForRendering = exports.selectedOutlineDragThresholdPx = exports.getTransformedSvgViewportPoints = exports.getSequencesWithSelectableOutlines = exports.getSelectedSequenceKeys = exports.getSelectedOutlineRotationPivot = exports.getSelectedOutlineRotationDeltaDegrees = exports.getSelectedOutlineRotationCornerInfo = exports.getSelectedEffectFieldsBySequenceKey = exports.getOutlineSelectionInteraction = exports.
|
|
36
|
+
exports.SelectedOutlineOverlay = exports.orderOutlinesForRendering = exports.selectedOutlineDragThresholdPx = exports.getTransformedSvgViewportPoints = exports.getSequencesWithSelectableOutlines = exports.getSelectedSequenceKeys = exports.getSelectedOutlineRotationPivot = exports.getSelectedOutlineRotationDeltaDegrees = exports.getSelectedOutlineRotationCornerInfo = exports.getSelectedEffectFieldsBySequenceKey = exports.getOutlineSelectionInteraction = exports.snapSelectedOutlineUv = exports.snapSelectedOutlineTransformOriginUv = exports.snapSelectedOutlineRotationDeltaDegrees = exports.selectedOutlineUvSnapThresholdPx = exports.selectedOutlineTransformOriginSnapThresholdPx = exports.isSelectedOutlineDragPastThreshold = exports.getSelectedOutlineTransformOriginLockedAxis = exports.getSelectedOutlineScaleEdgeInfo = exports.getSelectedOutlineScaleDragValues = exports.getSelectedOutlineScaleDragStates = exports.getSelectedOutlineScaleDragChanges = exports.getSelectedOutlineRotationDragValues = exports.getSelectedOutlineRotationDragStates = exports.getSelectedOutlineRotationDragChanges = exports.getSelectedOutlineKeyboardNudgeDeltas = exports.getSelectedOutlineKeyboardNudgeDelta = exports.getSelectedOutlineDragValues = exports.getSelectedOutlineDragChanges = exports.getSelectedOutlineActiveSchema = exports.compensateTranslateForTransformOrigin = exports.applySelectedOutlineTransformOriginAxisLock = exports.applySelectedOutlineDragAxisLock = void 0;
|
|
37
37
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
38
38
|
const player_1 = require("@remotion/player");
|
|
39
39
|
const react_1 = __importStar(require("react"));
|
|
@@ -73,11 +73,11 @@ Object.defineProperty(exports, "getSelectedOutlineScaleDragValues", { enumerable
|
|
|
73
73
|
Object.defineProperty(exports, "getSelectedOutlineScaleEdgeInfo", { enumerable: true, get: function () { return selected_outline_drag_2.getSelectedOutlineScaleEdgeInfo; } });
|
|
74
74
|
Object.defineProperty(exports, "getSelectedOutlineTransformOriginLockedAxis", { enumerable: true, get: function () { return selected_outline_drag_2.getSelectedOutlineTransformOriginLockedAxis; } });
|
|
75
75
|
Object.defineProperty(exports, "isSelectedOutlineDragPastThreshold", { enumerable: true, get: function () { return selected_outline_drag_2.isSelectedOutlineDragPastThreshold; } });
|
|
76
|
-
Object.defineProperty(exports, "selectedOutlineUvSnapThresholdPx", { enumerable: true, get: function () { return selected_outline_drag_2.selectedOutlineUvSnapThresholdPx; } });
|
|
77
76
|
Object.defineProperty(exports, "selectedOutlineTransformOriginSnapThresholdPx", { enumerable: true, get: function () { return selected_outline_drag_2.selectedOutlineTransformOriginSnapThresholdPx; } });
|
|
77
|
+
Object.defineProperty(exports, "selectedOutlineUvSnapThresholdPx", { enumerable: true, get: function () { return selected_outline_drag_2.selectedOutlineUvSnapThresholdPx; } });
|
|
78
78
|
Object.defineProperty(exports, "snapSelectedOutlineRotationDeltaDegrees", { enumerable: true, get: function () { return selected_outline_drag_2.snapSelectedOutlineRotationDeltaDegrees; } });
|
|
79
|
-
Object.defineProperty(exports, "snapSelectedOutlineUv", { enumerable: true, get: function () { return selected_outline_drag_2.snapSelectedOutlineUv; } });
|
|
80
79
|
Object.defineProperty(exports, "snapSelectedOutlineTransformOriginUv", { enumerable: true, get: function () { return selected_outline_drag_2.snapSelectedOutlineTransformOriginUv; } });
|
|
80
|
+
Object.defineProperty(exports, "snapSelectedOutlineUv", { enumerable: true, get: function () { return selected_outline_drag_2.snapSelectedOutlineUv; } });
|
|
81
81
|
const selected_outline_measurement_2 = require("./selected-outline-measurement");
|
|
82
82
|
Object.defineProperty(exports, "getOutlineSelectionInteraction", { enumerable: true, get: function () { return selected_outline_measurement_2.getOutlineSelectionInteraction; } });
|
|
83
83
|
Object.defineProperty(exports, "getSelectedEffectFieldsBySequenceKey", { enumerable: true, get: function () { return selected_outline_measurement_2.getSelectedEffectFieldsBySequenceKey; } });
|
|
@@ -176,6 +176,8 @@ const SelectedOutlineOverlay = ({ scale, translationX, translationY }) => {
|
|
|
176
176
|
const rotationPropStatus = nodePropStatuses === null || nodePropStatuses === void 0 ? void 0 : nodePropStatuses[selected_outline_types_1.rotateFieldKey];
|
|
177
177
|
const transformOriginFieldSchema = activeSchema === null || activeSchema === void 0 ? void 0 : activeSchema[selected_outline_types_1.transformOriginFieldKey];
|
|
178
178
|
const transformOriginPropStatus = nodePropStatuses === null || nodePropStatuses === void 0 ? void 0 : nodePropStatuses[selected_outline_types_1.transformOriginFieldKey];
|
|
179
|
+
const textContentFieldSchema = activeSchema === null || activeSchema === void 0 ? void 0 : activeSchema.children;
|
|
180
|
+
const textContentPropStatus = nodePropStatuses === null || nodePropStatuses === void 0 ? void 0 : nodePropStatuses.children;
|
|
179
181
|
const transformOriginValueForRotation = (transformOriginFieldSchema === null || transformOriginFieldSchema === void 0 ? void 0 : transformOriginFieldSchema.type) === 'transform-origin' &&
|
|
180
182
|
((transformOriginPropStatus === null || transformOriginPropStatus === void 0 ? void 0 : transformOriginPropStatus.status) === 'static' ||
|
|
181
183
|
(transformOriginPropStatus === null || transformOriginPropStatus === void 0 ? void 0 : transformOriginPropStatus.status) === 'keyframed')
|
|
@@ -228,6 +230,10 @@ const SelectedOutlineOverlay = ({ scale, translationX, translationY }) => {
|
|
|
228
230
|
canTransformOriginTranslateStatus;
|
|
229
231
|
const canDropEffect = previewServerState.type === 'connected' &&
|
|
230
232
|
(controls === null || controls === void 0 ? void 0 : controls.supportsEffects) === true;
|
|
233
|
+
const canTextEdit = previewServerState.type === 'connected' &&
|
|
234
|
+
controls !== null &&
|
|
235
|
+
(textContentFieldSchema === null || textContentFieldSchema === void 0 ? void 0 : textContentFieldSchema.type) === 'text-content' &&
|
|
236
|
+
textContentPropStatus !== undefined;
|
|
231
237
|
return {
|
|
232
238
|
key,
|
|
233
239
|
containsSelection,
|
|
@@ -342,6 +348,12 @@ const SelectedOutlineOverlay = ({ scale, translationX, translationY }) => {
|
|
|
342
348
|
})) !== null && _f !== void 0 ? _f : fieldSchema.default),
|
|
343
349
|
}
|
|
344
350
|
: null,
|
|
351
|
+
textEdit: canTextEdit
|
|
352
|
+
? {
|
|
353
|
+
nodePath,
|
|
354
|
+
propStatus: textContentPropStatus,
|
|
355
|
+
}
|
|
356
|
+
: null,
|
|
345
357
|
uvHandles: containsSelection
|
|
346
358
|
? (0, selected_outline_uv_1.getSelectedUvHandles)({
|
|
347
359
|
propStatuses,
|
|
@@ -11,6 +11,7 @@ const ConfirmationDialog_1 = require("../ConfirmationDialog");
|
|
|
11
11
|
const delete_selected_timeline_item_1 = require("./delete-selected-timeline-item");
|
|
12
12
|
const duplicate_selected_timeline_item_1 = require("./duplicate-selected-timeline-item");
|
|
13
13
|
const reset_selected_timeline_props_1 = require("./reset-selected-timeline-props");
|
|
14
|
+
const split_selected_timeline_item_1 = require("./split-selected-timeline-item");
|
|
14
15
|
const TimelineSelection_1 = require("./TimelineSelection");
|
|
15
16
|
const update_selected_easing_1 = require("./update-selected-easing");
|
|
16
17
|
const TimelineDeleteKeybindings = () => {
|
|
@@ -128,7 +129,10 @@ const TimelineDeleteKeybindings = () => {
|
|
|
128
129
|
const duplicate = keybindings.registerKeybinding({
|
|
129
130
|
event: 'keydown',
|
|
130
131
|
key: 'd',
|
|
131
|
-
callback: () => {
|
|
132
|
+
callback: (event) => {
|
|
133
|
+
if (!(0, split_selected_timeline_item_1.shouldHandleTimelineDuplicateShortcut)(event)) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
132
136
|
const { selectedItems } = currentSelection.current;
|
|
133
137
|
if (selectedItems.length === 0) {
|
|
134
138
|
return;
|
|
@@ -147,10 +151,39 @@ const TimelineDeleteKeybindings = () => {
|
|
|
147
151
|
triggerIfInputFieldFocused: false,
|
|
148
152
|
keepRegisteredWhenNotHighestContext: false,
|
|
149
153
|
});
|
|
154
|
+
const split = keybindings.registerKeybinding({
|
|
155
|
+
event: 'keydown',
|
|
156
|
+
key: 'd',
|
|
157
|
+
callback: (event) => {
|
|
158
|
+
if (!(0, split_selected_timeline_item_1.shouldHandleTimelineSplitShortcut)(event)) {
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
const { selectedItems } = currentSelection.current;
|
|
162
|
+
if (selectedItems.length === 0) {
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
const splitPromise = (0, split_selected_timeline_item_1.splitSelectedTimelineItems)({
|
|
166
|
+
selections: selectedItems,
|
|
167
|
+
sequences: sequencesRef.current,
|
|
168
|
+
overrideIdsToNodePaths: overrideIdToNodePathMappings,
|
|
169
|
+
propStatuses: propStatusesRef.current,
|
|
170
|
+
splitFrame: timelinePositionRef.current,
|
|
171
|
+
});
|
|
172
|
+
if (splitPromise === null) {
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
splitPromise.catch(() => undefined);
|
|
176
|
+
},
|
|
177
|
+
commandCtrlKey: true,
|
|
178
|
+
preventDefault: true,
|
|
179
|
+
triggerIfInputFieldFocused: false,
|
|
180
|
+
keepRegisteredWhenNotHighestContext: false,
|
|
181
|
+
});
|
|
150
182
|
return () => {
|
|
151
183
|
backspace.unregister();
|
|
152
184
|
deleteKey.unregister();
|
|
153
185
|
duplicate.unregister();
|
|
186
|
+
split.unregister();
|
|
154
187
|
};
|
|
155
188
|
}, [
|
|
156
189
|
canSelect,
|
|
@@ -56,6 +56,7 @@ const TimelineExpandedSection = ({ sequence, validatedLocation, nodePathInfo, ne
|
|
|
56
56
|
const { filteredTree, getIsExpanded, toggleTrack } = (0, use_timeline_expanded_tree_1.useTimelineExpandedTree)({
|
|
57
57
|
sequence,
|
|
58
58
|
nodePathInfo,
|
|
59
|
+
includeTextContent: false,
|
|
59
60
|
});
|
|
60
61
|
const flat = (0, react_1.useMemo)(() => (0, timeline_layout_1.flattenVisibleTreeNodes)({ nodes: filteredTree, getIsExpanded }), [filteredTree, getIsExpanded]);
|
|
61
62
|
const expandedHeight = (0, react_1.useMemo)(() => {
|
|
@@ -6,6 +6,7 @@ const react_1 = require("react");
|
|
|
6
6
|
const remotion_1 = require("remotion");
|
|
7
7
|
const colors_1 = require("../../helpers/colors");
|
|
8
8
|
const get_left_of_timeline_slider_1 = require("../../helpers/get-left-of-timeline-slider");
|
|
9
|
+
const TimelineSelection_1 = require("./TimelineSelection");
|
|
9
10
|
const TimelineWidthProvider_1 = require("./TimelineWidthProvider");
|
|
10
11
|
const line = {
|
|
11
12
|
height: '100%',
|
|
@@ -30,7 +31,7 @@ const InnerTimelineInOutPointerHandle = ({ atFrame, dragging, onPointerDown, tim
|
|
|
30
31
|
top: 0,
|
|
31
32
|
};
|
|
32
33
|
}, [atFrame, dragging, timelineWidth, videoConfig.durationInFrames]);
|
|
33
|
-
return (jsx_runtime_1.jsx("div", { ref: type === 'in' ? exports.inPointerHandle : exports.outPointerHandle, style: style, onPointerDown: onPointerDown }));
|
|
34
|
+
return (jsx_runtime_1.jsx("div", { ref: type === 'in' ? exports.inPointerHandle : exports.outPointerHandle, style: style, onPointerDown: onPointerDown, [TimelineSelection_1.TIMELINE_SCRUBBER_ATTR]: true }));
|
|
34
35
|
};
|
|
35
36
|
const TimelineInOutPointerHandle = ({ dragging, onPointerDown, type, atFrame, }) => {
|
|
36
37
|
const timelineWidth = (0, react_1.useContext)(TimelineWidthProvider_1.TimelineWidthContext);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type { CanUpdateSequencePropStatus, DragOverrideValue,
|
|
2
|
+
import type { CanUpdateSequencePropStatus, DragOverrideValue, InteractivitySchema, SequencePropsSubscriptionKey } 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, }: {
|
|
@@ -113,6 +113,7 @@ const resolveKeyframeControlTarget = ({ nodePathInfo, tracks, propStatuses, getD
|
|
|
113
113
|
getDragOverrides,
|
|
114
114
|
getEffectDragOverrides,
|
|
115
115
|
propStatuses,
|
|
116
|
+
includeTextContent: false,
|
|
116
117
|
});
|
|
117
118
|
const fieldNode = findFieldNode(tree, (0, timeline_node_path_key_1.timelineNodePathInfoToKey)(nodePathInfo));
|
|
118
119
|
if (fieldNode === null || fieldNode.field === null) {
|
|
@@ -8,6 +8,7 @@ const TimelineEnumField_1 = require("./TimelineEnumField");
|
|
|
8
8
|
const TimelineNumberField_1 = require("./TimelineNumberField");
|
|
9
9
|
const TimelineRotationField_1 = require("./TimelineRotationField");
|
|
10
10
|
const TimelineScaleField_1 = require("./TimelineScaleField");
|
|
11
|
+
const TimelineTextContentField_1 = require("./TimelineTextContentField");
|
|
11
12
|
const TimelineTransformOriginField_1 = require("./TimelineTransformOriginField");
|
|
12
13
|
const TimelineTranslateField_1 = require("./TimelineTranslateField");
|
|
13
14
|
const TimelineUvCoordinateField_1 = require("./TimelineUvCoordinateField");
|
|
@@ -52,6 +53,9 @@ const TimelinePrimitiveFieldValue = ({ field, onSave, onDragValueChange, onDragE
|
|
|
52
53
|
if (field.typeName === 'enum') {
|
|
53
54
|
return (jsx_runtime_1.jsx("span", { style: inlineWrapper, children: jsx_runtime_1.jsx(TimelineEnumField_1.TimelineEnumField, { effectiveValue: effectiveValue, field: field, onDragEnd: onDragEnd, onDragValueChange: onDragValueChange, onSave: onSave, propStatus: propStatus }) }));
|
|
54
55
|
}
|
|
56
|
+
if (field.typeName === 'text-content') {
|
|
57
|
+
return (jsx_runtime_1.jsx("span", { style: inlineWrapper, children: jsx_runtime_1.jsx(TimelineTextContentField_1.TimelineTextContentField, { effectiveValue: effectiveValue, field: field, nodePath: scaleLockNodePath, onDragEnd: onDragEnd, onDragValueChange: onDragValueChange, onSave: onSave, propStatus: propStatus }) }));
|
|
58
|
+
}
|
|
55
59
|
throw new Error(`Unsupported field type: ${field.typeName}`);
|
|
56
60
|
};
|
|
57
61
|
exports.TimelinePrimitiveFieldValue = TimelinePrimitiveFieldValue;
|
|
@@ -404,6 +404,7 @@ const getSelectableTimelineItems = ({ getDragOverrides, getEffectDragOverrides,
|
|
|
404
404
|
getDragOverrides,
|
|
405
405
|
getEffectDragOverrides,
|
|
406
406
|
propStatuses,
|
|
407
|
+
includeTextContent: false,
|
|
407
408
|
});
|
|
408
409
|
const filteredTree = (0, timeline_expanded_filter_1.filterTimelineExpandedTree)({
|
|
409
410
|
nodes: tree,
|
|
@@ -63,6 +63,7 @@ const TimelineRowChrome_1 = require("./TimelineRowChrome");
|
|
|
63
63
|
const TimelineSelection_1 = require("./TimelineSelection");
|
|
64
64
|
const TimelineSequenceName_1 = require("./TimelineSequenceName");
|
|
65
65
|
const use_open_sequence_in_editor_1 = require("./use-open-sequence-in-editor");
|
|
66
|
+
const use_rename_sequence_1 = require("./use-rename-sequence");
|
|
66
67
|
const use_sequence_freeze_frame_menu_item_1 = require("./use-sequence-freeze-frame-menu-item");
|
|
67
68
|
const use_timeline_expanded_tree_1 = require("./use-timeline-expanded-tree");
|
|
68
69
|
const labelContainerStyle = {
|
|
@@ -78,24 +79,12 @@ const effectDropHighlight = {
|
|
|
78
79
|
outlineOffset: -1,
|
|
79
80
|
};
|
|
80
81
|
const SEQUENCE_REORDER_MIME_TYPE = 'application/remotion-sequence-reorder';
|
|
81
|
-
const getSequenceNameSaveAction = ({ editedName, currentDisplayName, fallbackDisplayName, hasStaticNameProp, }) => {
|
|
82
|
-
if (!hasStaticNameProp &&
|
|
83
|
-
(editedName === '' || editedName === fallbackDisplayName)) {
|
|
84
|
-
return { type: 'noop' };
|
|
85
|
-
}
|
|
86
|
-
if (hasStaticNameProp && editedName === currentDisplayName) {
|
|
87
|
-
return { type: 'noop' };
|
|
88
|
-
}
|
|
89
|
-
return {
|
|
90
|
-
type: 'save',
|
|
91
|
-
defaultValue: editedName === '' ? JSON.stringify('') : null,
|
|
92
|
-
};
|
|
93
|
-
};
|
|
94
82
|
let currentSequenceDrag = null;
|
|
95
83
|
const TimelineSequenceExpandArrow = ({ disabled, isExpanded, nodePathInfo, onToggleExpand, sequence }) => {
|
|
96
84
|
const { filteredTree } = (0, use_timeline_expanded_tree_1.useTimelineExpandedTree)({
|
|
97
85
|
sequence,
|
|
98
86
|
nodePathInfo,
|
|
87
|
+
includeTextContent: false,
|
|
99
88
|
});
|
|
100
89
|
if (filteredTree.length === 0) {
|
|
101
90
|
return jsx_runtime_1.jsx(TimelineExpandArrowButton_1.TimelineExpandArrowSpacer, {});
|
|
@@ -163,14 +152,13 @@ const getDestinationIndex = ({ fromIndex, insertionIndex, }) => {
|
|
|
163
152
|
return insertionIndex > fromIndex ? insertionIndex - 1 : insertionIndex;
|
|
164
153
|
};
|
|
165
154
|
const TimelineSequenceItem = ({ nestedDepth, sequence, nodePathInfo, keyframeDisplayOffset, sequenceFrameOffset, trackIndex, }) => {
|
|
166
|
-
var _a, _b, _c
|
|
167
|
-
var _e, _f
|
|
168
|
-
const nodePath = (
|
|
155
|
+
var _a, _b, _c;
|
|
156
|
+
var _d, _e, _f;
|
|
157
|
+
const nodePath = (_d = nodePathInfo === null || nodePathInfo === void 0 ? void 0 : nodePathInfo.sequenceSubscriptionKey) !== null && _d !== void 0 ? _d : null;
|
|
169
158
|
const { previewServerState } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx);
|
|
170
159
|
const previewConnected = previewServerState.type === 'connected';
|
|
171
160
|
const { getIsExpanded } = (0, react_1.useContext)(ExpandedTracksProvider_1.ExpandedTracksGetterContext);
|
|
172
161
|
const { toggleTrack } = (0, react_1.useContext)(ExpandedTracksProvider_1.ExpandedTracksSetterContext);
|
|
173
|
-
const { propStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModePropStatusesContext);
|
|
174
162
|
const { setPropStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModeSettersContext);
|
|
175
163
|
const { setSelectedModal } = (0, react_1.useContext)(modals_1.ModalsContext);
|
|
176
164
|
const { isHighestContext } = (0, use_keybinding_1.useKeybinding)();
|
|
@@ -201,9 +189,17 @@ const TimelineSequenceItem = ({ nestedDepth, sequence, nodePathInfo, keyframeDis
|
|
|
201
189
|
column: (_a = originalLocation.column) !== null && _a !== void 0 ? _a : 0,
|
|
202
190
|
};
|
|
203
191
|
}, [originalLocation]);
|
|
192
|
+
const { canRename: canRenameThisSequence, displayName, fallbackDisplayName, propStatusesForOverride, saveName, } = (0, use_rename_sequence_1.useRenameSequence)({
|
|
193
|
+
clientId: previewServerState.type === 'connected'
|
|
194
|
+
? previewServerState.clientId
|
|
195
|
+
: null,
|
|
196
|
+
nodePathInfo,
|
|
197
|
+
sequence,
|
|
198
|
+
validatedLocation,
|
|
199
|
+
});
|
|
204
200
|
const canDeleteFromSource = Boolean(nodePath && (validatedLocation === null || validatedLocation === void 0 ? void 0 : validatedLocation.source));
|
|
205
201
|
const nodePathKey = (0, react_1.useMemo)(() => nodePath ? remotion_1.Internals.makeSequencePropsSubscriptionKey(nodePath) : null, [nodePath]);
|
|
206
|
-
const parentId = (
|
|
202
|
+
const parentId = (_e = sequence.parent) !== null && _e !== void 0 ? _e : null;
|
|
207
203
|
const canReorderSequence = previewConnected &&
|
|
208
204
|
Boolean(nodePath && nodePathKey && (validatedLocation === null || validatedLocation === void 0 ? void 0 : validatedLocation.source)) &&
|
|
209
205
|
(nodePathInfo === null || nodePathInfo === void 0 ? void 0 : nodePathInfo.numberOfSequencesWithThisNodePath) === 1;
|
|
@@ -450,13 +446,7 @@ const TimelineSequenceItem = ({ nestedDepth, sequence, nodePathInfo, keyframeDis
|
|
|
450
446
|
}
|
|
451
447
|
toggleTrack(nodePathInfo);
|
|
452
448
|
}, [nodePathInfo, toggleTrack]);
|
|
453
|
-
const propStatusesForOverride = (0, react_1.useMemo)(() => {
|
|
454
|
-
return nodePath
|
|
455
|
-
? remotion_1.Internals.getPropStatusesCtx(propStatuses, nodePath)
|
|
456
|
-
: undefined;
|
|
457
|
-
}, [propStatuses, nodePath]);
|
|
458
449
|
const codeHiddenStatus = propStatusesForOverride === null || propStatusesForOverride === void 0 ? void 0 : propStatusesForOverride.hidden;
|
|
459
|
-
const codeNameStatus = propStatusesForOverride === null || propStatusesForOverride === void 0 ? void 0 : propStatusesForOverride.name;
|
|
460
450
|
const isItemHidden = (0, react_1.useMemo)(() => {
|
|
461
451
|
var _a;
|
|
462
452
|
const propStatus = codeHiddenStatus && codeHiddenStatus.status === 'static'
|
|
@@ -466,26 +456,6 @@ const TimelineSequenceItem = ({ nestedDepth, sequence, nodePathInfo, keyframeDis
|
|
|
466
456
|
const effective = (propStatus !== null && propStatus !== void 0 ? propStatus : runtimeValue);
|
|
467
457
|
return effective !== null && effective !== void 0 ? effective : false;
|
|
468
458
|
}, [codeHiddenStatus, (_a = sequence.controls) === null || _a === void 0 ? void 0 : _a.currentRuntimeValueDotNotation]);
|
|
469
|
-
const fallbackDisplayName = (_g = (_b = sequence.controls) === null || _b === void 0 ? void 0 : _b.componentName) !== null && _g !== void 0 ? _g : '<Sequence>';
|
|
470
|
-
const staticNamePropValue = (codeNameStatus === null || codeNameStatus === void 0 ? void 0 : codeNameStatus.status) === 'static' &&
|
|
471
|
-
typeof codeNameStatus.codeValue === 'string'
|
|
472
|
-
? codeNameStatus.codeValue
|
|
473
|
-
: null;
|
|
474
|
-
const hasStaticNameProp = staticNamePropValue !== null;
|
|
475
|
-
const displayName = (0, react_1.useMemo)(() => {
|
|
476
|
-
if (staticNamePropValue !== null) {
|
|
477
|
-
return staticNamePropValue;
|
|
478
|
-
}
|
|
479
|
-
if ((codeNameStatus === null || codeNameStatus === void 0 ? void 0 : codeNameStatus.status) === 'static') {
|
|
480
|
-
return fallbackDisplayName;
|
|
481
|
-
}
|
|
482
|
-
return sequence.displayName;
|
|
483
|
-
}, [
|
|
484
|
-
codeNameStatus === null || codeNameStatus === void 0 ? void 0 : codeNameStatus.status,
|
|
485
|
-
fallbackDisplayName,
|
|
486
|
-
sequence.displayName,
|
|
487
|
-
staticNamePropValue,
|
|
488
|
-
]);
|
|
489
459
|
const onToggleVisibility = (0, react_1.useCallback)((type) => {
|
|
490
460
|
if (!sequence.controls ||
|
|
491
461
|
!nodePath ||
|
|
@@ -554,14 +524,6 @@ const TimelineSequenceItem = ({ nestedDepth, sequence, nodePathInfo, keyframeDis
|
|
|
554
524
|
codeHiddenStatus !== undefined &&
|
|
555
525
|
codeHiddenStatus !== null &&
|
|
556
526
|
codeHiddenStatus.status === 'static';
|
|
557
|
-
const canRenameThisSequence = previewServerState.type === 'connected' &&
|
|
558
|
-
!window.remotion_isReadOnlyStudio &&
|
|
559
|
-
Boolean(sequence.controls) &&
|
|
560
|
-
nodePath !== null &&
|
|
561
|
-
validatedLocation !== null &&
|
|
562
|
-
codeNameStatus !== undefined &&
|
|
563
|
-
codeNameStatus !== null &&
|
|
564
|
-
codeNameStatus.status === 'static';
|
|
565
527
|
const onSequenceDoubleClick = (0, react_1.useCallback)((e) => {
|
|
566
528
|
if ((0, TimelineSelection_1.isTimelineSelectionModifierEvent)(e)) {
|
|
567
529
|
e.stopPropagation();
|
|
@@ -577,58 +539,14 @@ const TimelineSequenceItem = ({ nestedDepth, sequence, nodePathInfo, keyframeDis
|
|
|
577
539
|
const canRenameSelectedSequence = canRenameThisSequence &&
|
|
578
540
|
selected &&
|
|
579
541
|
selectedItems.length === 1 &&
|
|
580
|
-
((
|
|
542
|
+
((_b = selectedItems[0]) === null || _b === void 0 ? void 0 : _b.type) === 'sequence';
|
|
581
543
|
const onCancelRenaming = (0, react_1.useCallback)(() => {
|
|
582
544
|
setIsRenaming(false);
|
|
583
545
|
}, []);
|
|
584
546
|
const onSaveName = (0, react_1.useCallback)(async (name) => {
|
|
585
|
-
if (!canRenameThisSequence ||
|
|
586
|
-
previewServerState.type !== 'connected' ||
|
|
587
|
-
!sequence.controls ||
|
|
588
|
-
!nodePath ||
|
|
589
|
-
!validatedLocation) {
|
|
590
|
-
setIsRenaming(false);
|
|
591
|
-
return;
|
|
592
|
-
}
|
|
593
|
-
const action = getSequenceNameSaveAction({
|
|
594
|
-
editedName: name,
|
|
595
|
-
currentDisplayName: displayName,
|
|
596
|
-
fallbackDisplayName,
|
|
597
|
-
hasStaticNameProp,
|
|
598
|
-
});
|
|
599
|
-
if (action.type === 'noop') {
|
|
600
|
-
setIsRenaming(false);
|
|
601
|
-
return;
|
|
602
|
-
}
|
|
603
|
-
const savePromise = (0, save_sequence_prop_1.saveSequenceProps)({
|
|
604
|
-
changes: [
|
|
605
|
-
{
|
|
606
|
-
fileName: validatedLocation.source,
|
|
607
|
-
nodePath,
|
|
608
|
-
fieldKey: 'name',
|
|
609
|
-
value: name,
|
|
610
|
-
defaultValue: action.defaultValue,
|
|
611
|
-
schema: sequence.controls.schema,
|
|
612
|
-
},
|
|
613
|
-
],
|
|
614
|
-
setPropStatuses,
|
|
615
|
-
clientId: previewServerState.clientId,
|
|
616
|
-
undoLabel: 'Rename sequence',
|
|
617
|
-
redoLabel: 'Rename sequence again',
|
|
618
|
-
});
|
|
619
547
|
setIsRenaming(false);
|
|
620
|
-
await
|
|
621
|
-
}, [
|
|
622
|
-
canRenameThisSequence,
|
|
623
|
-
displayName,
|
|
624
|
-
fallbackDisplayName,
|
|
625
|
-
hasStaticNameProp,
|
|
626
|
-
nodePath,
|
|
627
|
-
previewServerState,
|
|
628
|
-
sequence.controls,
|
|
629
|
-
setPropStatuses,
|
|
630
|
-
validatedLocation,
|
|
631
|
-
]);
|
|
548
|
+
await saveName(name);
|
|
549
|
+
}, [saveName]);
|
|
632
550
|
react_1.default.useEffect(() => {
|
|
633
551
|
if (!canRenameSelectedSequence || !process.env.KEYBOARD_SHORTCUTS_ENABLED) {
|
|
634
552
|
setIsRenaming(false);
|
|
@@ -673,7 +591,7 @@ const TimelineSequenceItem = ({ nestedDepth, sequence, nodePathInfo, keyframeDis
|
|
|
673
591
|
sequenceFrameOffset,
|
|
674
592
|
setPropStatuses,
|
|
675
593
|
timelinePosition,
|
|
676
|
-
validatedSource: (
|
|
594
|
+
validatedSource: (_f = validatedLocation === null || validatedLocation === void 0 ? void 0 : validatedLocation.source) !== null && _f !== void 0 ? _f : null,
|
|
677
595
|
});
|
|
678
596
|
const canAddEffect = (nodePathInfo === null || nodePathInfo === void 0 ? void 0 : nodePathInfo.supportsEffects) === true &&
|
|
679
597
|
previewServerState.type === 'connected' &&
|
|
@@ -780,7 +698,7 @@ const TimelineSequenceItem = ({ nestedDepth, sequence, nodePathInfo, keyframeDis
|
|
|
780
698
|
const canDropEffect = previewServerState.type === 'connected' &&
|
|
781
699
|
nodePath !== null &&
|
|
782
700
|
validatedLocation !== null &&
|
|
783
|
-
((
|
|
701
|
+
((_c = sequence.controls) === null || _c === void 0 ? void 0 : _c.supportsEffects) === true;
|
|
784
702
|
const sequenceReorderLineStyle = (0, react_1.useMemo)(() => {
|
|
785
703
|
if (!sequenceDropIndicator) {
|
|
786
704
|
return null;
|
|
@@ -64,9 +64,11 @@ const Value = ({ field, nodePath, validatedLocation, schema, propStatus }) => {
|
|
|
64
64
|
if (!clientId) {
|
|
65
65
|
return Promise.reject(new Error('Not connected to studio server'));
|
|
66
66
|
}
|
|
67
|
-
const defaultValue = field.fieldSchema.
|
|
68
|
-
?
|
|
69
|
-
:
|
|
67
|
+
const defaultValue = field.fieldSchema.type === 'text-content'
|
|
68
|
+
? null
|
|
69
|
+
: field.fieldSchema.default !== undefined
|
|
70
|
+
? JSON.stringify(field.fieldSchema.default)
|
|
71
|
+
: null;
|
|
70
72
|
const stringifiedValue = JSON.stringify(value);
|
|
71
73
|
const fieldLabel = (_a = field.description) !== null && _a !== void 0 ? _a : field.key;
|
|
72
74
|
if (value === propStatus.codeValue) {
|
|
@@ -97,6 +99,7 @@ const Value = ({ field, nodePath, validatedLocation, schema, propStatus }) => {
|
|
|
97
99
|
clientId,
|
|
98
100
|
field.description,
|
|
99
101
|
field.fieldSchema.default,
|
|
102
|
+
field.fieldSchema.type,
|
|
100
103
|
field.key,
|
|
101
104
|
nodePath,
|
|
102
105
|
schema,
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { CanUpdateSequencePropStatusStatic, SequencePropsSubscriptionKey } from 'remotion';
|
|
3
|
+
import type { SchemaFieldInfo, TimelineFieldOnDragValueChange, TimelineFieldOnSave } from '../../helpers/timeline-layout';
|
|
4
|
+
export declare const TimelineTextContentField: React.FC<{
|
|
5
|
+
readonly field: SchemaFieldInfo;
|
|
6
|
+
readonly effectiveValue: unknown;
|
|
7
|
+
readonly propStatus: CanUpdateSequencePropStatusStatic;
|
|
8
|
+
readonly nodePath: SequencePropsSubscriptionKey | null;
|
|
9
|
+
readonly onDragEnd: () => void;
|
|
10
|
+
readonly onDragValueChange: TimelineFieldOnDragValueChange;
|
|
11
|
+
readonly onSave: TimelineFieldOnSave;
|
|
12
|
+
}>;
|