@remotion/studio 4.0.507 → 4.0.509
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/FastRefreshProvider.js +13 -9
- package/dist/Studio.d.ts +5 -0
- package/dist/Studio.js +2 -2
- package/dist/components/Canvas.js +35 -5
- package/dist/components/CodingAgentIcon.d.ts +3 -1
- package/dist/components/CodingAgentIcon.js +4 -9
- package/dist/components/ColorPicker/AlphaSlider.js +2 -2
- package/dist/components/ColorPicker/HueSlider.js +2 -2
- package/dist/components/ColorPicker/SaturationValueArea.js +2 -2
- package/dist/components/ConfigureDefaultEditorModal.js +1 -1
- package/dist/components/ContextMenu.d.ts +1 -0
- package/dist/components/ContextMenu.js +32 -5
- package/dist/components/EditorContent.js +4 -3
- package/dist/components/EditorGuides/Guide.js +2 -2
- package/dist/components/EditorRuler/index.js +2 -2
- package/dist/components/ExplorerPanel.js +19 -1
- package/dist/components/InlineAction.d.ts +2 -1
- package/dist/components/InlineAction.js +3 -3
- package/dist/components/InspectorLocationCopy.js +1 -1
- package/dist/components/InspectorOpenInEditor.d.ts +1 -0
- package/dist/components/InspectorOpenInEditor.js +52 -8
- package/dist/components/InspectorPanel/AlignmentControls.js +2 -2
- package/dist/components/InspectorPanel/CompositionInspector.js +3 -1
- package/dist/components/InspectorPanel/SequenceSelectionInspector.js +3 -3
- package/dist/components/InspectorPanel/styles.js +1 -1
- package/dist/components/InspectorSequenceSection.js +36 -4
- package/dist/components/Menu/MenuItem.js +2 -2
- package/dist/components/MenuBuildIndicator.js +1 -1
- package/dist/components/ModalContainer.js +1 -1
- package/dist/components/Modals.js +2 -9
- package/dist/components/NewComposition/InputDragger.js +2 -2
- package/dist/components/NewComposition/NewComposition.d.ts +2 -0
- package/dist/components/NewComposition/NewComposition.js +38 -6
- package/dist/components/NewComposition/get-new-composition-defaults.d.ts +1 -1
- package/dist/components/NewComposition/get-new-composition-defaults.js +9 -1
- package/dist/components/PlayPause.d.ts +1 -1
- package/dist/components/PlayPause.js +61 -12
- package/dist/components/RenderButton.js +16 -12
- package/dist/components/RenderModal/GuiRenderStatus.js +23 -6
- package/dist/components/RenderModal/InfoBubble.d.ts +1 -0
- package/dist/components/RenderModal/InfoBubble.js +6 -4
- package/dist/components/RenderModal/InfoTooltip.d.ts +1 -0
- package/dist/components/RenderModal/InfoTooltip.js +12 -12
- package/dist/components/RenderModal/SchemaEditor/SchemaLabel.d.ts +5 -0
- package/dist/components/RenderModal/SchemaEditor/SchemaLabel.js +16 -3
- package/dist/components/RenderModal/SchemaEditor/ZodArrayEditor.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodBooleanEditor.d.ts +2 -0
- package/dist/components/RenderModal/SchemaEditor/ZodBooleanEditor.js +3 -2
- 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 +2 -1
- package/dist/components/RenderModal/SchemaEditor/ZodEnumEditor.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodMatrixEditor.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodNonEditableValue.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodNumberEditor.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodObjectEditor.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodOrNullishEditor.js +6 -1
- package/dist/components/RenderModal/SchemaEditor/ZodStaticFileEditor.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodStringEditor.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodSwitch.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodTextareaEditor.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/ZodTupleEditor.js +1 -1
- package/dist/components/RenderModal/SchemaEditor/zod-schema-type.d.ts +1 -0
- package/dist/components/RenderModal/SchemaEditor/zod-schema-type.js +12 -1
- package/dist/components/SelectedOutlineCanvasRotation.d.ts +9 -0
- package/dist/components/SelectedOutlineCanvasRotation.js +239 -0
- package/dist/components/SelectedOutlineCropControls.js +2 -2
- package/dist/components/SelectedOutlineElement.d.ts +2 -1
- package/dist/components/SelectedOutlineElement.js +40 -5
- package/dist/components/SelectedOutlineOverlay.d.ts +1 -1
- package/dist/components/SelectedOutlineOverlay.js +55 -26
- package/dist/components/SelectedOutlinePolygon.d.ts +1 -0
- package/dist/components/SelectedOutlinePolygon.js +6 -5
- package/dist/components/SelectedOutlineRenderer.d.ts +1 -0
- package/dist/components/SelectedOutlineRenderer.js +24 -7
- package/dist/components/SelectedOutlineRotationCornerHandle.d.ts +6 -0
- package/dist/components/SelectedOutlineRotationCornerHandle.js +9 -7
- package/dist/components/SelectedOutlineScaleEdgeLine.d.ts +2 -0
- package/dist/components/SelectedOutlineScaleEdgeLine.js +11 -7
- package/dist/components/SelectedOutlineTransformOriginHandle.js +50 -24
- package/dist/components/SelectedOutlineUvControls.js +8 -8
- package/dist/components/SequencePropsSubscriptionProvider.js +8 -0
- package/dist/components/SettingsModalFooter.js +1 -1
- package/dist/components/Splitter/SplitterHandle.js +2 -2
- package/dist/components/Tabs/index.d.ts +2 -0
- package/dist/components/Tabs/index.js +2 -2
- package/dist/components/Timeline/EasingEditorModal.js +2 -2
- package/dist/components/Timeline/SequencePropsObserver.js +97 -1
- package/dist/components/Timeline/SubscribeToNodePaths.js +4 -2
- package/dist/components/Timeline/Timeline.js +55 -1
- package/dist/components/Timeline/TimelineClipboardKeybindings.js +99 -35
- package/dist/components/Timeline/TimelineDragHandler.js +2 -2
- package/dist/components/Timeline/TimelineEffectItem.js +1 -4
- package/dist/components/Timeline/TimelineEffectPropItem.js +7 -0
- package/dist/components/Timeline/TimelineFieldRowContent.js +10 -3
- package/dist/components/Timeline/TimelineInOutDragHandler.js +2 -2
- package/dist/components/Timeline/TimelineLayerEye.js +2 -2
- package/dist/components/Timeline/TimelineRotationField.js +84 -12
- package/dist/components/Timeline/TimelineScaleField.js +58 -4
- package/dist/components/Timeline/TimelineSelection.d.ts +4 -0
- package/dist/components/Timeline/TimelineSelection.js +47 -4
- package/dist/components/Timeline/TimelineSequenceItem.js +43 -25
- package/dist/components/Timeline/TimelineSequencePropItem.js +12 -3
- package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +6 -6
- package/dist/components/Timeline/TimelineTransformOriginField.js +78 -4
- package/dist/components/Timeline/TimelineTranslateField.js +55 -15
- package/dist/components/Timeline/Transform3DModeContext.d.ts +1 -0
- package/dist/components/Timeline/Transform3DModeContext.js +5 -0
- package/dist/components/Timeline/delete-selected-timeline-item.js +0 -6
- package/dist/components/Timeline/get-sequence-context-menu-items.js +14 -6
- package/dist/components/Timeline/keyframe-clipboard.d.ts +5 -1
- package/dist/components/Timeline/keyframe-clipboard.js +3 -2
- package/dist/components/Timeline/save-sequence-prop.js +16 -7
- package/dist/components/Timeline/sequence-prop-clipboard.d.ts +31 -0
- package/dist/components/Timeline/sequence-prop-clipboard.js +142 -0
- package/dist/components/Timeline/sequence-props-subscription-store.d.ts +2 -1
- package/dist/components/Timeline/sequence-props-subscription-store.js +5 -2
- package/dist/components/Timeline/timeline-field-display-utils.js +2 -2
- package/dist/components/Timeline/timeline-field-row-layout.d.ts +6 -0
- package/dist/components/Timeline/timeline-field-row-layout.js +16 -1
- package/dist/components/Timeline/timeline-rotation-utils.d.ts +16 -0
- package/dist/components/Timeline/timeline-rotation-utils.js +145 -4
- package/dist/components/Timeline/timeline-translate-utils.d.ts +3 -2
- package/dist/components/Timeline/timeline-translate-utils.js +8 -4
- package/dist/components/Timeline/transform-3d-mode.d.ts +6 -0
- package/dist/components/Timeline/transform-3d-mode.js +36 -0
- package/dist/components/Timeline/transform-origin-utils.d.ts +4 -0
- package/dist/components/Timeline/transform-origin-utils.js +12 -6
- package/dist/components/Timeline/update-selected-easing.js +8 -0
- package/dist/components/Timeline/use-open-sequence-in-apps.js +3 -1
- package/dist/components/Timeline/use-resolved-stack-react-to-change.d.ts +5 -1
- package/dist/components/Timeline/use-resolved-stack-react-to-change.js +67 -10
- package/dist/components/Timeline/use-sequence-props-subscription.d.ts +3 -1
- package/dist/components/Timeline/use-sequence-props-subscription.js +7 -2
- package/dist/components/Timeline/use-timeline-keyframe-drag.js +4 -4
- package/dist/components/call-api.js +2 -0
- package/dist/components/canvas-rotation-cursor.d.ts +1 -0
- package/dist/components/canvas-rotation-cursor.js +14 -0
- package/dist/components/folder-menu-items.js +1 -0
- package/dist/components/get-open-in-menu-items.d.ts +8 -1
- package/dist/components/get-open-in-menu-items.js +93 -8
- package/dist/components/import-assets.js +7 -0
- package/dist/components/root-composition-menu-items.js +1 -0
- package/dist/components/selected-outline-control-layout.d.ts +14 -0
- package/dist/components/selected-outline-control-layout.js +94 -0
- package/dist/components/selected-outline-drag.d.ts +11 -5
- package/dist/components/selected-outline-drag.js +80 -42
- package/dist/components/selected-outline-measurement.d.ts +5 -0
- package/dist/components/selected-outline-measurement.js +28 -1
- package/dist/components/selected-outline-types.d.ts +6 -0
- package/dist/components/use-default-editor-info.js +28 -3
- package/dist/esm/{chunk-ptnd65a9.js → chunk-jdn6nkbk.js} +10087 -7919
- package/dist/esm/{chunk-fgedsvhb.js → chunk-r46yxrjr.js} +1 -2
- package/dist/esm/index.mjs +357 -2
- package/dist/esm/internals.mjs +10086 -7918
- package/dist/esm/previewEntry.mjs +9926 -7758
- package/dist/esm/renderEntry.mjs +4 -2
- package/dist/helpers/get-box-quads-polyfill-internals.js +10 -2
- package/dist/helpers/get-canvas-capture-import.d.ts +7 -0
- package/dist/helpers/get-canvas-capture-import.js +43 -0
- package/dist/helpers/get-git-menu-item.d.ts +1 -1
- package/dist/helpers/get-git-menu-item.js +33 -3
- package/dist/helpers/inserted-element-selection.d.ts +12 -0
- package/dist/helpers/inserted-element-selection.js +29 -0
- package/dist/helpers/open-in-editor.d.ts +3 -1
- package/dist/helpers/open-in-editor.js +5 -1
- package/dist/helpers/pointer-session.d.ts +6 -2
- package/dist/helpers/pointer-session.js +29 -12
- package/dist/helpers/preview-server-events.js +4 -0
- package/dist/helpers/sequence-node-path-mutations.d.ts +4 -0
- package/dist/helpers/sequence-node-path-mutations.js +31 -0
- package/dist/helpers/use-create-composition.d.ts +15 -2
- package/dist/helpers/use-create-composition.js +11 -17
- package/dist/helpers/use-menu-structure.js +1 -0
- package/dist/icons/cube.d.ts +4 -0
- package/dist/icons/cube.js +6 -0
- package/dist/icons/finder.d.ts +4 -0
- package/dist/icons/finder.js +8 -0
- package/dist/icons/github.d.ts +4 -0
- package/dist/icons/github.js +11 -0
- package/dist/icons/terminal.d.ts +6 -0
- package/dist/icons/terminal.js +46 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.js +8 -0
- package/dist/renderEntry.js +2 -2
- package/dist/state/modals.d.ts +9 -1
- package/dist/state/transform-3d-mode.d.ts +10 -0
- package/dist/state/transform-3d-mode.js +27 -0
- package/dist/state/z-index.d.ts +0 -1
- package/dist/state/z-index.js +28 -37
- package/package.json +12 -12
|
@@ -14,6 +14,7 @@ export declare const SelectedOutlinePolygon: React.NamedExoticComponent<{
|
|
|
14
14
|
readonly hasTarget: boolean;
|
|
15
15
|
readonly hovered: boolean;
|
|
16
16
|
readonly onContextMenuOpen: SelectedOutlineContextMenuOpenHandler;
|
|
17
|
+
readonly onContextMenuOpenChange: (open: boolean) => void;
|
|
17
18
|
readonly outline: SelectedOutline;
|
|
18
19
|
readonly onDraggingChange: (dragging: boolean) => void;
|
|
19
20
|
readonly onHoverChange: (key: string | null) => void;
|
|
@@ -55,7 +55,7 @@ const call_add_keyframe_1 = require("./Timeline/call-add-keyframe");
|
|
|
55
55
|
const focus_inspector_field_1 = require("./Timeline/focus-inspector-field");
|
|
56
56
|
const imperative_state_1 = require("./Timeline/imperative-state");
|
|
57
57
|
const save_sequence_prop_1 = require("./Timeline/save-sequence-prop");
|
|
58
|
-
const SelectedOutlinePolygonUnmemoized = ({ compositionHeight, compositionWidth, dragging, getAllDragOutlines, getAllDragTargets, getLayoutTarget, getTarget, hasTarget, hovered, onContextMenuOpen, outline, onDraggingChange, onHoverChange, onSnapPointsChange, onSelect, onDoubleClickTarget, scale, showSelectedOutline, }) => {
|
|
58
|
+
const SelectedOutlinePolygonUnmemoized = ({ compositionHeight, compositionWidth, dragging, getAllDragOutlines, getAllDragTargets, getLayoutTarget, getTarget, hasTarget, hovered, onContextMenuOpen, onContextMenuOpenChange, outline, onDraggingChange, onHoverChange, onSnapPointsChange, onSelect, onDoubleClickTarget, scale, showSelectedOutline, }) => {
|
|
59
59
|
const { previewServerState } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx);
|
|
60
60
|
const { canvasContent } = (0, react_1.useContext)(remotion_1.Internals.CompositionManager);
|
|
61
61
|
const { getDragOverrides } = (0, react_1.useContext)(remotion_1.Internals.VisualModeDragOverridesContext);
|
|
@@ -109,6 +109,7 @@ const SelectedOutlinePolygonUnmemoized = ({ compositionHeight, compositionWidth,
|
|
|
109
109
|
getDragOverrides,
|
|
110
110
|
timelinePosition: (0, imperative_state_1.getCurrentFrame)(),
|
|
111
111
|
});
|
|
112
|
+
const dragOutlines = selected ? getAllDragOutlines() : [outline];
|
|
112
113
|
let lastValues = new Map();
|
|
113
114
|
let currentPointerX = startPointerX;
|
|
114
115
|
let currentPointerY = startPointerY;
|
|
@@ -154,7 +155,7 @@ const SelectedOutlinePolygonUnmemoized = ({ compositionHeight, compositionWidth,
|
|
|
154
155
|
allowY: axisLockedDirection !== 'horizontal',
|
|
155
156
|
deltaX,
|
|
156
157
|
deltaY,
|
|
157
|
-
outlines:
|
|
158
|
+
outlines: dragOutlines,
|
|
158
159
|
scale,
|
|
159
160
|
targets: snapTargets,
|
|
160
161
|
});
|
|
@@ -258,9 +259,9 @@ const SelectedOutlinePolygonUnmemoized = ({ compositionHeight, compositionWidth,
|
|
|
258
259
|
(0, selected_outline_drag_1.clearSelectedOutlineDragOverrides)({ clearDragOverrides, dragStates });
|
|
259
260
|
});
|
|
260
261
|
};
|
|
261
|
-
(0, pointer_session_1.
|
|
262
|
+
(0, pointer_session_1.startCapturedPointerSession)({
|
|
262
263
|
event,
|
|
263
|
-
|
|
264
|
+
captureTarget: event.currentTarget,
|
|
264
265
|
onMove: onPointerMove,
|
|
265
266
|
onEnd: onPointerUp,
|
|
266
267
|
});
|
|
@@ -353,7 +354,7 @@ const SelectedOutlinePolygonUnmemoized = ({ compositionHeight, compositionWidth,
|
|
|
353
354
|
if (!dragging) {
|
|
354
355
|
onHoverChange(null);
|
|
355
356
|
}
|
|
356
|
-
}, onPointerDown: onPointerDown, onDoubleClick: onDoubleClick, onDragOver: onEffectDragOver, onDragLeave: onEffectDragLeave, onDrop: onEffectDrop }), jsx_runtime_1.jsx(ContextMenu_1.ContextMenuForTarget, { triggerRef: polygonRef, getItems: onContextMenuOpen })
|
|
357
|
+
}, onPointerDown: onPointerDown, onDoubleClick: onDoubleClick, onDragOver: onEffectDragOver, onDragLeave: onEffectDragLeave, onDrop: onEffectDrop }), jsx_runtime_1.jsx(ContextMenu_1.ContextMenuForTarget, { triggerRef: polygonRef, getItems: onContextMenuOpen, onOpenChange: onContextMenuOpenChange })
|
|
357
358
|
] }));
|
|
358
359
|
};
|
|
359
360
|
exports.SelectedOutlinePolygon = react_1.default.memo(SelectedOutlinePolygonUnmemoized);
|
|
@@ -8,6 +8,7 @@ export declare const SelectedOutlineRenderer: React.NamedExoticComponent<{
|
|
|
8
8
|
readonly getLatestOutlineTargetByKey: (key: string) => SelectedOutlineTarget | undefined;
|
|
9
9
|
readonly getOutlineTargets: () => readonly SelectedOutlineLayoutTarget[];
|
|
10
10
|
readonly onDraggingChange: (dragging: boolean) => void;
|
|
11
|
+
readonly onContextMenuOpenChange: (open: boolean) => void;
|
|
11
12
|
readonly onSelect: (item: TimelineSelection, interaction?: TimelineSelectionInteraction | undefined) => void;
|
|
12
13
|
readonly scale: number;
|
|
13
14
|
readonly sequences: readonly {
|
|
@@ -64,7 +64,7 @@ const SelectedOutlineHoverCleanup = ({ targets }) => {
|
|
|
64
64
|
}, [hoveredSequence, setHoveredSequence, targets]);
|
|
65
65
|
return null;
|
|
66
66
|
};
|
|
67
|
-
const SelectedOutlineRendererUnmemoized = ({ compositionHeight, compositionWidth, dragging, getLatestOutlineTargetByKey, getOutlineTargets, onDraggingChange, onSelect, scale, sequences, updateOutlinesRef, }) => {
|
|
67
|
+
const SelectedOutlineRendererUnmemoized = ({ compositionHeight, compositionWidth, dragging, getLatestOutlineTargetByKey, getOutlineTargets, onDraggingChange, onContextMenuOpenChange, onSelect, scale, sequences, updateOutlinesRef, }) => {
|
|
68
68
|
const [renderState, setRenderState] = (0, react_1.useState)(emptyRenderState);
|
|
69
69
|
const overlayRef = (0, react_1.useRef)(null);
|
|
70
70
|
const resizeObserverRef = (0, react_1.useRef)(null);
|
|
@@ -149,13 +149,30 @@ const SelectedOutlineRendererUnmemoized = ({ compositionHeight, compositionWidth
|
|
|
149
149
|
const targetsByKey = (0, react_1.useMemo)(() => {
|
|
150
150
|
return new Map(renderState.targets.map((target) => [target.key, target]));
|
|
151
151
|
}, [renderState.targets]);
|
|
152
|
+
// Reordering a captured SVG target can cancel the active pointer session.
|
|
153
|
+
const outlineRenderingOrderRef = (0, react_1.useRef)([]);
|
|
152
154
|
const outlinesForRendering = (0, react_1.useMemo)(() => {
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
155
|
+
if (!dragging || outlineRenderingOrderRef.current.length === 0) {
|
|
156
|
+
const orderedOutlines = (0, selected_outline_order_1.orderOutlinesForRendering)({
|
|
157
|
+
outlines: renderState.outlines,
|
|
158
|
+
sequences,
|
|
159
|
+
targetsByKey,
|
|
160
|
+
});
|
|
161
|
+
outlineRenderingOrderRef.current = orderedOutlines.map((outline) => outline.key);
|
|
162
|
+
return orderedOutlines;
|
|
163
|
+
}
|
|
164
|
+
const currentOutlinesByKey = new Map(renderState.outlines.map((outline) => [outline.key, outline]));
|
|
165
|
+
const frozenKeys = new Set(outlineRenderingOrderRef.current);
|
|
166
|
+
const newOutlines = renderState.outlines.filter((outline) => !frozenKeys.has(outline.key));
|
|
167
|
+
outlineRenderingOrderRef.current = [
|
|
168
|
+
...outlineRenderingOrderRef.current,
|
|
169
|
+
...newOutlines.map((outline) => outline.key),
|
|
170
|
+
];
|
|
171
|
+
return outlineRenderingOrderRef.current.flatMap((key) => {
|
|
172
|
+
const outline = currentOutlinesByKey.get(key);
|
|
173
|
+
return outline === undefined ? [] : [outline];
|
|
157
174
|
});
|
|
158
|
-
}, [renderState.outlines, sequences, targetsByKey]);
|
|
175
|
+
}, [dragging, renderState.outlines, sequences, targetsByKey]);
|
|
159
176
|
const outlinesByKey = (0, react_1.useMemo)(() => {
|
|
160
177
|
return new Map(renderState.outlines.map((outline) => [outline.key, outline]));
|
|
161
178
|
}, [renderState.outlines]);
|
|
@@ -203,6 +220,6 @@ const SelectedOutlineRendererUnmemoized = ({ compositionHeight, compositionWidth
|
|
|
203
220
|
const updateSnapPointsRef = (0, react_1.useRef)(() => undefined);
|
|
204
221
|
const onSnapPointsChange = (0, react_1.useCallback)((snapPoints) => updateSnapPointsRef.current(snapPoints), []);
|
|
205
222
|
return (jsx_runtime_1.jsxs("svg", { ref: overlayRef, style: outlineContainer, width: "100%", height: "100%", "aria-hidden": "true", children: [
|
|
206
|
-
jsx_runtime_1.jsx(SelectedOutlineHoverCleanup, { targets: renderState.targets }), jsx_runtime_1.jsx(SelectedOutlineSnapIndicators_1.SelectedOutlineSnapIndicators, { compositionHeight: compositionHeight, compositionWidth: compositionWidth, scale: scale, updateSnapPointsRef: updateSnapPointsRef }), outlinesForRendering.map((outline) => (jsx_runtime_1.jsx(SelectedOutlineElement_1.SelectedOutlineElement, { compositionHeight: compositionHeight, compositionWidth: compositionWidth, dragging: dragging, getAllDragOutlines: getAllDragOutlines, getAllDragTargets: getAllDragTargets, getAllRotationDragTargets: getAllRotationDragTargets, getAllScaleDragTargets: getAllScaleDragTargets, getLatestTargetByKey: getLatestOutlineTargetByKey, outline: outline, onDraggingChange: onDraggingChange, onSnapPointsChange: onSnapPointsChange, onSelect: onSelect, scale: scale, layoutTarget: targetsByKey.get(outline.key) }, outline.key))), outlinesForRendering.map((outline) => (jsx_runtime_1.jsx(
|
|
223
|
+
jsx_runtime_1.jsx(SelectedOutlineHoverCleanup, { targets: renderState.targets }), jsx_runtime_1.jsx(SelectedOutlineSnapIndicators_1.SelectedOutlineSnapIndicators, { compositionHeight: compositionHeight, compositionWidth: compositionWidth, scale: scale, updateSnapPointsRef: updateSnapPointsRef }), outlinesForRendering.map((outline) => (jsx_runtime_1.jsx(SelectedOutlineElement_1.SelectedOutlineElement, { compositionHeight: compositionHeight, compositionWidth: compositionWidth, dragging: dragging, getAllDragOutlines: getAllDragOutlines, getAllDragTargets: getAllDragTargets, getAllRotationDragTargets: getAllRotationDragTargets, getAllScaleDragTargets: getAllScaleDragTargets, getLatestTargetByKey: getLatestOutlineTargetByKey, outline: outline, onDraggingChange: onDraggingChange, onContextMenuOpenChange: onContextMenuOpenChange, onSnapPointsChange: onSnapPointsChange, onSelect: onSelect, scale: scale, layoutTarget: targetsByKey.get(outline.key) }, outline.key))), outlinesForRendering.map((outline) => (jsx_runtime_1.jsx(SelectedOutlineUvControls_1.SelectedOutlineUvHandleConnectionLayer, { outline: outline, layoutTarget: targetsByKey.get(outline.key) }, `${outline.key}-uv-connection-lines`))), outlinesForRendering.map((outline) => (jsx_runtime_1.jsx(SelectedOutlineUvControls_1.SelectedOutlineUvHandleCircleLayer, { onDraggingChange: onDraggingChange, onSelect: onSelect, outline: outline, layoutTarget: targetsByKey.get(outline.key) }, `${outline.key}-uv-handles`))), outlinesForRendering.map((outline) => (jsx_runtime_1.jsx(SelectedOutlineTransformOriginHandle_1.SelectedOutlineTransformOriginHandle, { outline: outline, onDraggingChange: onDraggingChange, getLatestTargetByKey: getLatestOutlineTargetByKey, layoutTarget: targetsByKey.get(outline.key) }, `${outline.key}-transform-origin`)))] }));
|
|
207
224
|
};
|
|
208
225
|
exports.SelectedOutlineRenderer = react_1.default.memo(SelectedOutlineRendererUnmemoized);
|
|
@@ -7,10 +7,16 @@ export declare const SelectedOutlineRotationCornerHandle: React.FC<{
|
|
|
7
7
|
readonly getAllRotationDragTargets: () => readonly SelectedOutlineRotationDragTarget[];
|
|
8
8
|
readonly corner: SelectedOutlineRotationCorner;
|
|
9
9
|
readonly dragging: boolean;
|
|
10
|
+
readonly handlePoint: {
|
|
11
|
+
readonly x: number;
|
|
12
|
+
readonly y: number;
|
|
13
|
+
};
|
|
10
14
|
readonly outline: SelectedOutline;
|
|
11
15
|
readonly onDraggingChange: (dragging: boolean) => void;
|
|
12
16
|
readonly onContextMenuOpen: SelectedOutlineContextMenuOpenHandler;
|
|
17
|
+
readonly onContextMenuOpenChange: (open: boolean) => void;
|
|
13
18
|
readonly onHoverChange: (key: string | null) => void;
|
|
14
19
|
readonly onSelect: (item: TimelineSelection, interaction: TimelineSelectionInteraction) => void;
|
|
20
|
+
readonly radius: number;
|
|
15
21
|
readonly target: SelectedOutlineTarget | undefined;
|
|
16
22
|
}>;
|
|
@@ -51,13 +51,14 @@ const call_add_keyframe_1 = require("./Timeline/call-add-keyframe");
|
|
|
51
51
|
const focus_inspector_field_1 = require("./Timeline/focus-inspector-field");
|
|
52
52
|
const imperative_state_1 = require("./Timeline/imperative-state");
|
|
53
53
|
const save_sequence_prop_1 = require("./Timeline/save-sequence-prop");
|
|
54
|
-
const SelectedOutlineRotationCornerHandle = ({ getAllRotationDragTargets, corner, dragging, outline, onDraggingChange, onContextMenuOpen, onHoverChange, onSelect, target, }) => {
|
|
55
|
-
var _a, _b;
|
|
54
|
+
const SelectedOutlineRotationCornerHandle = ({ getAllRotationDragTargets, corner, dragging, handlePoint, outline, onDraggingChange, onContextMenuOpen, onContextMenuOpenChange, onHoverChange, onSelect, radius, target, }) => {
|
|
55
|
+
var _a, _b, _c;
|
|
56
56
|
const { getDragOverrides } = (0, react_1.useContext)(remotion_1.Internals.VisualModeDragOverridesContext);
|
|
57
57
|
const { setPropStatuses, setDragOverrides, clearDragOverrides } = (0, react_1.useContext)(remotion_1.Internals.VisualModeSettersContext);
|
|
58
58
|
const { editorSnapping } = (0, react_1.useContext)(editor_snapping_1.EditorSnappingContext);
|
|
59
59
|
const rotationDrag = (_a = target === null || target === void 0 ? void 0 : target.rotationDrag) !== null && _a !== void 0 ? _a : null;
|
|
60
60
|
const selected = (_b = target === null || target === void 0 ? void 0 : target.selected) !== null && _b !== void 0 ? _b : false;
|
|
61
|
+
const containsSelection = (_c = target === null || target === void 0 ? void 0 : target.containsSelection) !== null && _c !== void 0 ? _c : false;
|
|
61
62
|
const circleRef = (0, react_1.useRef)(null);
|
|
62
63
|
const cornerInfo = (0, react_1.useMemo)(() => (0, selected_outline_measurement_1.getSelectedOutlineRotationCornerInfo)(outline.points, corner), [corner, outline.points]);
|
|
63
64
|
const onPointerDown = react_1.default.useCallback((event) => {
|
|
@@ -72,7 +73,7 @@ const SelectedOutlineRotationCornerHandle = ({ getAllRotationDragTargets, corner
|
|
|
72
73
|
return;
|
|
73
74
|
}
|
|
74
75
|
const interaction = (0, selected_outline_measurement_1.getOutlineSelectionInteraction)(event);
|
|
75
|
-
const shouldUpdateSelection = !selected || interaction.toggleKey;
|
|
76
|
+
const shouldUpdateSelection = (!selected && !containsSelection) || interaction.toggleKey;
|
|
76
77
|
if (shouldUpdateSelection && target !== undefined) {
|
|
77
78
|
onSelect(target.selection, {
|
|
78
79
|
shiftKey: false,
|
|
@@ -226,9 +227,9 @@ const SelectedOutlineRotationCornerHandle = ({ getAllRotationDragTargets, corner
|
|
|
226
227
|
});
|
|
227
228
|
});
|
|
228
229
|
};
|
|
229
|
-
(0, pointer_session_1.
|
|
230
|
+
(0, pointer_session_1.startCapturedPointerSession)({
|
|
230
231
|
event,
|
|
231
|
-
|
|
232
|
+
captureTarget: event.currentTarget,
|
|
232
233
|
onMove: onPointerMove,
|
|
233
234
|
onEnd: onPointerUp,
|
|
234
235
|
});
|
|
@@ -236,6 +237,7 @@ const SelectedOutlineRotationCornerHandle = ({ getAllRotationDragTargets, corner
|
|
|
236
237
|
window.addEventListener('keyup', onKeyChange);
|
|
237
238
|
}, [
|
|
238
239
|
clearDragOverrides,
|
|
240
|
+
containsSelection,
|
|
239
241
|
cornerInfo,
|
|
240
242
|
editorSnapping,
|
|
241
243
|
getDragOverrides,
|
|
@@ -255,7 +257,7 @@ const SelectedOutlineRotationCornerHandle = ({ getAllRotationDragTargets, corner
|
|
|
255
257
|
return null;
|
|
256
258
|
}
|
|
257
259
|
return (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
258
|
-
jsx_runtime_1.jsx("circle", { ref: circleRef, cx:
|
|
260
|
+
jsx_runtime_1.jsx("circle", { ref: circleRef, cx: handlePoint.x, cy: handlePoint.y, r: radius, fill: colors_1.TRANSPARENT, stroke: colors_1.TRANSPARENT, vectorEffect: "non-scaling-stroke", pointerEvents: "all", cursor: cornerInfo.cursor, "data-remotion-studio-rotation-corner": corner, "data-remotion-studio-rotation-corner-contains-selection": containsSelection, onPointerEnter: () => {
|
|
259
261
|
if (!dragging) {
|
|
260
262
|
onHoverChange(outline.key);
|
|
261
263
|
}
|
|
@@ -263,7 +265,7 @@ const SelectedOutlineRotationCornerHandle = ({ getAllRotationDragTargets, corner
|
|
|
263
265
|
if (!dragging) {
|
|
264
266
|
onHoverChange(null);
|
|
265
267
|
}
|
|
266
|
-
}, onPointerDown: onPointerDown }), jsx_runtime_1.jsx(ContextMenu_1.ContextMenuForTarget, { triggerRef: circleRef, getItems: onContextMenuOpen })
|
|
268
|
+
}, onPointerDown: onPointerDown }), jsx_runtime_1.jsx(ContextMenu_1.ContextMenuForTarget, { triggerRef: circleRef, getItems: onContextMenuOpen, onOpenChange: onContextMenuOpenChange })
|
|
267
269
|
] }));
|
|
268
270
|
};
|
|
269
271
|
exports.SelectedOutlineRotationCornerHandle = SelectedOutlineRotationCornerHandle;
|
|
@@ -7,9 +7,11 @@ export declare const SelectedOutlineScaleEdgeLine: React.FC<{
|
|
|
7
7
|
readonly getAllScaleDragTargets: () => readonly SelectedOutlineScaleDragTarget[];
|
|
8
8
|
readonly dragging: boolean;
|
|
9
9
|
readonly edge: SelectedOutlineScaleEdge;
|
|
10
|
+
readonly hitWidth: number;
|
|
10
11
|
readonly outline: SelectedOutline;
|
|
11
12
|
readonly onDraggingChange: (dragging: boolean) => void;
|
|
12
13
|
readonly onContextMenuOpen: SelectedOutlineContextMenuOpenHandler;
|
|
14
|
+
readonly onContextMenuOpenChange: (open: boolean) => void;
|
|
13
15
|
readonly onHoverChange: (key: string | null) => void;
|
|
14
16
|
readonly onSelect: (item: TimelineSelection, interaction: TimelineSelectionInteraction) => void;
|
|
15
17
|
readonly target: SelectedOutlineTarget | undefined;
|
|
@@ -49,12 +49,13 @@ const call_add_keyframe_1 = require("./Timeline/call-add-keyframe");
|
|
|
49
49
|
const focus_inspector_field_1 = require("./Timeline/focus-inspector-field");
|
|
50
50
|
const imperative_state_1 = require("./Timeline/imperative-state");
|
|
51
51
|
const save_sequence_prop_1 = require("./Timeline/save-sequence-prop");
|
|
52
|
-
const SelectedOutlineScaleEdgeLine = ({ getAllScaleDragTargets, dragging, edge, outline, onDraggingChange, onContextMenuOpen, onHoverChange, onSelect, target, }) => {
|
|
53
|
-
var _a, _b;
|
|
52
|
+
const SelectedOutlineScaleEdgeLine = ({ getAllScaleDragTargets, dragging, edge, hitWidth, outline, onDraggingChange, onContextMenuOpen, onContextMenuOpenChange, onHoverChange, onSelect, target, }) => {
|
|
53
|
+
var _a, _b, _c, _d;
|
|
54
54
|
const { getDragOverrides } = (0, react_1.useContext)(remotion_1.Internals.VisualModeDragOverridesContext);
|
|
55
55
|
const { setPropStatuses, setDragOverrides, clearDragOverrides } = (0, react_1.useContext)(remotion_1.Internals.VisualModeSettersContext);
|
|
56
56
|
const scaleDrag = (_a = target === null || target === void 0 ? void 0 : target.scaleDrag) !== null && _a !== void 0 ? _a : null;
|
|
57
57
|
const selected = (_b = target === null || target === void 0 ? void 0 : target.selected) !== null && _b !== void 0 ? _b : false;
|
|
58
|
+
const containsSelection = (_c = target === null || target === void 0 ? void 0 : target.containsSelection) !== null && _c !== void 0 ? _c : false;
|
|
58
59
|
const lineRef = (0, react_1.useRef)(null);
|
|
59
60
|
const edgeInfo = (0, react_1.useMemo)(() => (0, selected_outline_drag_1.getSelectedOutlineScaleEdgeInfo)(outline.points, edge), [edge, outline.points]);
|
|
60
61
|
const onPointerDown = react_1.default.useCallback((event) => {
|
|
@@ -64,7 +65,9 @@ const SelectedOutlineScaleEdgeLine = ({ getAllScaleDragTargets, dragging, edge,
|
|
|
64
65
|
event.preventDefault();
|
|
65
66
|
event.stopPropagation();
|
|
66
67
|
const interaction = (0, selected_outline_measurement_1.getOutlineSelectionInteraction)(event);
|
|
67
|
-
const shouldUpdateSelection = !selected
|
|
68
|
+
const shouldUpdateSelection = (!selected && !containsSelection) ||
|
|
69
|
+
interaction.shiftKey ||
|
|
70
|
+
interaction.toggleKey;
|
|
68
71
|
if (shouldUpdateSelection && target !== undefined) {
|
|
69
72
|
onSelect(target.selection, interaction);
|
|
70
73
|
}
|
|
@@ -174,14 +177,15 @@ const SelectedOutlineScaleEdgeLine = ({ getAllScaleDragTargets, dragging, edge,
|
|
|
174
177
|
});
|
|
175
178
|
});
|
|
176
179
|
};
|
|
177
|
-
(0, pointer_session_1.
|
|
180
|
+
(0, pointer_session_1.startCapturedPointerSession)({
|
|
178
181
|
event,
|
|
179
|
-
|
|
182
|
+
captureTarget: event.currentTarget,
|
|
180
183
|
onMove: onPointerMove,
|
|
181
184
|
onEnd: onPointerUp,
|
|
182
185
|
});
|
|
183
186
|
}, [
|
|
184
187
|
clearDragOverrides,
|
|
188
|
+
containsSelection,
|
|
185
189
|
getAllScaleDragTargets,
|
|
186
190
|
edgeInfo,
|
|
187
191
|
getDragOverrides,
|
|
@@ -197,7 +201,7 @@ const SelectedOutlineScaleEdgeLine = ({ getAllScaleDragTargets, dragging, edge,
|
|
|
197
201
|
return null;
|
|
198
202
|
}
|
|
199
203
|
return (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
200
|
-
jsx_runtime_1.jsx("line", { ref: lineRef, x1: edgeInfo.start.x, y1: edgeInfo.start.y, x2: edgeInfo.end.x, y2: edgeInfo.end.y, stroke: colors_1.TRANSPARENT, strokeWidth:
|
|
204
|
+
jsx_runtime_1.jsx("line", { ref: lineRef, x1: edgeInfo.start.x, y1: edgeInfo.start.y, x2: edgeInfo.end.x, y2: edgeInfo.end.y, stroke: colors_1.TRANSPARENT, strokeWidth: hitWidth, strokeLinecap: "butt", vectorEffect: "non-scaling-stroke", pointerEvents: "stroke", cursor: edgeInfo.cursor, "data-remotion-studio-scale-edge": edge, "data-remotion-studio-scale-edge-contains-selection": (_d = target === null || target === void 0 ? void 0 : target.containsSelection) !== null && _d !== void 0 ? _d : false, onPointerEnter: () => {
|
|
201
205
|
if (!dragging) {
|
|
202
206
|
onHoverChange(outline.key);
|
|
203
207
|
}
|
|
@@ -205,7 +209,7 @@ const SelectedOutlineScaleEdgeLine = ({ getAllScaleDragTargets, dragging, edge,
|
|
|
205
209
|
if (!dragging) {
|
|
206
210
|
onHoverChange(null);
|
|
207
211
|
}
|
|
208
|
-
}, onPointerDown: onPointerDown }), jsx_runtime_1.jsx(ContextMenu_1.ContextMenuForTarget, { triggerRef: lineRef, getItems: onContextMenuOpen })
|
|
212
|
+
}, onPointerDown: onPointerDown }), jsx_runtime_1.jsx(ContextMenu_1.ContextMenuForTarget, { triggerRef: lineRef, getItems: onContextMenuOpen, onOpenChange: onContextMenuOpenChange })
|
|
209
213
|
] }));
|
|
210
214
|
};
|
|
211
215
|
exports.SelectedOutlineScaleEdgeLine = SelectedOutlineScaleEdgeLine;
|
|
@@ -44,25 +44,31 @@ const editor_snapping_1 = require("../state/editor-snapping");
|
|
|
44
44
|
const ForceSpecificCursor_1 = require("./ForceSpecificCursor");
|
|
45
45
|
const NotificationCenter_1 = require("./Notifications/NotificationCenter");
|
|
46
46
|
const selected_outline_drag_1 = require("./selected-outline-drag");
|
|
47
|
+
const selected_outline_measurement_1 = require("./selected-outline-measurement");
|
|
47
48
|
const selected_outline_types_1 = require("./selected-outline-types");
|
|
48
49
|
const selected_outline_uv_1 = require("./selected-outline-uv");
|
|
49
50
|
const call_add_keyframe_1 = require("./Timeline/call-add-keyframe");
|
|
50
51
|
const save_sequence_prop_1 = require("./Timeline/save-sequence-prop");
|
|
52
|
+
const timeline_rotation_utils_1 = require("./Timeline/timeline-rotation-utils");
|
|
51
53
|
const timeline_translate_utils_1 = require("./Timeline/timeline-translate-utils");
|
|
52
54
|
const transform_origin_utils_1 = require("./Timeline/transform-origin-utils");
|
|
53
55
|
const SelectedOutlineTransformOriginHandle = ({ getLatestTargetByKey, layoutTarget, outline, onDraggingChange }) => {
|
|
54
|
-
var _a, _b;
|
|
56
|
+
var _a, _b, _c;
|
|
55
57
|
const { setDragOverrides, clearDragOverrides, setPropStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModeSettersContext);
|
|
56
58
|
const { editorSnapping } = (0, react_1.useContext)(editor_snapping_1.EditorSnappingContext);
|
|
57
|
-
const target = (layoutTarget === null || layoutTarget === void 0 ? void 0 : layoutTarget.selectedForTransformOrigin)
|
|
59
|
+
const target = (layoutTarget === null || layoutTarget === void 0 ? void 0 : layoutTarget.selectedForTransformOrigin) ||
|
|
60
|
+
(layoutTarget === null || layoutTarget === void 0 ? void 0 : layoutTarget.selectedForRotation)
|
|
58
61
|
? getLatestTargetByKey(layoutTarget.key)
|
|
59
62
|
: undefined;
|
|
60
63
|
const transformOriginDrag = (_a = target === null || target === void 0 ? void 0 : target.transformOriginDrag) !== null && _a !== void 0 ? _a : null;
|
|
64
|
+
const transformOriginValue = (_b = transformOriginDrag === null || transformOriginDrag === void 0 ? void 0 : transformOriginDrag.originValue) !== null && _b !== void 0 ? _b : ((layoutTarget === null || layoutTarget === void 0 ? void 0 : layoutTarget.selectedForRotation)
|
|
65
|
+
? layoutTarget.transformOriginValue
|
|
66
|
+
: null);
|
|
61
67
|
const crop = target === null || target === void 0 ? void 0 : target.crop;
|
|
62
|
-
const transformOriginPoints = (
|
|
63
|
-
const parsed = (0, react_1.useMemo)(() =>
|
|
68
|
+
const transformOriginPoints = (_c = outline.uncroppedPoints) !== null && _c !== void 0 ? _c : outline.points;
|
|
69
|
+
const parsed = (0, react_1.useMemo)(() => transformOriginValue === null
|
|
64
70
|
? null
|
|
65
|
-
: (0, transform_origin_utils_1.parseTransformOrigin)(
|
|
71
|
+
: (0, transform_origin_utils_1.parseTransformOrigin)(transformOriginValue), [transformOriginValue]);
|
|
66
72
|
const uv = (0, react_1.useMemo)(() => {
|
|
67
73
|
if (parsed === null || outline.dimensions === null) {
|
|
68
74
|
return null;
|
|
@@ -73,7 +79,22 @@ const SelectedOutlineTransformOriginHandle = ({ getLatestTargetByKey, layoutTarg
|
|
|
73
79
|
height: outline.dimensions.height,
|
|
74
80
|
});
|
|
75
81
|
}, [outline.dimensions, parsed]);
|
|
76
|
-
const position = (0, react_1.useMemo)(() =>
|
|
82
|
+
const position = (0, react_1.useMemo)(() => {
|
|
83
|
+
if (layoutTarget === null || layoutTarget === void 0 ? void 0 : layoutTarget.selectedForRotation) {
|
|
84
|
+
return (0, selected_outline_measurement_1.getSelectedOutlineRotationPivot)({
|
|
85
|
+
dimensions: outline.dimensions,
|
|
86
|
+
points: transformOriginPoints,
|
|
87
|
+
transformOriginValue: layoutTarget.transformOriginValue,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
return uv === null ? null : (0, selected_outline_uv_1.getUvHandlePosition)(transformOriginPoints, uv);
|
|
91
|
+
}, [
|
|
92
|
+
layoutTarget === null || layoutTarget === void 0 ? void 0 : layoutTarget.selectedForRotation,
|
|
93
|
+
layoutTarget === null || layoutTarget === void 0 ? void 0 : layoutTarget.transformOriginValue,
|
|
94
|
+
outline.dimensions,
|
|
95
|
+
transformOriginPoints,
|
|
96
|
+
uv,
|
|
97
|
+
]);
|
|
77
98
|
const onPointerDown = react_1.default.useCallback((event) => {
|
|
78
99
|
if (event.button !== 0 ||
|
|
79
100
|
transformOriginDrag === null ||
|
|
@@ -88,7 +109,7 @@ const SelectedOutlineTransformOriginHandle = ({ getLatestTargetByKey, layoutTarg
|
|
|
88
109
|
if (svg === null) {
|
|
89
110
|
return;
|
|
90
111
|
}
|
|
91
|
-
const rotation = (0,
|
|
112
|
+
const rotation = (0, timeline_rotation_utils_1.parseCssRotation)(transformOriginDrag.rotateValue);
|
|
92
113
|
if (rotation === null) {
|
|
93
114
|
return;
|
|
94
115
|
}
|
|
@@ -96,7 +117,7 @@ const SelectedOutlineTransformOriginHandle = ({ getLatestTargetByKey, layoutTarg
|
|
|
96
117
|
if (dimensions === null) {
|
|
97
118
|
return;
|
|
98
119
|
}
|
|
99
|
-
const
|
|
120
|
+
const scale = no_react_1.NoReactInternals.parseScaleValue(transformOriginDrag.scaleValue);
|
|
100
121
|
const startTranslate = (0, timeline_translate_utils_1.parseTranslate)(transformOriginDrag.translateValue);
|
|
101
122
|
const svgRect = svg.getBoundingClientRect();
|
|
102
123
|
let last = null;
|
|
@@ -144,16 +165,20 @@ const SelectedOutlineTransformOriginHandle = ({ getLatestTargetByKey, layoutTarg
|
|
|
144
165
|
(nextUv[1] - uv[1]) * dimensions.height,
|
|
145
166
|
];
|
|
146
167
|
const [nextTranslateX, nextTranslateY] = (0, selected_outline_drag_1.compensateTranslateForTransformOrigin)({
|
|
147
|
-
startTranslate,
|
|
168
|
+
startTranslate: [startTranslate[0], startTranslate[1]],
|
|
148
169
|
deltaOrigin,
|
|
149
|
-
|
|
150
|
-
scale
|
|
170
|
+
rotation,
|
|
171
|
+
scale,
|
|
151
172
|
});
|
|
152
173
|
const origin = (0, transform_origin_utils_1.serializeTransformOrigin)({
|
|
153
174
|
uv: nextUv,
|
|
154
175
|
z: parsed.z,
|
|
155
176
|
});
|
|
156
|
-
const translate = (0, timeline_translate_utils_1.serializeTranslate)(
|
|
177
|
+
const translate = (0, timeline_translate_utils_1.serializeTranslate)([
|
|
178
|
+
nextTranslateX,
|
|
179
|
+
nextTranslateY,
|
|
180
|
+
startTranslate[2],
|
|
181
|
+
]);
|
|
157
182
|
last = { uv: nextUv, origin, translate };
|
|
158
183
|
setDragOverrides(transformOriginDrag.nodePath, selected_outline_types_1.transformOriginFieldKey, transformOriginDrag.originPropStatus.status === 'keyframed'
|
|
159
184
|
? remotion_1.Internals.makeKeyframedDragOverride({
|
|
@@ -177,11 +202,15 @@ const SelectedOutlineTransformOriginHandle = ({ getLatestTargetByKey, layoutTarg
|
|
|
177
202
|
const keyframeTranslate = (0, timeline_translate_utils_1.parseTranslate)(String(keyframe.value));
|
|
178
203
|
return {
|
|
179
204
|
...keyframe,
|
|
180
|
-
value: (0, timeline_translate_utils_1.serializeTranslate)(
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
205
|
+
value: (0, timeline_translate_utils_1.serializeTranslate)([
|
|
206
|
+
keyframeTranslate[0] +
|
|
207
|
+
nextTranslateX -
|
|
208
|
+
startTranslate[0],
|
|
209
|
+
keyframeTranslate[1] +
|
|
210
|
+
nextTranslateY -
|
|
211
|
+
startTranslate[1],
|
|
212
|
+
keyframeTranslate[2],
|
|
213
|
+
]),
|
|
185
214
|
};
|
|
186
215
|
}),
|
|
187
216
|
},
|
|
@@ -250,9 +279,9 @@ const SelectedOutlineTransformOriginHandle = ({ getLatestTargetByKey, layoutTarg
|
|
|
250
279
|
clearDragOverrides(transformOriginDrag.nodePath);
|
|
251
280
|
});
|
|
252
281
|
};
|
|
253
|
-
(0, pointer_session_1.
|
|
282
|
+
(0, pointer_session_1.startCapturedPointerSession)({
|
|
254
283
|
event,
|
|
255
|
-
|
|
284
|
+
captureTarget: event.currentTarget,
|
|
256
285
|
onMove: onPointerMove,
|
|
257
286
|
onEnd: onPointerUp,
|
|
258
287
|
});
|
|
@@ -271,13 +300,10 @@ const SelectedOutlineTransformOriginHandle = ({ getLatestTargetByKey, layoutTarg
|
|
|
271
300
|
transformOriginPoints,
|
|
272
301
|
uv,
|
|
273
302
|
]);
|
|
274
|
-
if (
|
|
275
|
-
parsed === null ||
|
|
276
|
-
uv === null ||
|
|
277
|
-
position === null) {
|
|
303
|
+
if (position === null) {
|
|
278
304
|
return null;
|
|
279
305
|
}
|
|
280
|
-
return (jsx_runtime_1.jsxs("g", { pointerEvents:
|
|
306
|
+
return (jsx_runtime_1.jsxs("g", { "data-remotion-studio-transform-origin-handle": true, pointerEvents: transformOriginDrag === null ? 'none' : 'all', cursor: transformOriginDrag === null ? undefined : 'crosshair', onPointerDown: onPointerDown, "aria-hidden": "true", style: {
|
|
281
307
|
filter: colors_1.SELECTED_OUTLINE_DROP_SHADOW,
|
|
282
308
|
}, children: [
|
|
283
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" })
|
|
@@ -236,9 +236,9 @@ const SelectedUvEllipseStartHandle = ({ control, onDraggingChange, outline }) =>
|
|
|
236
236
|
sourceFrame: control.handle.sourceFrame,
|
|
237
237
|
});
|
|
238
238
|
};
|
|
239
|
-
(0, pointer_session_1.
|
|
239
|
+
(0, pointer_session_1.startCapturedPointerSession)({
|
|
240
240
|
event,
|
|
241
|
-
|
|
241
|
+
captureTarget: event.currentTarget,
|
|
242
242
|
onMove: onPointerMove,
|
|
243
243
|
onEnd: onPointerUp,
|
|
244
244
|
});
|
|
@@ -336,9 +336,9 @@ const SelectedUvEllipseResizeHandle = ({ axis, control, onDraggingChange, outlin
|
|
|
336
336
|
sourceFrame: control.handle.sourceFrame,
|
|
337
337
|
});
|
|
338
338
|
};
|
|
339
|
-
(0, pointer_session_1.
|
|
339
|
+
(0, pointer_session_1.startCapturedPointerSession)({
|
|
340
340
|
event,
|
|
341
|
-
|
|
341
|
+
captureTarget: event.currentTarget,
|
|
342
342
|
onMove: onPointerMove,
|
|
343
343
|
onEnd: onPointerUp,
|
|
344
344
|
});
|
|
@@ -491,9 +491,9 @@ const SelectedUvEllipseRotationHandle = ({ control, onDraggingChange }) => {
|
|
|
491
491
|
sourceFrame: control.handle.sourceFrame,
|
|
492
492
|
});
|
|
493
493
|
};
|
|
494
|
-
(0, pointer_session_1.
|
|
494
|
+
(0, pointer_session_1.startCapturedPointerSession)({
|
|
495
495
|
event,
|
|
496
|
-
|
|
496
|
+
captureTarget: event.currentTarget,
|
|
497
497
|
onMove: onPointerMove,
|
|
498
498
|
onEnd: onPointerUp,
|
|
499
499
|
});
|
|
@@ -645,9 +645,9 @@ const SelectedUvHandleCircle = ({ handle, nodePathInfo, onDraggingChange, onSele
|
|
|
645
645
|
clearEffectDragOverrides(handle.nodePath, handle.effectIndex);
|
|
646
646
|
});
|
|
647
647
|
};
|
|
648
|
-
(0, pointer_session_1.
|
|
648
|
+
(0, pointer_session_1.startCapturedPointerSession)({
|
|
649
649
|
event,
|
|
650
|
-
|
|
650
|
+
captureTarget: event.currentTarget,
|
|
651
651
|
onMove: onPointerMove,
|
|
652
652
|
onEnd: onPointerUp,
|
|
653
653
|
});
|
|
@@ -35,6 +35,14 @@ const SequencePropsSubscriptionProvider = ({ children }) => {
|
|
|
35
35
|
const setOverrideIdToNodePath = (0, react_1.useCallback)((overrideId, state) => {
|
|
36
36
|
setOverrideIdToNodePathMap((prev) => {
|
|
37
37
|
const existing = prev[overrideId];
|
|
38
|
+
if (state === null) {
|
|
39
|
+
if (!existing) {
|
|
40
|
+
return prev;
|
|
41
|
+
}
|
|
42
|
+
const next = { ...prev };
|
|
43
|
+
delete next[overrideId];
|
|
44
|
+
return next;
|
|
45
|
+
}
|
|
38
46
|
if (existing && existing === state) {
|
|
39
47
|
return prev;
|
|
40
48
|
}
|
|
@@ -38,7 +38,7 @@ const SettingsModalFooter = () => {
|
|
|
38
38
|
};
|
|
39
39
|
}, []);
|
|
40
40
|
return (jsx_runtime_1.jsx(ModalFooter_1.ModalFooterContainer, { style: footer, noBorder: true, children: jsx_runtime_1.jsx("div", { style: footerRow, children: jsx_runtime_1.jsxs("div", { style: configFileHint, children: ["Changes save to",
|
|
41
|
-
jsx_runtime_1.jsx(InspectorOpenInEditor_1.InspectorOpenInEditor, { location: configFileLocation, label: jsx_runtime_1.jsx("strong", { style: configFileName, children: "remotion.config.ts" }) })
|
|
41
|
+
jsx_runtime_1.jsx(InspectorOpenInEditor_1.InspectorOpenInEditor, { locationType: null, location: configFileLocation, label: jsx_runtime_1.jsx("strong", { style: configFileName, children: "remotion.config.ts" }) })
|
|
42
42
|
] }) }) }));
|
|
43
43
|
};
|
|
44
44
|
exports.SettingsModalFooter = SettingsModalFooter;
|
|
@@ -96,9 +96,9 @@ const SplitterHandle = ({ allowToCollapse, onCollapse }) => {
|
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
98
|
};
|
|
99
|
-
endDrag = (0, pointer_session_1.
|
|
99
|
+
endDrag = (0, pointer_session_1.startCapturedPointerSession)({
|
|
100
100
|
event: e,
|
|
101
|
-
|
|
101
|
+
captureTarget: current,
|
|
102
102
|
onMove: onPointerMove,
|
|
103
103
|
onEnd: (reason, endEvent) => {
|
|
104
104
|
if ((reason === 'pointerup' || reason === 'buttons-released') &&
|
|
@@ -5,6 +5,8 @@ export declare const Tabs: React.FC<{
|
|
|
5
5
|
}>;
|
|
6
6
|
export declare const Tab: React.FC<{
|
|
7
7
|
readonly children: React.ReactNode;
|
|
8
|
+
readonly onDragEnter?: React.DragEventHandler<HTMLDivElement>;
|
|
9
|
+
readonly onDragLeave?: React.DragEventHandler<HTMLDivElement>;
|
|
8
10
|
readonly onClick: React.MouseEventHandler<HTMLDivElement>;
|
|
9
11
|
readonly style?: React.CSSProperties;
|
|
10
12
|
readonly selected: boolean;
|
|
@@ -34,7 +34,7 @@ const selectorButton = {
|
|
|
34
34
|
userSelect: 'none',
|
|
35
35
|
WebkitUserSelect: 'none',
|
|
36
36
|
};
|
|
37
|
-
const Tab = ({ children, onClick, style, selected }) => {
|
|
37
|
+
const Tab = ({ children, onClick, onDragEnter, onDragLeave, style, selected }) => {
|
|
38
38
|
const [hovered, setHovered] = (0, react_1.useState)(false);
|
|
39
39
|
const { tabIndex } = (0, z_index_1.useZIndex)();
|
|
40
40
|
const onPointerEnter = (0, react_1.useCallback)(() => {
|
|
@@ -55,6 +55,6 @@ const Tab = ({ children, onClick, style, selected }) => {
|
|
|
55
55
|
boxShadow: selected ? 'none' : undefined,
|
|
56
56
|
...style,
|
|
57
57
|
}), [hovered, selected, style]);
|
|
58
|
-
return (jsx_runtime_1.jsx("div", { style: definiteStyle, role: "button", onClick: onClick, tabIndex: tabIndex, onPointerLeave: onPointerLeave, onPointerEnter: onPointerEnter, children: children }));
|
|
58
|
+
return (jsx_runtime_1.jsx("div", { style: definiteStyle, role: "button", onClick: onClick, onDragEnter: onDragEnter, onDragLeave: onDragLeave, tabIndex: tabIndex, onPointerLeave: onPointerLeave, onPointerEnter: onPointerEnter, children: children }));
|
|
59
59
|
};
|
|
60
60
|
exports.Tab = Tab;
|
|
@@ -681,9 +681,9 @@ const EasingEditor = ({ state, renderHeader }) => {
|
|
|
681
681
|
const bezierBeforeDrag = [...bezierRef.current];
|
|
682
682
|
setActiveHandle(handle);
|
|
683
683
|
updateHandleFromPointer(handle, event);
|
|
684
|
-
(0, pointer_session_1.
|
|
684
|
+
(0, pointer_session_1.startCapturedPointerSession)({
|
|
685
685
|
event,
|
|
686
|
-
|
|
686
|
+
captureTarget: event.currentTarget,
|
|
687
687
|
onMove: (moveEvent) => {
|
|
688
688
|
updateHandleFromPointer(handle, moveEvent);
|
|
689
689
|
},
|