@remotion/studio 4.0.478 → 4.0.479
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/AssetSelector.js +8 -14
- package/dist/components/Button.d.ts +1 -0
- package/dist/components/Button.js +8 -5
- package/dist/components/CompactExplanation.d.ts +12 -0
- package/dist/components/CompactExplanation.js +52 -0
- package/dist/components/CompositionSelector.js +2 -4
- package/dist/components/CurrentAsset.d.ts +3 -1
- package/dist/components/CurrentAsset.js +42 -34
- package/dist/components/CurrentComposition.d.ts +1 -1
- package/dist/components/CurrentComposition.js +38 -31
- package/dist/components/DefaultPropsEditor.d.ts +12 -2
- package/dist/components/DefaultPropsEditor.js +2 -2
- package/dist/components/EffectPickerModal.d.ts +5 -0
- package/dist/components/EffectPickerModal.js +179 -0
- package/dist/components/InspectorInfoHeader.d.ts +11 -0
- package/dist/components/InspectorInfoHeader.js +55 -0
- package/dist/components/InspectorPanel/DefaultInspector.d.ts +8 -0
- package/dist/components/InspectorPanel/DefaultInspector.js +93 -0
- package/dist/components/InspectorPanel/EasingInspector.d.ts +5 -0
- package/dist/components/InspectorPanel/EasingInspector.js +41 -0
- package/dist/components/InspectorPanel/GuideInspector.d.ts +7 -0
- package/dist/components/InspectorPanel/GuideInspector.js +55 -0
- package/dist/components/InspectorPanel/KeyframeInspector.d.ts +7 -0
- package/dist/components/InspectorPanel/KeyframeInspector.js +109 -0
- package/dist/components/InspectorPanel/SelectedInspector.d.ts +5 -0
- package/dist/components/InspectorPanel/SelectedInspector.js +26 -0
- package/dist/components/InspectorPanel/SequenceSelectionInspector.d.ts +5 -0
- package/dist/components/InspectorPanel/SequenceSelectionInspector.js +116 -0
- package/dist/components/InspectorPanel/common.d.ts +15 -0
- package/dist/components/InspectorPanel/common.js +18 -0
- package/dist/components/InspectorPanel/inspector-selection.d.ts +10 -0
- package/dist/components/InspectorPanel/inspector-selection.js +34 -0
- package/dist/components/InspectorPanel/styles.d.ts +27 -0
- package/dist/components/InspectorPanel/styles.js +178 -0
- package/dist/components/InspectorPanel/use-track-for-selection.d.ts +2 -0
- package/dist/components/InspectorPanel/use-track-for-selection.js +22 -0
- package/dist/components/InspectorPanel.d.ts +8 -0
- package/dist/components/InspectorPanel.js +26 -0
- package/dist/components/InspectorPanelLayout.d.ts +1 -0
- package/dist/components/InspectorPanelLayout.js +4 -0
- package/dist/components/InspectorSequenceSection.d.ts +16 -0
- package/dist/components/InspectorSequenceSection.js +147 -0
- package/dist/components/InspectorSourceLocation.d.ts +7 -0
- package/dist/components/InspectorSourceLocation.js +71 -0
- package/dist/components/Modals.js +3 -3
- package/dist/components/NewComposition/InputDragger.js +1 -1
- package/dist/components/NewComposition/RemInput.d.ts +1 -0
- package/dist/components/NewComposition/RemInput.js +8 -2
- package/dist/components/NewComposition/RemTextarea.d.ts +1 -0
- package/dist/components/NewComposition/RemTextarea.js +8 -2
- package/dist/components/NewComposition/ValidationMessage.d.ts +3 -0
- package/dist/components/NewComposition/ValidationMessage.js +16 -5
- package/dist/components/OptionsPanel.d.ts +1 -1
- package/dist/components/OptionsPanel.js +8 -17
- package/dist/components/QuickSwitcher/QuickSwitcherContent.js +2 -7
- package/dist/components/QuickSwitcher/QuickSwitcherResult.js +3 -10
- package/dist/components/QuickSwitcher/shared.d.ts +4 -0
- package/dist/components/QuickSwitcher/shared.js +24 -0
- package/dist/components/RenderModal/DataEditor.d.ts +29 -2
- package/dist/components/RenderModal/DataEditor.js +107 -56
- package/dist/components/RenderModal/RenderModalJSONPropsEditor.d.ts +1 -0
- package/dist/components/RenderModal/RenderModalJSONPropsEditor.js +25 -7
- package/dist/components/RenderModal/SchemaEditor/Fieldset.d.ts +2 -1
- package/dist/components/RenderModal/SchemaEditor/Fieldset.js +10 -5
- package/dist/components/RenderModal/SchemaEditor/SchemaEditor.d.ts +4 -0
- package/dist/components/RenderModal/SchemaEditor/SchemaEditor.js +27 -4
- package/dist/components/RenderModal/SchemaEditor/SchemaErrorMessages.d.ts +12 -4
- package/dist/components/RenderModal/SchemaEditor/SchemaErrorMessages.js +23 -9
- package/dist/components/RenderModal/SchemaEditor/SchemaLabel.js +3 -3
- package/dist/components/RenderModal/SchemaEditor/SchemaSeparationLine.js +8 -1
- package/dist/components/RenderModal/SchemaEditor/ZodColorEditor.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodDateEditor.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodDiscriminatedUnionEditor.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodEnumEditor.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodErrorMessages.d.ts +1 -0
- package/dist/components/RenderModal/SchemaEditor/ZodErrorMessages.js +23 -6
- package/dist/components/RenderModal/SchemaEditor/ZodFieldValidation.js +2 -2
- package/dist/components/RenderModal/SchemaEditor/ZodNonEditableValue.js +2 -1
- package/dist/components/RenderModal/SchemaEditor/ZodNumberEditor.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodObjectEditor.js +9 -11
- package/dist/components/RenderModal/SchemaEditor/ZodOrNullishEditor.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodStaticFileEditor.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodStringEditor.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodTextareaEditor.js +1 -1
- package/dist/components/RenderModal/WarningIndicatorButton.d.ts +1 -0
- package/dist/components/RenderModal/WarningIndicatorButton.js +17 -4
- package/dist/components/RenderModal/get-render-modal-warnings.d.ts +2 -1
- package/dist/components/RenderModal/get-render-modal-warnings.js +6 -3
- package/dist/components/RendersTab.js +1 -1
- package/dist/components/SegmentedControl.d.ts +3 -0
- package/dist/components/SegmentedControl.js +11 -5
- package/dist/components/SelectedOutlineElement.js +57 -24
- package/dist/components/SelectedOutlineOverlay.d.ts +1 -1
- package/dist/components/SelectedOutlineOverlay.js +41 -29
- package/dist/components/SelectedOutlineUvControls.d.ts +9 -0
- package/dist/components/SelectedOutlineUvControls.js +64 -10
- package/dist/components/Tabs/index.js +4 -4
- package/dist/components/Timeline/EasingEditorModal.d.ts +5 -4
- package/dist/components/Timeline/EasingEditorModal.js +597 -124
- package/dist/components/Timeline/KeyframeSettingsModal.d.ts +2 -2
- package/dist/components/Timeline/SubscribeToNodePaths.d.ts +2 -2
- package/dist/components/Timeline/TimelineClipboardKeybindings.d.ts +15 -3
- package/dist/components/Timeline/TimelineClipboardKeybindings.js +85 -1
- package/dist/components/Timeline/TimelineDeleteKeybindings.js +10 -3
- package/dist/components/Timeline/TimelineEffectItem.d.ts +2 -2
- package/dist/components/Timeline/TimelineEffectPropItem.d.ts +8 -0
- package/dist/components/Timeline/TimelineEffectPropItem.js +24 -20
- package/dist/components/Timeline/TimelineExpandedRow.d.ts +5 -2
- package/dist/components/Timeline/TimelineExpandedRow.js +4 -4
- package/dist/components/Timeline/TimelineExpandedSection.d.ts +1 -1
- package/dist/components/Timeline/TimelineExpandedSection.js +5 -19
- package/dist/components/Timeline/TimelineKeyframeControls.d.ts +8 -2
- package/dist/components/Timeline/TimelineKeyframeControls.js +24 -3
- package/dist/components/Timeline/TimelineKeyframeEasingLine.js +2 -47
- package/dist/components/Timeline/TimelineKeyframedValue.d.ts +1 -1
- package/dist/components/Timeline/TimelineKeyframedValue.js +8 -10
- package/dist/components/Timeline/TimelineNumberField.js +5 -11
- package/dist/components/Timeline/TimelineRotationField.js +5 -6
- package/dist/components/Timeline/TimelineScaleField.js +4 -8
- package/dist/components/Timeline/TimelineSelection.d.ts +6 -0
- package/dist/components/Timeline/TimelineSelection.js +109 -14
- package/dist/components/Timeline/TimelineSequence.js +19 -3
- package/dist/components/Timeline/TimelineSequenceItem.js +12 -67
- package/dist/components/Timeline/TimelineSequencePropItem.d.ts +12 -2
- package/dist/components/Timeline/TimelineSequencePropItem.js +56 -52
- package/dist/components/Timeline/TimelineTransformOriginField.js +4 -5
- package/dist/components/Timeline/TimelineTranslateField.js +4 -5
- package/dist/components/Timeline/TimelineUvCoordinateField.js +4 -4
- package/dist/components/Timeline/call-add-keyframe.d.ts +4 -4
- package/dist/components/Timeline/call-delete-keyframe.d.ts +4 -4
- package/dist/components/Timeline/call-move-keyframe.d.ts +2 -2
- package/dist/components/Timeline/call-update-keyframe-settings.d.ts +3 -3
- package/dist/components/Timeline/delete-selected-timeline-item.d.ts +2 -1
- package/dist/components/Timeline/delete-selected-timeline-item.js +27 -1
- package/dist/components/Timeline/parse-keyframe-field-from-node-path.js +2 -2
- package/dist/components/Timeline/reset-selected-timeline-props.d.ts +3 -3
- package/dist/components/Timeline/reset-selected-timeline-props.js +19 -5
- package/dist/components/Timeline/save-effect-prop.d.ts +2 -2
- package/dist/components/Timeline/save-sequence-prop.d.ts +2 -2
- package/dist/components/Timeline/sequence-props-subscription-store.d.ts +3 -3
- package/dist/components/Timeline/timeline-field-display-utils.d.ts +5 -0
- package/dist/components/Timeline/timeline-field-display-utils.js +244 -0
- package/dist/components/Timeline/update-selected-easing.d.ts +47 -4
- package/dist/components/Timeline/update-selected-easing.js +40 -9
- package/dist/components/Timeline/use-sequence-freeze-frame-menu-item.d.ts +13 -0
- package/dist/components/Timeline/use-sequence-freeze-frame-menu-item.js +73 -0
- package/dist/components/Timeline/use-sequence-props-subscription.d.ts +3 -3
- package/dist/components/Timeline/use-timeline-expanded-tree.d.ts +11 -0
- package/dist/components/Timeline/use-timeline-expanded-tree.js +33 -0
- package/dist/components/VisualControls/VisualControlsContent.d.ts +1 -1
- package/dist/components/VisualControls/VisualControlsContent.js +4 -5
- package/dist/components/effect-drag-and-drop.d.ts +10 -0
- package/dist/components/effect-drag-and-drop.js +17 -8
- package/dist/components/effect-picker-search.d.ts +5 -0
- package/dist/components/effect-picker-search.js +77 -0
- package/dist/components/selected-outline-drag.d.ts +21 -2
- package/dist/components/selected-outline-drag.js +31 -6
- package/dist/components/selected-outline-types.d.ts +7 -7
- package/dist/components/selected-outline-uv.d.ts +4 -3
- package/dist/components/selected-outline-uv.js +6 -2
- package/dist/esm/{chunk-hrw9799x.js → chunk-fge2mq5p.js} +16535 -13311
- package/dist/esm/internals.mjs +16535 -13311
- package/dist/esm/previewEntry.mjs +17141 -13917
- package/dist/esm/renderEntry.mjs +1 -1
- package/dist/helpers/render-codec-label.d.ts +2 -0
- package/dist/helpers/render-codec-label.js +49 -0
- package/dist/helpers/timeline-layout.d.ts +4 -4
- package/dist/helpers/use-media-metadata.d.ts +8 -2
- package/dist/helpers/use-media-metadata.js +17 -4
- package/dist/state/modals.d.ts +9 -4
- package/package.json +12 -12
|
@@ -25,7 +25,13 @@ const item = {
|
|
|
25
25
|
justifyContent: 'center',
|
|
26
26
|
whiteSpace: 'nowrap',
|
|
27
27
|
};
|
|
28
|
-
const
|
|
28
|
+
const compactItem = {
|
|
29
|
+
...item,
|
|
30
|
+
fontSize: 11,
|
|
31
|
+
fontWeight: 400,
|
|
32
|
+
padding: '2px 7px',
|
|
33
|
+
};
|
|
34
|
+
const SegmentedControl = ({ items, needsWrapping, size = 'default' }) => {
|
|
29
35
|
const controlStyle = (0, react_1.useMemo)(() => {
|
|
30
36
|
if (needsWrapping) {
|
|
31
37
|
return {
|
|
@@ -41,11 +47,11 @@ const SegmentedControl = ({ items, needsWrapping }) => {
|
|
|
41
47
|
};
|
|
42
48
|
}, [needsWrapping]);
|
|
43
49
|
return (jsx_runtime_1.jsx("div", { style: controlStyle, children: items.map((i) => {
|
|
44
|
-
return (jsx_runtime_1.jsx(Item, { onClick: i.onClick, selected: i.selected, children: i.label }, i.key));
|
|
50
|
+
return (jsx_runtime_1.jsx(Item, { onClick: i.onClick, selected: i.selected, size: size, children: i.label }, i.key));
|
|
45
51
|
}) }));
|
|
46
52
|
};
|
|
47
53
|
exports.SegmentedControl = SegmentedControl;
|
|
48
|
-
const Item = ({ selected, onClick, children }) => {
|
|
54
|
+
const Item = ({ selected, onClick, children, size }) => {
|
|
49
55
|
const [hovered, setHovered] = (0, react_1.useState)(false);
|
|
50
56
|
const { tabIndex } = (0, z_index_1.useZIndex)();
|
|
51
57
|
const onPointerEnter = (0, react_1.useCallback)(() => {
|
|
@@ -56,10 +62,10 @@ const Item = ({ selected, onClick, children }) => {
|
|
|
56
62
|
}, []);
|
|
57
63
|
const itemStyle = (0, react_1.useMemo)(() => {
|
|
58
64
|
return {
|
|
59
|
-
...item,
|
|
65
|
+
...(size === 'compact' ? compactItem : item),
|
|
60
66
|
backgroundColor: selected ? colors_1.INPUT_BACKGROUND : 'transparent',
|
|
61
67
|
color: selected ? 'white' : hovered ? 'white' : colors_1.LIGHT_TEXT,
|
|
62
68
|
};
|
|
63
|
-
}, [hovered, selected]);
|
|
69
|
+
}, [hovered, selected, size]);
|
|
64
70
|
return (jsx_runtime_1.jsx("button", { type: "button", onPointerEnter: onPointerEnter, onPointerLeave: onPointerLeave, style: itemStyle, tabIndex: tabIndex, onClick: onClick, children: children }));
|
|
65
71
|
};
|
|
@@ -303,7 +303,9 @@ const SelectedOutlineTransformOriginHandle = ({ outline, onDraggingChange, targe
|
|
|
303
303
|
position === null) {
|
|
304
304
|
return null;
|
|
305
305
|
}
|
|
306
|
-
return (jsx_runtime_1.jsxs("g", { pointerEvents: "all", cursor: "crosshair", onPointerDown: onPointerDown, "aria-hidden": "true",
|
|
306
|
+
return (jsx_runtime_1.jsxs("g", { pointerEvents: "all", cursor: "crosshair", onPointerDown: onPointerDown, "aria-hidden": "true", style: {
|
|
307
|
+
filter: 'drop-shadow(0 0 1px rgba(255, 255, 255, 0.2))',
|
|
308
|
+
}, children: [
|
|
307
309
|
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" })
|
|
308
310
|
] }));
|
|
309
311
|
};
|
|
@@ -715,11 +717,14 @@ const SelectedOutlineRotationCornerHandle = ({ allRotationDragTargets, contextMe
|
|
|
715
717
|
return;
|
|
716
718
|
}
|
|
717
719
|
const interaction = (0, selected_outline_measurement_1.getOutlineSelectionInteraction)(event);
|
|
718
|
-
const shouldUpdateSelection = !selected || interaction.
|
|
720
|
+
const shouldUpdateSelection = !selected || interaction.toggleKey;
|
|
719
721
|
if (shouldUpdateSelection && target !== undefined) {
|
|
720
|
-
onSelect(target.selection,
|
|
722
|
+
onSelect(target.selection, {
|
|
723
|
+
shiftKey: false,
|
|
724
|
+
toggleKey: interaction.toggleKey,
|
|
725
|
+
});
|
|
721
726
|
}
|
|
722
|
-
if (interaction.
|
|
727
|
+
if (interaction.toggleKey) {
|
|
723
728
|
return;
|
|
724
729
|
}
|
|
725
730
|
const startPointer = { x: event.clientX, y: event.clientY };
|
|
@@ -739,8 +744,38 @@ const SelectedOutlineRotationCornerHandle = ({ allRotationDragTargets, contextMe
|
|
|
739
744
|
y: event.clientY,
|
|
740
745
|
});
|
|
741
746
|
let accumulatedDelta = 0;
|
|
747
|
+
let rotationLocked = event.shiftKey;
|
|
742
748
|
let lastValues = new Map();
|
|
743
749
|
let dragStarted = false;
|
|
750
|
+
const updateRotationDragOverrides = () => {
|
|
751
|
+
const rotationDeltaDegrees = rotationLocked
|
|
752
|
+
? (0, selected_outline_drag_1.snapSelectedOutlineRotationDeltaDegrees)({
|
|
753
|
+
dragStates,
|
|
754
|
+
rotationDeltaDegrees: accumulatedDelta,
|
|
755
|
+
})
|
|
756
|
+
: accumulatedDelta;
|
|
757
|
+
lastValues = (0, selected_outline_drag_1.getSelectedOutlineRotationDragValues)({
|
|
758
|
+
dragStates,
|
|
759
|
+
rotationDeltaDegrees,
|
|
760
|
+
});
|
|
761
|
+
(0, ForceSpecificCursor_1.forceSpecificCursor)((0, selected_outline_measurement_1.getRotationCursor)(cornerInfo.cursorDegrees + rotationDeltaDegrees));
|
|
762
|
+
for (const dragState of dragStates) {
|
|
763
|
+
const value = lastValues.get(dragState.key);
|
|
764
|
+
if (value === undefined) {
|
|
765
|
+
throw new Error('Expected rotation drag value to be available');
|
|
766
|
+
}
|
|
767
|
+
if (dragState.target.propStatus.status === 'keyframed') {
|
|
768
|
+
setDragOverrides(dragState.target.nodePath, selected_outline_types_1.rotateFieldKey, remotion_1.Internals.makeKeyframedDragOverride({
|
|
769
|
+
status: dragState.target.propStatus,
|
|
770
|
+
frame: dragState.sourceFrame,
|
|
771
|
+
value,
|
|
772
|
+
}));
|
|
773
|
+
}
|
|
774
|
+
else {
|
|
775
|
+
setDragOverrides(dragState.target.nodePath, selected_outline_types_1.rotateFieldKey, remotion_1.Internals.makeStaticDragOverride(value));
|
|
776
|
+
}
|
|
777
|
+
}
|
|
778
|
+
};
|
|
744
779
|
const onPointerMove = (moveEvent) => {
|
|
745
780
|
moveEvent.preventDefault();
|
|
746
781
|
const screenDeltaX = moveEvent.clientX - startPointer.x;
|
|
@@ -764,32 +799,28 @@ const SelectedOutlineRotationCornerHandle = ({ allRotationDragTargets, contextMe
|
|
|
764
799
|
to: nextAngle,
|
|
765
800
|
});
|
|
766
801
|
previousAngle = nextAngle;
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
value,
|
|
782
|
-
}));
|
|
783
|
-
}
|
|
784
|
-
else {
|
|
785
|
-
setDragOverrides(dragState.target.nodePath, selected_outline_types_1.rotateFieldKey, remotion_1.Internals.makeStaticDragOverride(value));
|
|
786
|
-
}
|
|
802
|
+
rotationLocked = moveEvent.shiftKey;
|
|
803
|
+
updateRotationDragOverrides();
|
|
804
|
+
};
|
|
805
|
+
const onKeyChange = (keyEvent) => {
|
|
806
|
+
if (keyEvent.key !== 'Shift') {
|
|
807
|
+
return;
|
|
808
|
+
}
|
|
809
|
+
const nextRotationLocked = keyEvent.type === 'keydown';
|
|
810
|
+
if (nextRotationLocked === rotationLocked) {
|
|
811
|
+
return;
|
|
812
|
+
}
|
|
813
|
+
rotationLocked = nextRotationLocked;
|
|
814
|
+
if (dragStarted) {
|
|
815
|
+
updateRotationDragOverrides();
|
|
787
816
|
}
|
|
788
817
|
};
|
|
789
818
|
const onPointerUp = () => {
|
|
790
819
|
window.removeEventListener('pointermove', onPointerMove);
|
|
791
820
|
window.removeEventListener('pointerup', onPointerUp);
|
|
792
821
|
window.removeEventListener('pointercancel', onPointerUp);
|
|
822
|
+
window.removeEventListener('keydown', onKeyChange);
|
|
823
|
+
window.removeEventListener('keyup', onKeyChange);
|
|
793
824
|
if (dragStarted) {
|
|
794
825
|
(0, ForceSpecificCursor_1.stopForcingSpecificCursor)();
|
|
795
826
|
onDraggingChange(false);
|
|
@@ -845,6 +876,8 @@ const SelectedOutlineRotationCornerHandle = ({ allRotationDragTargets, contextMe
|
|
|
845
876
|
window.addEventListener('pointermove', onPointerMove);
|
|
846
877
|
window.addEventListener('pointerup', onPointerUp);
|
|
847
878
|
window.addEventListener('pointercancel', onPointerUp);
|
|
879
|
+
window.addEventListener('keydown', onKeyChange);
|
|
880
|
+
window.addEventListener('keyup', onKeyChange);
|
|
848
881
|
}, [
|
|
849
882
|
allRotationDragTargets,
|
|
850
883
|
clearDragOverrides,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
export { applySelectedOutlineDragAxisLock, applySelectedOutlineTransformOriginAxisLock, compensateTranslateForTransformOrigin, getSelectedOutlineDragChanges, getSelectedOutlineDragValues, getSelectedOutlineKeyboardNudgeDelta, getSelectedOutlineKeyboardNudgeDeltas, getSelectedOutlineRotationDragChanges, getSelectedOutlineRotationDragStates, getSelectedOutlineRotationDragValues, getSelectedOutlineScaleDragChanges, getSelectedOutlineScaleDragStates, getSelectedOutlineScaleDragValues, getSelectedOutlineScaleEdgeInfo, getSelectedOutlineTransformOriginLockedAxis, isSelectedOutlineDragPastThreshold, selectedOutlineTransformOriginSnapThresholdPx, snapSelectedOutlineTransformOriginUv, } from './selected-outline-drag';
|
|
2
|
+
export { applySelectedOutlineDragAxisLock, applySelectedOutlineTransformOriginAxisLock, compensateTranslateForTransformOrigin, getSelectedOutlineActiveSchema, getSelectedOutlineDragChanges, getSelectedOutlineDragValues, getSelectedOutlineKeyboardNudgeDelta, getSelectedOutlineKeyboardNudgeDeltas, getSelectedOutlineRotationDragChanges, getSelectedOutlineRotationDragStates, getSelectedOutlineRotationDragValues, getSelectedOutlineScaleDragChanges, getSelectedOutlineScaleDragStates, getSelectedOutlineScaleDragValues, getSelectedOutlineScaleEdgeInfo, getSelectedOutlineTransformOriginLockedAxis, isSelectedOutlineDragPastThreshold, selectedOutlineUvSnapThresholdPx, selectedOutlineTransformOriginSnapThresholdPx, snapSelectedOutlineRotationDeltaDegrees, snapSelectedOutlineUv, snapSelectedOutlineTransformOriginUv, } from './selected-outline-drag';
|
|
3
3
|
export { getOutlineSelectionInteraction, getSelectedEffectFieldsBySequenceKey, getSelectedOutlineRotationCornerInfo, getSelectedOutlineRotationDeltaDegrees, getSelectedOutlineRotationPivot, getSelectedSequenceKeys, getSequencesWithSelectableOutlines, getTransformedSvgViewportPoints, } from './selected-outline-measurement';
|
|
4
4
|
export { selectedOutlineDragThresholdPx } from './selected-outline-types';
|
|
5
5
|
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.selectedOutlineDragThresholdPx = exports.getTransformedSvgViewportPoints = exports.getSequencesWithSelectableOutlines = exports.getSelectedSequenceKeys = exports.getSelectedOutlineRotationPivot = exports.getSelectedOutlineRotationDeltaDegrees = exports.getSelectedOutlineRotationCornerInfo = exports.getSelectedEffectFieldsBySequenceKey = exports.getOutlineSelectionInteraction = exports.snapSelectedOutlineTransformOriginUv = 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.compensateTranslateForTransformOrigin = exports.applySelectedOutlineTransformOriginAxisLock = exports.applySelectedOutlineDragAxisLock = void 0;
|
|
36
|
+
exports.SelectedOutlineOverlay = exports.selectedOutlineDragThresholdPx = exports.getTransformedSvgViewportPoints = exports.getSequencesWithSelectableOutlines = exports.getSelectedSequenceKeys = exports.getSelectedOutlineRotationPivot = exports.getSelectedOutlineRotationDeltaDegrees = exports.getSelectedOutlineRotationCornerInfo = exports.getSelectedEffectFieldsBySequenceKey = exports.getOutlineSelectionInteraction = exports.snapSelectedOutlineTransformOriginUv = exports.snapSelectedOutlineUv = exports.snapSelectedOutlineRotationDeltaDegrees = exports.selectedOutlineTransformOriginSnapThresholdPx = exports.selectedOutlineUvSnapThresholdPx = 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"));
|
|
@@ -59,6 +59,7 @@ const selected_outline_drag_2 = require("./selected-outline-drag");
|
|
|
59
59
|
Object.defineProperty(exports, "applySelectedOutlineDragAxisLock", { enumerable: true, get: function () { return selected_outline_drag_2.applySelectedOutlineDragAxisLock; } });
|
|
60
60
|
Object.defineProperty(exports, "applySelectedOutlineTransformOriginAxisLock", { enumerable: true, get: function () { return selected_outline_drag_2.applySelectedOutlineTransformOriginAxisLock; } });
|
|
61
61
|
Object.defineProperty(exports, "compensateTranslateForTransformOrigin", { enumerable: true, get: function () { return selected_outline_drag_2.compensateTranslateForTransformOrigin; } });
|
|
62
|
+
Object.defineProperty(exports, "getSelectedOutlineActiveSchema", { enumerable: true, get: function () { return selected_outline_drag_2.getSelectedOutlineActiveSchema; } });
|
|
62
63
|
Object.defineProperty(exports, "getSelectedOutlineDragChanges", { enumerable: true, get: function () { return selected_outline_drag_2.getSelectedOutlineDragChanges; } });
|
|
63
64
|
Object.defineProperty(exports, "getSelectedOutlineDragValues", { enumerable: true, get: function () { return selected_outline_drag_2.getSelectedOutlineDragValues; } });
|
|
64
65
|
Object.defineProperty(exports, "getSelectedOutlineKeyboardNudgeDelta", { enumerable: true, get: function () { return selected_outline_drag_2.getSelectedOutlineKeyboardNudgeDelta; } });
|
|
@@ -72,7 +73,10 @@ Object.defineProperty(exports, "getSelectedOutlineScaleDragValues", { enumerable
|
|
|
72
73
|
Object.defineProperty(exports, "getSelectedOutlineScaleEdgeInfo", { enumerable: true, get: function () { return selected_outline_drag_2.getSelectedOutlineScaleEdgeInfo; } });
|
|
73
74
|
Object.defineProperty(exports, "getSelectedOutlineTransformOriginLockedAxis", { enumerable: true, get: function () { return selected_outline_drag_2.getSelectedOutlineTransformOriginLockedAxis; } });
|
|
74
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; } });
|
|
75
77
|
Object.defineProperty(exports, "selectedOutlineTransformOriginSnapThresholdPx", { enumerable: true, get: function () { return selected_outline_drag_2.selectedOutlineTransformOriginSnapThresholdPx; } });
|
|
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; } });
|
|
76
80
|
Object.defineProperty(exports, "snapSelectedOutlineTransformOriginUv", { enumerable: true, get: function () { return selected_outline_drag_2.snapSelectedOutlineTransformOriginUv; } });
|
|
77
81
|
const selected_outline_measurement_2 = require("./selected-outline-measurement");
|
|
78
82
|
Object.defineProperty(exports, "getOutlineSelectionInteraction", { enumerable: true, get: function () { return selected_outline_measurement_2.getOutlineSelectionInteraction; } });
|
|
@@ -131,8 +135,7 @@ const SelectedOutlineOverlay = ({ scale }) => {
|
|
|
131
135
|
sequences,
|
|
132
136
|
overrideIdsToNodePaths: overrideIdToNodePathMappings,
|
|
133
137
|
}).map(({ key, keyframeDisplayOffset, nodePathInfo, sequence }) => {
|
|
134
|
-
var _a;
|
|
135
|
-
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
138
|
+
var _a, _b, _c, _d, _e, _f;
|
|
136
139
|
if (sequence.refForOutline === null) {
|
|
137
140
|
throw new Error('Expected sequence to have a ref for outline');
|
|
138
141
|
}
|
|
@@ -140,26 +143,36 @@ const SelectedOutlineOverlay = ({ scale }) => {
|
|
|
140
143
|
const containsSelection = sequenceKeysContainingSelection.has(key);
|
|
141
144
|
const nodePath = nodePathInfo.sequenceSubscriptionKey;
|
|
142
145
|
const { controls } = sequence;
|
|
143
|
-
const fieldSchema = controls === null || controls === void 0 ? void 0 : controls.schema[selected_outline_types_1.translateFieldKey];
|
|
144
146
|
const nodePropStatuses = remotion_1.Internals.getPropStatusesCtx(propStatuses, nodePath);
|
|
147
|
+
const sourceFrame = timelinePosition - keyframeDisplayOffset;
|
|
148
|
+
const dragOverrides = (_a = getDragOverrides(nodePath)) !== null && _a !== void 0 ? _a : {};
|
|
149
|
+
const activeSchema = controls
|
|
150
|
+
? (0, selected_outline_drag_1.getSelectedOutlineActiveSchema)({
|
|
151
|
+
schema: controls.schema,
|
|
152
|
+
currentRuntimeValueDotNotation: controls.currentRuntimeValueDotNotation,
|
|
153
|
+
dragOverrides,
|
|
154
|
+
propStatus: nodePropStatuses,
|
|
155
|
+
frame: sourceFrame,
|
|
156
|
+
})
|
|
157
|
+
: null;
|
|
158
|
+
const fieldSchema = activeSchema === null || activeSchema === void 0 ? void 0 : activeSchema[selected_outline_types_1.translateFieldKey];
|
|
145
159
|
const propStatus = nodePropStatuses === null || nodePropStatuses === void 0 ? void 0 : nodePropStatuses[selected_outline_types_1.translateFieldKey];
|
|
146
|
-
const scaleFieldSchema =
|
|
160
|
+
const scaleFieldSchema = activeSchema === null || activeSchema === void 0 ? void 0 : activeSchema[selected_outline_types_1.scaleFieldKey];
|
|
147
161
|
const scalePropStatus = nodePropStatuses === null || nodePropStatuses === void 0 ? void 0 : nodePropStatuses[selected_outline_types_1.scaleFieldKey];
|
|
148
|
-
const rotationFieldSchema =
|
|
149
|
-
const rotationPropStatus =
|
|
150
|
-
const transformOriginFieldSchema =
|
|
162
|
+
const rotationFieldSchema = activeSchema === null || activeSchema === void 0 ? void 0 : activeSchema[selected_outline_types_1.rotateFieldKey];
|
|
163
|
+
const rotationPropStatus = nodePropStatuses === null || nodePropStatuses === void 0 ? void 0 : nodePropStatuses[selected_outline_types_1.rotateFieldKey];
|
|
164
|
+
const transformOriginFieldSchema = activeSchema === null || activeSchema === void 0 ? void 0 : activeSchema[selected_outline_types_1.transformOriginFieldKey];
|
|
151
165
|
const transformOriginPropStatus = nodePropStatuses === null || nodePropStatuses === void 0 ? void 0 : nodePropStatuses[selected_outline_types_1.transformOriginFieldKey];
|
|
152
|
-
const rotationSourceFrame = timelinePosition - keyframeDisplayOffset;
|
|
153
166
|
const transformOriginValueForRotation = (transformOriginFieldSchema === null || transformOriginFieldSchema === void 0 ? void 0 : transformOriginFieldSchema.type) === 'transform-origin' &&
|
|
154
167
|
((transformOriginPropStatus === null || transformOriginPropStatus === void 0 ? void 0 : transformOriginPropStatus.status) === 'static' ||
|
|
155
168
|
(transformOriginPropStatus === null || transformOriginPropStatus === void 0 ? void 0 : transformOriginPropStatus.status) === 'keyframed')
|
|
156
|
-
? String((
|
|
169
|
+
? String((_b = remotion_1.Internals.getEffectiveVisualModeValue({
|
|
157
170
|
propStatus: transformOriginPropStatus,
|
|
158
|
-
dragOverrideValue:
|
|
171
|
+
dragOverrideValue: dragOverrides[selected_outline_types_1.transformOriginFieldKey],
|
|
159
172
|
defaultValue: transformOriginFieldSchema.default,
|
|
160
|
-
frame:
|
|
173
|
+
frame: sourceFrame,
|
|
161
174
|
shouldResortToDefaultValueIfUndefined: true,
|
|
162
|
-
})) !== null &&
|
|
175
|
+
})) !== null && _b !== void 0 ? _b : transformOriginFieldSchema.default)
|
|
163
176
|
: '50% 50%';
|
|
164
177
|
const canDragStatus = (propStatus === null || propStatus === void 0 ? void 0 : propStatus.status) === 'static' ||
|
|
165
178
|
((propStatus === null || propStatus === void 0 ? void 0 : propStatus.status) === 'keyframed' &&
|
|
@@ -185,7 +198,7 @@ const SelectedOutlineOverlay = ({ scale }) => {
|
|
|
185
198
|
const selectedForTransformOrigin = (selectedTransformOriginInfo === null || selectedTransformOriginInfo === void 0 ? void 0 : selectedTransformOriginInfo.sequenceKey) === key;
|
|
186
199
|
const transformOriginSourceFrame = (selectedTransformOriginInfo === null || selectedTransformOriginInfo === void 0 ? void 0 : selectedTransformOriginInfo.displayFrame) === null ||
|
|
187
200
|
(selectedTransformOriginInfo === null || selectedTransformOriginInfo === void 0 ? void 0 : selectedTransformOriginInfo.displayFrame) === undefined
|
|
188
|
-
?
|
|
201
|
+
? sourceFrame
|
|
189
202
|
: selectedTransformOriginInfo.displayFrame - keyframeDisplayOffset;
|
|
190
203
|
const canTransformOriginStatus = (transformOriginPropStatus === null || transformOriginPropStatus === void 0 ? void 0 : transformOriginPropStatus.status) === 'static' ||
|
|
191
204
|
((transformOriginPropStatus === null || transformOriginPropStatus === void 0 ? void 0 : transformOriginPropStatus.status) === 'keyframed' &&
|
|
@@ -238,8 +251,7 @@ const SelectedOutlineOverlay = ({ scale }) => {
|
|
|
238
251
|
nodePath,
|
|
239
252
|
fieldKey: selected_outline_types_1.scaleFieldKey,
|
|
240
253
|
defaultValue: (() => {
|
|
241
|
-
|
|
242
|
-
const dragOverrideValue = ((_a = getDragOverrides(nodePath)) !== null && _a !== void 0 ? _a : {})[selected_outline_types_1.scaleFieldKey];
|
|
254
|
+
const dragOverrideValue = dragOverrides[selected_outline_types_1.scaleFieldKey];
|
|
243
255
|
const effectiveValue = remotion_1.Internals.getEffectiveVisualModeValue({
|
|
244
256
|
propStatus: scalePropStatus,
|
|
245
257
|
dragOverrideValue,
|
|
@@ -273,48 +285,48 @@ const SelectedOutlineOverlay = ({ scale }) => {
|
|
|
273
285
|
nodePath,
|
|
274
286
|
originDefault: transformOriginFieldSchema.default,
|
|
275
287
|
originPropStatus: transformOriginPropStatus,
|
|
276
|
-
originValue: String((
|
|
288
|
+
originValue: String((_c = remotion_1.Internals.getEffectiveVisualModeValue({
|
|
277
289
|
propStatus: transformOriginPropStatus,
|
|
278
|
-
dragOverrideValue:
|
|
290
|
+
dragOverrideValue: dragOverrides[selected_outline_types_1.transformOriginFieldKey],
|
|
279
291
|
defaultValue: transformOriginFieldSchema.default,
|
|
280
292
|
frame: transformOriginSourceFrame,
|
|
281
293
|
shouldResortToDefaultValueIfUndefined: true,
|
|
282
|
-
})) !== null &&
|
|
294
|
+
})) !== null && _c !== void 0 ? _c : transformOriginFieldSchema.default),
|
|
283
295
|
rotateValue: String((rotationPropStatus === null || rotationPropStatus === void 0 ? void 0 : rotationPropStatus.status) === 'static' ||
|
|
284
296
|
(rotationPropStatus === null || rotationPropStatus === void 0 ? void 0 : rotationPropStatus.status) === 'keyframed'
|
|
285
|
-
? ((
|
|
297
|
+
? ((_d = remotion_1.Internals.getEffectiveVisualModeValue({
|
|
286
298
|
propStatus: rotationPropStatus,
|
|
287
|
-
dragOverrideValue:
|
|
299
|
+
dragOverrideValue: dragOverrides[selected_outline_types_1.rotateFieldKey],
|
|
288
300
|
defaultValue: (rotationFieldSchema === null || rotationFieldSchema === void 0 ? void 0 : rotationFieldSchema.type) === 'rotation-css'
|
|
289
301
|
? rotationFieldSchema.default
|
|
290
302
|
: '0deg',
|
|
291
303
|
frame: transformOriginSourceFrame,
|
|
292
304
|
shouldResortToDefaultValueIfUndefined: true,
|
|
293
|
-
})) !== null &&
|
|
305
|
+
})) !== null && _d !== void 0 ? _d : '0deg')
|
|
294
306
|
: '0deg'),
|
|
295
307
|
scaleValue: (scalePropStatus === null || scalePropStatus === void 0 ? void 0 : scalePropStatus.status) === 'static' ||
|
|
296
308
|
(scalePropStatus === null || scalePropStatus === void 0 ? void 0 : scalePropStatus.status) === 'keyframed'
|
|
297
|
-
? String((
|
|
309
|
+
? String((_e = remotion_1.Internals.getEffectiveVisualModeValue({
|
|
298
310
|
propStatus: scalePropStatus,
|
|
299
|
-
dragOverrideValue:
|
|
311
|
+
dragOverrideValue: dragOverrides[selected_outline_types_1.scaleFieldKey],
|
|
300
312
|
defaultValue: (scaleFieldSchema === null || scaleFieldSchema === void 0 ? void 0 : scaleFieldSchema.type) === 'scale'
|
|
301
313
|
? scaleFieldSchema.default
|
|
302
314
|
: 1,
|
|
303
315
|
frame: transformOriginSourceFrame,
|
|
304
316
|
shouldResortToDefaultValueIfUndefined: true,
|
|
305
|
-
})) !== null &&
|
|
317
|
+
})) !== null && _e !== void 0 ? _e : 1)
|
|
306
318
|
: '1',
|
|
307
319
|
schema: controls.schema,
|
|
308
320
|
sourceFrame: transformOriginSourceFrame,
|
|
309
321
|
translateDefault: fieldSchema.default,
|
|
310
322
|
translatePropStatus: propStatus,
|
|
311
|
-
translateValue: String((
|
|
323
|
+
translateValue: String((_f = remotion_1.Internals.getEffectiveVisualModeValue({
|
|
312
324
|
propStatus,
|
|
313
|
-
dragOverrideValue:
|
|
325
|
+
dragOverrideValue: dragOverrides[selected_outline_types_1.translateFieldKey],
|
|
314
326
|
defaultValue: fieldSchema.default,
|
|
315
327
|
frame: transformOriginSourceFrame,
|
|
316
328
|
shouldResortToDefaultValueIfUndefined: true,
|
|
317
|
-
})) !== null &&
|
|
329
|
+
})) !== null && _f !== void 0 ? _f : fieldSchema.default),
|
|
318
330
|
}
|
|
319
331
|
: null,
|
|
320
332
|
uvHandles: containsSelection
|
|
@@ -608,6 +620,6 @@ const SelectedOutlineOverlay = ({ scale }) => {
|
|
|
608
620
|
if (outlineTargets.length === 0) {
|
|
609
621
|
return null;
|
|
610
622
|
}
|
|
611
|
-
return (jsx_runtime_1.jsxs("svg", { ref: overlayRef, style: outlineContainer, width: "100%", height: "100%", "aria-hidden": "true", children: [outlines.map((outline) => (jsx_runtime_1.jsx(SelectedOutlineElement_1.SelectedOutlineElement, { allDragTargets: allDragTargets, allRotationDragTargets: allRotationDragTargets, allScaleDragTargets: allScaleDragTargets, dragging: draggingOutline, hovered: hoveredOutlineKey === outline.key, outline: outline, onDraggingChange: onDraggingChange, onHoverChange: setHoveredOutlineKey, onSelect: selectItem, scale: scale, target: targetsByKey.get(outline.key) }, outline.key))), outlines.map((outline) => (jsx_runtime_1.jsx(SelectedOutlineUvControls_1.SelectedOutlineUvHandleConnectionLayer, { outline: outline, target: targetsByKey.get(outline.key) }, `${outline.key}-uv-connection-lines`))), outlines.map((outline) => (jsx_runtime_1.jsx(SelectedOutlineUvControls_1.SelectedOutlineUvHandleCircleLayer, { onDraggingChange: onDraggingChange, outline: outline, target: targetsByKey.get(outline.key) }, `${outline.key}-uv-handles`)))] }));
|
|
623
|
+
return (jsx_runtime_1.jsxs("svg", { ref: overlayRef, style: outlineContainer, width: "100%", height: "100%", "aria-hidden": "true", children: [outlines.map((outline) => (jsx_runtime_1.jsx(SelectedOutlineElement_1.SelectedOutlineElement, { allDragTargets: allDragTargets, allRotationDragTargets: allRotationDragTargets, allScaleDragTargets: allScaleDragTargets, dragging: draggingOutline, hovered: hoveredOutlineKey === outline.key, outline: outline, onDraggingChange: onDraggingChange, onHoverChange: setHoveredOutlineKey, onSelect: selectItem, scale: scale, target: targetsByKey.get(outline.key) }, outline.key))), outlines.map((outline) => (jsx_runtime_1.jsx(SelectedOutlineUvControls_1.SelectedOutlineUvHandleConnectionLayer, { outline: outline, target: targetsByKey.get(outline.key) }, `${outline.key}-uv-connection-lines`))), outlines.map((outline) => (jsx_runtime_1.jsx(SelectedOutlineUvControls_1.SelectedOutlineUvHandleCircleLayer, { onDraggingChange: onDraggingChange, onSelect: selectItem, outline: outline, target: targetsByKey.get(outline.key) }, `${outline.key}-uv-handles`)))] }));
|
|
612
624
|
};
|
|
613
625
|
exports.SelectedOutlineOverlay = SelectedOutlineOverlay;
|
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import type { SequenceNodePathInfo } from '../helpers/get-timeline-sequence-sort-key';
|
|
2
3
|
import type { SelectedOutline } from './selected-outline-geometry';
|
|
3
4
|
import { type SelectedOutlineUvHandle } from './selected-outline-uv';
|
|
5
|
+
import type { TimelineSelection, TimelineSelectionInteraction } from './Timeline/TimelineSelection';
|
|
6
|
+
export declare const getSelectedOutlineUvHandleTimelineSelection: ({ effectIndex, fieldKey, nodePathInfo, }: {
|
|
7
|
+
readonly effectIndex: number;
|
|
8
|
+
readonly fieldKey: string;
|
|
9
|
+
readonly nodePathInfo: SequenceNodePathInfo;
|
|
10
|
+
}) => TimelineSelection;
|
|
4
11
|
type UvTarget = {
|
|
5
12
|
readonly containsSelection: boolean;
|
|
13
|
+
readonly nodePathInfo: SequenceNodePathInfo;
|
|
6
14
|
readonly uvHandles: readonly SelectedOutlineUvHandle[];
|
|
7
15
|
};
|
|
8
16
|
export declare const SelectedOutlineUvHandleConnectionLayer: React.FC<{
|
|
@@ -11,6 +19,7 @@ export declare const SelectedOutlineUvHandleConnectionLayer: React.FC<{
|
|
|
11
19
|
}>;
|
|
12
20
|
export declare const SelectedOutlineUvHandleCircleLayer: React.FC<{
|
|
13
21
|
readonly onDraggingChange: (dragging: boolean) => void;
|
|
22
|
+
readonly onSelect: (item: TimelineSelection, interaction?: TimelineSelectionInteraction) => void;
|
|
14
23
|
readonly outline: SelectedOutline;
|
|
15
24
|
readonly target: UvTarget | undefined;
|
|
16
25
|
}>;
|
|
@@ -33,11 +33,14 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.SelectedOutlineUvHandleCircleLayer = exports.SelectedOutlineUvHandleConnectionLayer = void 0;
|
|
36
|
+
exports.SelectedOutlineUvHandleCircleLayer = exports.SelectedOutlineUvHandleConnectionLayer = exports.getSelectedOutlineUvHandleTimelineSelection = void 0;
|
|
37
37
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
38
38
|
const react_1 = __importStar(require("react"));
|
|
39
39
|
const remotion_1 = require("remotion");
|
|
40
40
|
const colors_1 = require("../helpers/colors");
|
|
41
|
+
const ForceSpecificCursor_1 = require("./ForceSpecificCursor");
|
|
42
|
+
const selected_outline_drag_1 = require("./selected-outline-drag");
|
|
43
|
+
const selected_outline_measurement_1 = require("./selected-outline-measurement");
|
|
41
44
|
const selected_outline_uv_1 = require("./selected-outline-uv");
|
|
42
45
|
const call_add_keyframe_1 = require("./Timeline/call-add-keyframe");
|
|
43
46
|
const save_effect_prop_1 = require("./Timeline/save-effect-prop");
|
|
@@ -47,11 +50,28 @@ const getSvgPointFromPointerEvent = ({ event, rect, }) => {
|
|
|
47
50
|
y: event.clientY - rect.top,
|
|
48
51
|
};
|
|
49
52
|
};
|
|
53
|
+
const uvHandleRadius = 4.25;
|
|
54
|
+
const selectedUvHandleRadius = 6.8;
|
|
55
|
+
const uvHandleStyle = {
|
|
56
|
+
filter: 'drop-shadow(0 1px 2px rgba(0, 0, 0, 0.28))',
|
|
57
|
+
};
|
|
58
|
+
const getSelectedOutlineUvHandleTimelineSelection = ({ effectIndex, fieldKey, nodePathInfo, }) => {
|
|
59
|
+
return {
|
|
60
|
+
type: 'sequence-effect-prop',
|
|
61
|
+
nodePathInfo: {
|
|
62
|
+
...nodePathInfo,
|
|
63
|
+
auxiliaryKeys: ['effects', String(effectIndex), fieldKey],
|
|
64
|
+
},
|
|
65
|
+
i: effectIndex,
|
|
66
|
+
key: fieldKey,
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
exports.getSelectedOutlineUvHandleTimelineSelection = getSelectedOutlineUvHandleTimelineSelection;
|
|
50
70
|
const SelectedUvHandleConnectionLines = ({ handles, outline }) => {
|
|
51
71
|
const lines = (0, react_1.useMemo)(() => (0, selected_outline_uv_1.getUvHandleConnectionLines)({ handles, points: outline.points }), [handles, outline.points]);
|
|
52
72
|
return (jsx_runtime_1.jsx(jsx_runtime_1.Fragment, { children: lines.map((line) => (jsx_runtime_1.jsx("line", { x1: line.from.x, y1: line.from.y, x2: line.to.x, y2: line.to.y, stroke: colors_1.BLUE, strokeWidth: 2, vectorEffect: "non-scaling-stroke", pointerEvents: "none" }, line.key))) }));
|
|
53
73
|
};
|
|
54
|
-
const SelectedUvHandleCircle = ({ handle, onDraggingChange, outline }) => {
|
|
74
|
+
const SelectedUvHandleCircle = ({ handle, nodePathInfo, onDraggingChange, onSelect, outline }) => {
|
|
55
75
|
const { setEffectDragOverrides, clearEffectDragOverrides, setPropStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModeSettersContext);
|
|
56
76
|
const position = (0, react_1.useMemo)(() => (0, selected_outline_uv_1.getUvHandlePosition)(outline.points, handle.value), [handle.value, outline.points]);
|
|
57
77
|
const onPointerDown = react_1.default.useCallback((event) => {
|
|
@@ -60,13 +80,24 @@ const SelectedUvHandleCircle = ({ handle, onDraggingChange, outline }) => {
|
|
|
60
80
|
}
|
|
61
81
|
event.preventDefault();
|
|
62
82
|
event.stopPropagation();
|
|
83
|
+
const interaction = (0, selected_outline_measurement_1.getOutlineSelectionInteraction)(event);
|
|
84
|
+
onSelect((0, exports.getSelectedOutlineUvHandleTimelineSelection)({
|
|
85
|
+
effectIndex: handle.effectIndex,
|
|
86
|
+
fieldKey: handle.fieldKey,
|
|
87
|
+
nodePathInfo,
|
|
88
|
+
}), interaction);
|
|
89
|
+
if (interaction.shiftKey || interaction.toggleKey) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
63
92
|
const svg = event.currentTarget.ownerSVGElement;
|
|
64
93
|
if (svg === null) {
|
|
65
94
|
return;
|
|
66
95
|
}
|
|
67
96
|
const svgRect = svg.getBoundingClientRect();
|
|
97
|
+
const startPointerX = event.clientX;
|
|
98
|
+
const startPointerY = event.clientY;
|
|
68
99
|
let lastValue = null;
|
|
69
|
-
|
|
100
|
+
let dragging = false;
|
|
70
101
|
const defaultValue = handle.fieldDefault !== undefined
|
|
71
102
|
? JSON.stringify(handle.fieldDefault)
|
|
72
103
|
: null;
|
|
@@ -75,7 +106,13 @@ const SelectedUvHandleCircle = ({ handle, onDraggingChange, outline }) => {
|
|
|
75
106
|
event: pointerEvent,
|
|
76
107
|
rect: svgRect,
|
|
77
108
|
});
|
|
78
|
-
const
|
|
109
|
+
const rawUv = (0, selected_outline_uv_1.getUvCoordinateForPoint)(outline.points, point);
|
|
110
|
+
const snappedUv = (0, selected_outline_drag_1.snapSelectedOutlineUv)({
|
|
111
|
+
point,
|
|
112
|
+
points: outline.points,
|
|
113
|
+
uv: rawUv,
|
|
114
|
+
});
|
|
115
|
+
const nextValue = (0, selected_outline_uv_1.roundUvCoordinate)((0, selected_outline_uv_1.constrainUv)(snappedUv, handle.fieldSchema), handle.fieldSchema);
|
|
79
116
|
lastValue = nextValue;
|
|
80
117
|
setEffectDragOverrides(handle.nodePath, handle.effectIndex, handle.fieldKey, handle.propStatus.status === 'keyframed'
|
|
81
118
|
? remotion_1.Internals.makeKeyframedDragOverride({
|
|
@@ -85,16 +122,31 @@ const SelectedUvHandleCircle = ({ handle, onDraggingChange, outline }) => {
|
|
|
85
122
|
})
|
|
86
123
|
: remotion_1.Internals.makeStaticDragOverride(nextValue));
|
|
87
124
|
};
|
|
88
|
-
|
|
125
|
+
const updateDragFromPointerEvent = (pointerEvent) => {
|
|
126
|
+
if (!dragging) {
|
|
127
|
+
const deltaX = pointerEvent.clientX - startPointerX;
|
|
128
|
+
const deltaY = pointerEvent.clientY - startPointerY;
|
|
129
|
+
if (!(0, selected_outline_drag_1.isSelectedOutlineDragPastThreshold)({ deltaX, deltaY })) {
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
dragging = true;
|
|
133
|
+
(0, ForceSpecificCursor_1.forceSpecificCursor)('default');
|
|
134
|
+
onDraggingChange(true);
|
|
135
|
+
}
|
|
136
|
+
updateFromPointerEvent(pointerEvent);
|
|
137
|
+
};
|
|
89
138
|
const onPointerMove = (moveEvent) => {
|
|
90
139
|
moveEvent.preventDefault();
|
|
91
|
-
|
|
140
|
+
updateDragFromPointerEvent(moveEvent);
|
|
92
141
|
};
|
|
93
142
|
const onPointerUp = () => {
|
|
94
143
|
window.removeEventListener('pointermove', onPointerMove);
|
|
95
144
|
window.removeEventListener('pointerup', onPointerUp);
|
|
96
145
|
window.removeEventListener('pointercancel', onPointerUp);
|
|
97
|
-
|
|
146
|
+
if (dragging) {
|
|
147
|
+
(0, ForceSpecificCursor_1.stopForcingSpecificCursor)();
|
|
148
|
+
onDraggingChange(false);
|
|
149
|
+
}
|
|
98
150
|
const stringifiedValue = lastValue === null ? null : JSON.stringify(lastValue);
|
|
99
151
|
const shouldSave = (() => {
|
|
100
152
|
if (lastValue === null) {
|
|
@@ -144,12 +196,14 @@ const SelectedUvHandleCircle = ({ handle, onDraggingChange, outline }) => {
|
|
|
144
196
|
}, [
|
|
145
197
|
clearEffectDragOverrides,
|
|
146
198
|
handle,
|
|
199
|
+
nodePathInfo,
|
|
147
200
|
onDraggingChange,
|
|
201
|
+
onSelect,
|
|
148
202
|
outline.points,
|
|
149
203
|
setPropStatuses,
|
|
150
204
|
setEffectDragOverrides,
|
|
151
205
|
]);
|
|
152
|
-
return (jsx_runtime_1.jsx("circle", { cx: position.x, cy: position.y, r:
|
|
206
|
+
return (jsx_runtime_1.jsx("circle", { cx: position.x, cy: position.y, r: handle.isSelected ? selectedUvHandleRadius : uvHandleRadius, fill: "white", stroke: colors_1.BLUE, strokeWidth: 2, style: uvHandleStyle, vectorEffect: "non-scaling-stroke", pointerEvents: "all", cursor: "default", onPointerDown: onPointerDown }));
|
|
153
207
|
};
|
|
154
208
|
const SelectedOutlineUvHandleConnectionLayer = ({ outline, target }) => {
|
|
155
209
|
if (!(target === null || target === void 0 ? void 0 : target.containsSelection) || target.uvHandles.length === 0) {
|
|
@@ -158,10 +212,10 @@ const SelectedOutlineUvHandleConnectionLayer = ({ outline, target }) => {
|
|
|
158
212
|
return (jsx_runtime_1.jsx(SelectedUvHandleConnectionLines, { handles: target.uvHandles, outline: outline }));
|
|
159
213
|
};
|
|
160
214
|
exports.SelectedOutlineUvHandleConnectionLayer = SelectedOutlineUvHandleConnectionLayer;
|
|
161
|
-
const SelectedOutlineUvHandleCircleLayer = ({ onDraggingChange, outline, target }) => {
|
|
215
|
+
const SelectedOutlineUvHandleCircleLayer = ({ onDraggingChange, onSelect, outline, target }) => {
|
|
162
216
|
if (!(target === null || target === void 0 ? void 0 : target.containsSelection) || target.uvHandles.length === 0) {
|
|
163
217
|
return null;
|
|
164
218
|
}
|
|
165
|
-
return (jsx_runtime_1.jsx(jsx_runtime_1.Fragment, { children: target.uvHandles.map((handle) => (jsx_runtime_1.jsx(SelectedUvHandleCircle, { handle: handle, onDraggingChange: onDraggingChange, outline: outline }, `${handle.effectIndex}-${handle.fieldKey}`))) }));
|
|
219
|
+
return (jsx_runtime_1.jsx(jsx_runtime_1.Fragment, { children: target.uvHandles.map((handle) => (jsx_runtime_1.jsx(SelectedUvHandleCircle, { handle: handle, nodePathInfo: target.nodePathInfo, onDraggingChange: onDraggingChange, onSelect: onSelect, outline: outline }, `${handle.effectIndex}-${handle.fieldKey}`))) }));
|
|
166
220
|
};
|
|
167
221
|
exports.SelectedOutlineUvHandleCircleLayer = SelectedOutlineUvHandleCircleLayer;
|
|
@@ -22,12 +22,12 @@ exports.Tabs = Tabs;
|
|
|
22
22
|
const selectorButton = {
|
|
23
23
|
border: 'none',
|
|
24
24
|
flex: 1,
|
|
25
|
-
padding:
|
|
26
|
-
height:
|
|
27
|
-
paddingLeft:
|
|
25
|
+
padding: 3,
|
|
26
|
+
height: 34,
|
|
27
|
+
paddingLeft: 12,
|
|
28
28
|
display: 'flex',
|
|
29
29
|
flexDirection: 'row',
|
|
30
|
-
fontSize:
|
|
30
|
+
fontSize: 13,
|
|
31
31
|
color: 'inherit',
|
|
32
32
|
alignItems: 'center',
|
|
33
33
|
cursor: 'default',
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import type { SegmentedControlItem } from '../SegmentedControl';
|
|
2
3
|
import type { TimelineSelection } from './TimelineSelection';
|
|
3
4
|
import type { TimelineEasingValue } from './update-selected-easing';
|
|
4
|
-
export type
|
|
5
|
-
type: 'easing-editor';
|
|
5
|
+
export type EasingEditorState = {
|
|
6
6
|
initialEasing: TimelineEasingValue;
|
|
7
7
|
selections: TimelineSelection[];
|
|
8
8
|
};
|
|
9
|
-
export declare const
|
|
10
|
-
readonly state:
|
|
9
|
+
export declare const EasingEditor: React.FC<{
|
|
10
|
+
readonly state: EasingEditorState;
|
|
11
|
+
readonly renderHeader?: (modeItems: SegmentedControlItem[]) => React.ReactNode;
|
|
11
12
|
}>;
|