@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
|
@@ -7,11 +7,16 @@ const InputDragger_1 = require("../NewComposition/InputDragger");
|
|
|
7
7
|
const timeline_field_display_utils_1 = require("./timeline-field-display-utils");
|
|
8
8
|
const timeline_field_utils_1 = require("./timeline-field-utils");
|
|
9
9
|
const timeline_translate_utils_1 = require("./timeline-translate-utils");
|
|
10
|
+
const Transform3DModeContext_1 = require("./Transform3DModeContext");
|
|
10
11
|
const leftDraggerStyle = {
|
|
12
|
+
paddingBottom: 2,
|
|
11
13
|
paddingLeft: 0,
|
|
14
|
+
paddingTop: 2,
|
|
12
15
|
};
|
|
13
16
|
const rightDraggerStyle = {
|
|
17
|
+
paddingBottom: 2,
|
|
14
18
|
paddingRight: 0,
|
|
19
|
+
paddingTop: 2,
|
|
15
20
|
};
|
|
16
21
|
const containerStyle = {
|
|
17
22
|
display: 'flex',
|
|
@@ -19,9 +24,13 @@ const containerStyle = {
|
|
|
19
24
|
};
|
|
20
25
|
const translateDragSensitivity = 3;
|
|
21
26
|
const TimelineTranslateField = ({ field, propStatus, effectiveValue, onSave, onDragValueChange, onDragEnd, }) => {
|
|
27
|
+
var _a;
|
|
22
28
|
const [dragX, setDragX] = (0, react_1.useState)(null);
|
|
23
29
|
const [dragY, setDragY] = (0, react_1.useState)(null);
|
|
24
|
-
const [
|
|
30
|
+
const [dragZ, setDragZ] = (0, react_1.useState)(null);
|
|
31
|
+
const transform3DMode = (0, react_1.useContext)(Transform3DModeContext_1.Transform3DModeContext);
|
|
32
|
+
const [codeX, codeY, codeZ] = (0, react_1.useMemo)(() => (0, timeline_translate_utils_1.parseTranslate)(String(effectiveValue !== null && effectiveValue !== void 0 ? effectiveValue : '0px 0px')), [effectiveValue]);
|
|
33
|
+
const show3D = transform3DMode || (codeZ !== null && codeZ !== 0);
|
|
25
34
|
const configuredStep = field.fieldSchema.type === 'translate' ? field.fieldSchema.step : undefined;
|
|
26
35
|
const step = configuredStep !== null && configuredStep !== void 0 ? configuredStep : 1;
|
|
27
36
|
const decimalPlaces = (0, react_1.useMemo)(() => (0, timeline_field_utils_1.getTimelineDisplayDecimalPlaces)({
|
|
@@ -34,15 +43,18 @@ const TimelineTranslateField = ({ field, propStatus, effectiveValue, onSave, onD
|
|
|
34
43
|
value: v,
|
|
35
44
|
});
|
|
36
45
|
}, [field.fieldSchema]);
|
|
46
|
+
const serialize = (0, react_1.useCallback)((x, y, z = dragZ !== null && dragZ !== void 0 ? dragZ : codeZ) => {
|
|
47
|
+
return (0, timeline_translate_utils_1.serializeTranslate)([x, y, z], decimalPlaces);
|
|
48
|
+
}, [codeZ, decimalPlaces, dragZ]);
|
|
37
49
|
// --- X callbacks ---
|
|
38
50
|
const onXChange = (0, react_1.useCallback)((newVal) => {
|
|
39
51
|
setDragX(newVal);
|
|
40
52
|
const currentY = dragY !== null && dragY !== void 0 ? dragY : codeY;
|
|
41
|
-
onDragValueChange((
|
|
42
|
-
}, [
|
|
53
|
+
onDragValueChange(serialize(newVal, currentY));
|
|
54
|
+
}, [codeY, dragY, onDragValueChange, serialize]);
|
|
43
55
|
const onXChangeEnd = (0, react_1.useCallback)((newVal) => {
|
|
44
56
|
const currentY = dragY !== null && dragY !== void 0 ? dragY : codeY;
|
|
45
|
-
const newStr = (
|
|
57
|
+
const newStr = serialize(newVal, currentY);
|
|
46
58
|
if (newStr !== propStatus.codeValue) {
|
|
47
59
|
onSave(newStr).finally(() => {
|
|
48
60
|
setDragX(null);
|
|
@@ -53,12 +65,12 @@ const TimelineTranslateField = ({ field, propStatus, effectiveValue, onSave, onD
|
|
|
53
65
|
setDragX(null);
|
|
54
66
|
onDragEnd();
|
|
55
67
|
}
|
|
56
|
-
}, [dragY,
|
|
68
|
+
}, [codeY, dragY, onDragEnd, onSave, propStatus, serialize]);
|
|
57
69
|
const onXTextChange = (0, react_1.useCallback)((newVal) => {
|
|
58
70
|
const parsed = Number(newVal);
|
|
59
71
|
if (!Number.isNaN(parsed)) {
|
|
60
72
|
const currentY = dragY !== null && dragY !== void 0 ? dragY : codeY;
|
|
61
|
-
const newStr = (
|
|
73
|
+
const newStr = serialize(parsed, currentY);
|
|
62
74
|
if (newStr !== propStatus.codeValue) {
|
|
63
75
|
setDragX(parsed);
|
|
64
76
|
onSave(newStr).finally(() => {
|
|
@@ -66,16 +78,16 @@ const TimelineTranslateField = ({ field, propStatus, effectiveValue, onSave, onD
|
|
|
66
78
|
});
|
|
67
79
|
}
|
|
68
80
|
}
|
|
69
|
-
}, [
|
|
81
|
+
}, [codeY, dragY, onSave, propStatus, serialize]);
|
|
70
82
|
// --- Y callbacks ---
|
|
71
83
|
const onYChange = (0, react_1.useCallback)((newVal) => {
|
|
72
84
|
setDragY(newVal);
|
|
73
85
|
const currentX = dragX !== null && dragX !== void 0 ? dragX : codeX;
|
|
74
|
-
onDragValueChange((
|
|
75
|
-
}, [
|
|
86
|
+
onDragValueChange(serialize(currentX, newVal));
|
|
87
|
+
}, [codeX, dragX, onDragValueChange, serialize]);
|
|
76
88
|
const onYChangeEnd = (0, react_1.useCallback)((newVal) => {
|
|
77
89
|
const currentX = dragX !== null && dragX !== void 0 ? dragX : codeX;
|
|
78
|
-
const newStr = (
|
|
90
|
+
const newStr = serialize(currentX, newVal);
|
|
79
91
|
if (newStr !== propStatus.codeValue) {
|
|
80
92
|
onSave(newStr).finally(() => {
|
|
81
93
|
setDragY(null);
|
|
@@ -86,12 +98,12 @@ const TimelineTranslateField = ({ field, propStatus, effectiveValue, onSave, onD
|
|
|
86
98
|
setDragY(null);
|
|
87
99
|
onDragEnd();
|
|
88
100
|
}
|
|
89
|
-
}, [dragX,
|
|
101
|
+
}, [codeX, dragX, onDragEnd, onSave, propStatus, serialize]);
|
|
90
102
|
const onYTextChange = (0, react_1.useCallback)((newVal) => {
|
|
91
103
|
const parsed = Number(newVal);
|
|
92
104
|
if (!Number.isNaN(parsed)) {
|
|
93
105
|
const currentX = dragX !== null && dragX !== void 0 ? dragX : codeX;
|
|
94
|
-
const newStr = (
|
|
106
|
+
const newStr = serialize(currentX, parsed);
|
|
95
107
|
if (newStr !== propStatus.codeValue) {
|
|
96
108
|
setDragY(parsed);
|
|
97
109
|
onSave(newStr).finally(() => {
|
|
@@ -99,9 +111,37 @@ const TimelineTranslateField = ({ field, propStatus, effectiveValue, onSave, onD
|
|
|
99
111
|
});
|
|
100
112
|
}
|
|
101
113
|
}
|
|
102
|
-
}, [
|
|
114
|
+
}, [codeX, dragX, onSave, propStatus, serialize]);
|
|
115
|
+
const onZChange = (0, react_1.useCallback)((newVal) => {
|
|
116
|
+
setDragZ(newVal);
|
|
117
|
+
onDragValueChange(serialize(dragX !== null && dragX !== void 0 ? dragX : codeX, dragY !== null && dragY !== void 0 ? dragY : codeY, newVal));
|
|
118
|
+
}, [codeX, codeY, dragX, dragY, onDragValueChange, serialize]);
|
|
119
|
+
const onZChangeEnd = (0, react_1.useCallback)((newVal) => {
|
|
120
|
+
const newStr = serialize(dragX !== null && dragX !== void 0 ? dragX : codeX, dragY !== null && dragY !== void 0 ? dragY : codeY, newVal);
|
|
121
|
+
if (newStr !== propStatus.codeValue) {
|
|
122
|
+
onSave(newStr).finally(() => {
|
|
123
|
+
setDragZ(null);
|
|
124
|
+
onDragEnd();
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
setDragZ(null);
|
|
129
|
+
onDragEnd();
|
|
130
|
+
}
|
|
131
|
+
}, [codeX, codeY, dragX, dragY, onDragEnd, onSave, propStatus, serialize]);
|
|
132
|
+
const onZTextChange = (0, react_1.useCallback)((newVal) => {
|
|
133
|
+
const parsed = Number(newVal);
|
|
134
|
+
if (!Number.isNaN(parsed)) {
|
|
135
|
+
const newStr = serialize(dragX !== null && dragX !== void 0 ? dragX : codeX, dragY !== null && dragY !== void 0 ? dragY : codeY, parsed);
|
|
136
|
+
if (newStr !== propStatus.codeValue) {
|
|
137
|
+
setDragZ(parsed);
|
|
138
|
+
onSave(newStr).finally(() => setDragZ(null));
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}, [codeX, codeY, dragX, dragY, onSave, propStatus, serialize]);
|
|
103
142
|
return (jsx_runtime_1.jsxs("span", { style: containerStyle, children: [
|
|
104
|
-
jsx_runtime_1.jsx(InputDragger_1.InputDragger, { type: "number", value: dragX !== null && dragX !== void 0 ? dragX : codeX, style: leftDraggerStyle, status: "ok", small: true, onValueChange: onXChange, onValueChangeEnd: onXChangeEnd, onTextChange: onXTextChange, min: -Infinity, max: Infinity, step: step, formatter: formatter, rightAlign: false, snapToStep: false, dragDecimalPlaces: decimalPlaces, dragSensitivity: translateDragSensitivity }), jsx_runtime_1.jsx("div", { style: { marginLeft: -6, marginRight: -6 } }), jsx_runtime_1.jsx(InputDragger_1.InputDragger, { type: "number", value: dragY !== null && dragY !== void 0 ? dragY : codeY, style: rightDraggerStyle, status: "ok", small: true, onValueChange: onYChange, onValueChangeEnd: onYChangeEnd, onTextChange: onYTextChange, min: -Infinity, max: Infinity, step: step, formatter: formatter, rightAlign: false, snapToStep: false, dragDecimalPlaces: decimalPlaces, dragSensitivity: translateDragSensitivity })
|
|
105
|
-
|
|
143
|
+
jsx_runtime_1.jsx(InputDragger_1.InputDragger, { type: "number", value: dragX !== null && dragX !== void 0 ? dragX : codeX, buttonStyle: leftDraggerStyle, style: leftDraggerStyle, status: "ok", small: true, onValueChange: onXChange, onValueChangeEnd: onXChangeEnd, onTextChange: onXTextChange, min: -Infinity, max: Infinity, step: step, formatter: formatter, rightAlign: false, snapToStep: false, dragDecimalPlaces: decimalPlaces, dragSensitivity: translateDragSensitivity, "aria-label": "Offset X" }), jsx_runtime_1.jsx("div", { style: { marginLeft: -6, marginRight: -6 } }), jsx_runtime_1.jsx(InputDragger_1.InputDragger, { type: "number", value: dragY !== null && dragY !== void 0 ? dragY : codeY, buttonStyle: rightDraggerStyle, style: rightDraggerStyle, status: "ok", small: true, onValueChange: onYChange, onValueChangeEnd: onYChangeEnd, onTextChange: onYTextChange, min: -Infinity, max: Infinity, step: step, formatter: formatter, rightAlign: false, snapToStep: false, dragDecimalPlaces: decimalPlaces, dragSensitivity: translateDragSensitivity, "aria-label": "Offset Y" }), show3D ? (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
|
|
144
|
+
jsx_runtime_1.jsx("div", { style: { marginLeft: -6, marginRight: -6 } }), jsx_runtime_1.jsx(InputDragger_1.InputDragger, { type: "number", value: (_a = dragZ !== null && dragZ !== void 0 ? dragZ : codeZ) !== null && _a !== void 0 ? _a : 0, buttonStyle: rightDraggerStyle, style: rightDraggerStyle, status: "ok", small: true, onValueChange: onZChange, onValueChangeEnd: onZChangeEnd, onTextChange: onZTextChange, min: -Infinity, max: Infinity, step: step, formatter: formatter, rightAlign: false, snapToStep: false, dragDecimalPlaces: decimalPlaces, dragSensitivity: translateDragSensitivity, "aria-label": "Offset Z" })
|
|
145
|
+
] })) : null] }));
|
|
106
146
|
};
|
|
107
147
|
exports.TimelineTranslateField = TimelineTranslateField;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const Transform3DModeContext: import("react").Context<boolean>;
|
|
@@ -78,12 +78,6 @@ const deleteEffects = (effects) => {
|
|
|
78
78
|
}))
|
|
79
79
|
.then((result) => {
|
|
80
80
|
if (result.success) {
|
|
81
|
-
const singleEffect = effects[0];
|
|
82
|
-
(0, NotificationCenter_1.showNotification)(effects.length === 1 && (singleEffect === null || singleEffect === void 0 ? void 0 : singleEffect.type) === 'single-effect'
|
|
83
|
-
? 'Removed effect from source file'
|
|
84
|
-
: effects.length === 1
|
|
85
|
-
? 'Removed effects from source file'
|
|
86
|
-
: 'Removed effects from source files', 2000);
|
|
87
81
|
return true;
|
|
88
82
|
}
|
|
89
83
|
(0, NotificationCenter_1.showNotification)(result.reason, 4000);
|
|
@@ -5,6 +5,7 @@ const no_react_1 = require("remotion/no-react");
|
|
|
5
5
|
const format_file_location_1 = require("../../helpers/format-file-location");
|
|
6
6
|
const get_open_in_menu_items_1 = require("../get-open-in-menu-items");
|
|
7
7
|
const NotificationCenter_1 = require("../Notifications/NotificationCenter");
|
|
8
|
+
const actions_1 = require("../RenderQueue/actions");
|
|
8
9
|
const timeline_asset_link_1 = require("./timeline-asset-link");
|
|
9
10
|
const normalizeMenuDividers = (items) => {
|
|
10
11
|
var _a;
|
|
@@ -47,9 +48,21 @@ const getSequenceContextMenuItems = ({ assetLinkInfo, canOpenInEditor, deleteDis
|
|
|
47
48
|
editorInfo,
|
|
48
49
|
excludeCodingAgentId: (_g = defaultCodingAgent === null || defaultCodingAgent === void 0 ? void 0 : defaultCodingAgent.id) !== null && _g !== void 0 ? _g : null,
|
|
49
50
|
excludeEditorId: defaultEditorId,
|
|
51
|
+
fileManagerDisabled: !(originalLocation === null || originalLocation === void 0 ? void 0 : originalLocation.source),
|
|
52
|
+
folder: false,
|
|
53
|
+
location: originalLocation,
|
|
50
54
|
onConfigureApps,
|
|
51
55
|
onOpenInCodingAgent: openInCodingAgentWithContext,
|
|
52
56
|
onOpenInEditor: openInEditor,
|
|
57
|
+
onOpenInFileExplorer: () => {
|
|
58
|
+
if (!(originalLocation === null || originalLocation === void 0 ? void 0 : originalLocation.source)) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
(0, actions_1.openInFileExplorer)({ directory: originalLocation.source }).catch((err) => {
|
|
62
|
+
(0, NotificationCenter_1.showNotification)(`Could not open file: ${err.message}`, 2000);
|
|
63
|
+
});
|
|
64
|
+
},
|
|
65
|
+
onOpenInTerminal: null,
|
|
53
66
|
})
|
|
54
67
|
: [];
|
|
55
68
|
const items = [
|
|
@@ -110,12 +123,7 @@ const getSequenceContextMenuItems = ({ assetLinkInfo, canOpenInEditor, deleteDis
|
|
|
110
123
|
if (!contextForAgents) {
|
|
111
124
|
return;
|
|
112
125
|
}
|
|
113
|
-
navigator.clipboard
|
|
114
|
-
.writeText(contextForAgents)
|
|
115
|
-
.then(() => {
|
|
116
|
-
(0, NotificationCenter_1.showNotification)('Copied context for agents', 1000);
|
|
117
|
-
})
|
|
118
|
-
.catch((err) => {
|
|
126
|
+
navigator.clipboard.writeText(contextForAgents).catch((err) => {
|
|
119
127
|
(0, NotificationCenter_1.showNotification)(`Could not copy to clipboard: ${err.message}`, 1000);
|
|
120
128
|
});
|
|
121
129
|
},
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { KeyframeClipboardData } from '@remotion/studio-shared';
|
|
1
|
+
import type { KeyframeClipboardData, KeyframeClipboardFieldType } from '@remotion/studio-shared';
|
|
2
2
|
import { type InteractivitySchema, type OverrideIdToNodePaths, type PropStatuses, type SequencePropsSubscriptionKey, type TSequence } from 'remotion';
|
|
3
3
|
import type { TimelineSelection } from './TimelineSelection';
|
|
4
4
|
export declare const getKeyframeClipboardDataFromSelections: ({ selections, sequences, overrideIdsToNodePaths, propStatuses, }: {
|
|
@@ -24,6 +24,10 @@ export type PasteKeyframeTarget = {
|
|
|
24
24
|
} | {
|
|
25
25
|
readonly type: 'none' | 'multiple' | 'uncopyable' | 'incompatible';
|
|
26
26
|
};
|
|
27
|
+
export declare const isKeyframeValueCompatible: ({ value, fieldType, }: {
|
|
28
|
+
readonly value: unknown;
|
|
29
|
+
readonly fieldType: KeyframeClipboardFieldType | null;
|
|
30
|
+
}) => boolean;
|
|
27
31
|
export declare const getPasteKeyframeTarget: ({ selectedItems, payload, timelinePosition, sequences, overrideIdsToNodePaths, propStatuses, }: {
|
|
28
32
|
readonly selectedItems: readonly TimelineSelection[];
|
|
29
33
|
readonly payload: KeyframeClipboardData;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getPasteKeyframeTarget = exports.getKeyframeClipboardDataFromSelections = void 0;
|
|
3
|
+
exports.getPasteKeyframeTarget = exports.isKeyframeValueCompatible = exports.getKeyframeClipboardDataFromSelections = void 0;
|
|
4
4
|
const studio_shared_1 = require("@remotion/studio-shared");
|
|
5
5
|
const remotion_1 = require("remotion");
|
|
6
6
|
const find_track_for_node_path_info_1 = require("./find-track-for-node-path-info");
|
|
@@ -217,6 +217,7 @@ const isKeyframeValueCompatible = ({ value, fieldType, }) => {
|
|
|
217
217
|
}
|
|
218
218
|
return typeof value === 'string';
|
|
219
219
|
};
|
|
220
|
+
exports.isKeyframeValueCompatible = isKeyframeValueCompatible;
|
|
220
221
|
const getPasteKeyframeTarget = ({ selectedItems, payload, timelinePosition, sequences, overrideIdsToNodePaths, propStatuses, }) => {
|
|
221
222
|
var _a, _b, _c;
|
|
222
223
|
if (selectedItems.length === 0) {
|
|
@@ -270,7 +271,7 @@ const getPasteKeyframeTarget = ({ selectedItems, payload, timelinePosition, sequ
|
|
|
270
271
|
].sort((first, second) => first - second);
|
|
271
272
|
const firstEasingSegmentIndex = finalFrames.indexOf(firstFrame);
|
|
272
273
|
if (resolved.fieldType !== payload.fieldType ||
|
|
273
|
-
payload.keyframes.some((keyframe) => !isKeyframeValueCompatible({
|
|
274
|
+
payload.keyframes.some((keyframe) => !(0, exports.isKeyframeValueCompatible)({
|
|
274
275
|
value: keyframe.value,
|
|
275
276
|
fieldType: payload.fieldType,
|
|
276
277
|
}))) {
|
|
@@ -36,6 +36,7 @@ const saveInlineCaptionPatches = ({ fileName, nodePath, schema, patches, nextCap
|
|
|
36
36
|
};
|
|
37
37
|
exports.saveInlineCaptionPatches = saveInlineCaptionPatches;
|
|
38
38
|
const saveSequenceProps = ({ changes, addedKeyframes, movedKeyframes, setPropStatuses, clientId, undoLabel, redoLabel, }) => {
|
|
39
|
+
var _a;
|
|
39
40
|
const keyframesToAdd = addedKeyframes === null ? [] : addedKeyframes;
|
|
40
41
|
const sequenceKeyframes = movedKeyframes === null ? [] : movedKeyframes.sequenceKeyframes;
|
|
41
42
|
const effectKeyframes = movedKeyframes === null ? [] : movedKeyframes.effectKeyframes;
|
|
@@ -56,13 +57,18 @@ const saveSequenceProps = ({ changes, addedKeyframes, movedKeyframes, setPropSta
|
|
|
56
57
|
return (0, save_prop_queue_1.enqueueSavePropChange)({
|
|
57
58
|
nodePath: change.nodePath,
|
|
58
59
|
setPropStatuses,
|
|
59
|
-
applyOptimistic: (prev) =>
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
60
|
+
applyOptimistic: (prev) => {
|
|
61
|
+
var _a;
|
|
62
|
+
return ((_a = change.sourceEdit) === null || _a === void 0 ? void 0 : _a.type) === 'clipboard-param'
|
|
63
|
+
? prev
|
|
64
|
+
: (0, studio_shared_1.optimisticUpdateForPropStatuses)({
|
|
65
|
+
previous: prev,
|
|
66
|
+
fieldKey: change.fieldKey,
|
|
67
|
+
value: change.value,
|
|
68
|
+
defaultValue: change.defaultValue,
|
|
69
|
+
schema: change.schema,
|
|
70
|
+
});
|
|
71
|
+
},
|
|
66
72
|
apiCall: () => {
|
|
67
73
|
var _a;
|
|
68
74
|
return (0, sequence_props_api_1.saveSequenceProps)({
|
|
@@ -102,6 +108,9 @@ const saveSequenceProps = ({ changes, addedKeyframes, movedKeyframes, setPropSta
|
|
|
102
108
|
}));
|
|
103
109
|
}
|
|
104
110
|
for (const change of changes) {
|
|
111
|
+
if (((_a = change.sourceEdit) === null || _a === void 0 ? void 0 : _a.type) === 'clipboard-param') {
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
105
114
|
setPropStatuses(change.nodePath, (prev) => (0, studio_shared_1.optimisticUpdateForPropStatuses)({
|
|
106
115
|
previous: prev,
|
|
107
116
|
fieldKey: change.fieldKey,
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type EffectClipboardParam, type SequencePropClipboardData } from '@remotion/studio-shared';
|
|
2
|
+
import { type CanUpdateSequencePropStatus, type InteractivitySchema, type OverrideIdToNodePaths, type PropStatuses, type SequencePropsSubscriptionKey, type TSequence } from 'remotion';
|
|
3
|
+
import type { TimelineSelection } from './TimelineSelection';
|
|
4
|
+
export declare const propStatusToClipboardParam: (prop: CanUpdateSequencePropStatus) => EffectClipboardParam | null;
|
|
5
|
+
export declare const getSequencePropClipboardDataFromSelection: ({ selection, propStatuses, sequences, overrideIdsToNodePaths, }: {
|
|
6
|
+
readonly selection: TimelineSelection;
|
|
7
|
+
readonly propStatuses: PropStatuses;
|
|
8
|
+
readonly sequences: TSequence[];
|
|
9
|
+
readonly overrideIdsToNodePaths: OverrideIdToNodePaths;
|
|
10
|
+
}) => SequencePropClipboardData | null;
|
|
11
|
+
type PasteSequencePropEditTarget = {
|
|
12
|
+
readonly fileName: string;
|
|
13
|
+
readonly nodePath: SequencePropsSubscriptionKey;
|
|
14
|
+
readonly fieldKey: string;
|
|
15
|
+
readonly defaultValue: string | null;
|
|
16
|
+
readonly schema: InteractivitySchema;
|
|
17
|
+
};
|
|
18
|
+
export type PasteSequencePropTarget = {
|
|
19
|
+
readonly type: 'valid';
|
|
20
|
+
readonly targets: PasteSequencePropEditTarget[];
|
|
21
|
+
} | {
|
|
22
|
+
readonly type: 'none' | 'prop-mismatch' | 'uncopyable' | 'incompatible';
|
|
23
|
+
};
|
|
24
|
+
export declare const getPasteSequencePropTarget: ({ selectedItems, payload, propStatuses, sequences, overrideIdsToNodePaths, }: {
|
|
25
|
+
readonly selectedItems: readonly TimelineSelection[];
|
|
26
|
+
readonly payload: SequencePropClipboardData;
|
|
27
|
+
readonly propStatuses: PropStatuses;
|
|
28
|
+
readonly sequences: TSequence[];
|
|
29
|
+
readonly overrideIdsToNodePaths: OverrideIdToNodePaths;
|
|
30
|
+
}) => PasteSequencePropTarget;
|
|
31
|
+
export {};
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getPasteSequencePropTarget = exports.getSequencePropClipboardDataFromSelection = exports.propStatusToClipboardParam = void 0;
|
|
4
|
+
const studio_shared_1 = require("@remotion/studio-shared");
|
|
5
|
+
const remotion_1 = require("remotion");
|
|
6
|
+
const find_track_for_node_path_info_1 = require("./find-track-for-node-path-info");
|
|
7
|
+
const keyframe_clipboard_1 = require("./keyframe-clipboard");
|
|
8
|
+
const propStatusToClipboardParam = (prop) => {
|
|
9
|
+
if (prop.status === 'computed') {
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
if (prop.status === 'static') {
|
|
13
|
+
if (prop.codeValue === undefined) {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
return { type: 'static', value: prop.codeValue };
|
|
17
|
+
}
|
|
18
|
+
if (!(0, studio_shared_1.isKeyframeInterpolationFunction)(prop.interpolationFunction)) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
type: 'keyframed',
|
|
23
|
+
interpolationFunction: prop.interpolationFunction,
|
|
24
|
+
keyframes: prop.keyframes,
|
|
25
|
+
easing: prop.easing,
|
|
26
|
+
clamping: prop.clamping,
|
|
27
|
+
...(prop.output === undefined || prop.output === 'linear'
|
|
28
|
+
? {}
|
|
29
|
+
: { output: prop.output }),
|
|
30
|
+
...(prop.posterize === undefined ? {} : { posterize: prop.posterize }),
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
exports.propStatusToClipboardParam = propStatusToClipboardParam;
|
|
34
|
+
const getSequencePropClipboardDataFromSelection = ({ selection, propStatuses, sequences, overrideIdsToNodePaths, }) => {
|
|
35
|
+
var _a, _b;
|
|
36
|
+
var _c;
|
|
37
|
+
if (selection.type !== 'sequence-prop') {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
const track = (0, find_track_for_node_path_info_1.findTrackForNodePathInfo)({
|
|
41
|
+
sequences,
|
|
42
|
+
overrideIdsToNodePaths,
|
|
43
|
+
nodePathInfo: selection.nodePathInfo,
|
|
44
|
+
});
|
|
45
|
+
if (!(track === null || track === void 0 ? void 0 : track.sequence.controls)) {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
const field = remotion_1.Internals.getFlatSchemaWithAllKeys(track.sequence.controls.schema)[selection.key];
|
|
49
|
+
if (!field || !(0, studio_shared_1.isKeyframeClipboardFieldType)(field.type)) {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
const propStatus = (_b = remotion_1.Internals.getPropStatusesCtx(propStatuses, (_c = (_a = track.nodePathInfo) === null || _a === void 0 ? void 0 : _a.sequenceSubscriptionKey) !== null && _c !== void 0 ? _c : selection.nodePathInfo.sequenceSubscriptionKey)) === null || _b === void 0 ? void 0 : _b[selection.key];
|
|
53
|
+
if (!propStatus) {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
const param = (0, exports.propStatusToClipboardParam)(propStatus);
|
|
57
|
+
if (param === null) {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
return {
|
|
61
|
+
type: 'sequence-prop',
|
|
62
|
+
version: 1,
|
|
63
|
+
remotionClipboard: 'sequence-prop',
|
|
64
|
+
key: selection.key,
|
|
65
|
+
fieldType: field.type,
|
|
66
|
+
param,
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
exports.getSequencePropClipboardDataFromSelection = getSequencePropClipboardDataFromSelection;
|
|
70
|
+
const getPasteTargetForSelection = ({ selection, payload, propStatuses, sequences, overrideIdsToNodePaths, }) => {
|
|
71
|
+
var _a;
|
|
72
|
+
if (selection.type !== 'sequence-prop' && selection.type !== 'sequence') {
|
|
73
|
+
return { type: 'none' };
|
|
74
|
+
}
|
|
75
|
+
const fieldKey = selection.type === 'sequence-prop' ? selection.key : payload.key;
|
|
76
|
+
if (fieldKey !== payload.key) {
|
|
77
|
+
return { type: 'prop-mismatch' };
|
|
78
|
+
}
|
|
79
|
+
const track = (0, find_track_for_node_path_info_1.findTrackForNodePathInfo)({
|
|
80
|
+
sequences,
|
|
81
|
+
overrideIdsToNodePaths,
|
|
82
|
+
nodePathInfo: selection.nodePathInfo,
|
|
83
|
+
});
|
|
84
|
+
if (!(track === null || track === void 0 ? void 0 : track.sequence.controls) || !track.nodePathInfo) {
|
|
85
|
+
return { type: 'uncopyable' };
|
|
86
|
+
}
|
|
87
|
+
const { schema } = track.sequence.controls;
|
|
88
|
+
const field = remotion_1.Internals.getFlatSchemaWithAllKeys(schema)[fieldKey];
|
|
89
|
+
if (!field || field.type !== payload.fieldType) {
|
|
90
|
+
return { type: 'incompatible' };
|
|
91
|
+
}
|
|
92
|
+
const nodePath = track.nodePathInfo.sequenceSubscriptionKey;
|
|
93
|
+
const propStatus = (_a = remotion_1.Internals.getPropStatusesCtx(propStatuses, nodePath)) === null || _a === void 0 ? void 0 : _a[fieldKey];
|
|
94
|
+
if (!propStatus || propStatus.status === 'computed') {
|
|
95
|
+
return { type: 'uncopyable' };
|
|
96
|
+
}
|
|
97
|
+
const values = payload.param.type === 'static'
|
|
98
|
+
? [payload.param.value]
|
|
99
|
+
: payload.param.keyframes.map((keyframe) => keyframe.value);
|
|
100
|
+
if (values.some((value) => !(0, keyframe_clipboard_1.isKeyframeValueCompatible)({ value, fieldType: payload.fieldType }))) {
|
|
101
|
+
return { type: 'incompatible' };
|
|
102
|
+
}
|
|
103
|
+
return {
|
|
104
|
+
type: 'valid',
|
|
105
|
+
target: {
|
|
106
|
+
fileName: nodePath.absolutePath,
|
|
107
|
+
nodePath,
|
|
108
|
+
fieldKey,
|
|
109
|
+
defaultValue: field.default === undefined ? null : JSON.stringify(field.default),
|
|
110
|
+
schema,
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
};
|
|
114
|
+
const getPasteSequencePropTarget = ({ selectedItems, payload, propStatuses, sequences, overrideIdsToNodePaths, }) => {
|
|
115
|
+
if (selectedItems.length === 0) {
|
|
116
|
+
return { type: 'none' };
|
|
117
|
+
}
|
|
118
|
+
const targets = [];
|
|
119
|
+
for (const selection of selectedItems) {
|
|
120
|
+
const result = getPasteTargetForSelection({
|
|
121
|
+
selection,
|
|
122
|
+
payload,
|
|
123
|
+
propStatuses,
|
|
124
|
+
sequences,
|
|
125
|
+
overrideIdsToNodePaths,
|
|
126
|
+
});
|
|
127
|
+
if (result.type !== 'valid') {
|
|
128
|
+
return result;
|
|
129
|
+
}
|
|
130
|
+
targets.push(result.target);
|
|
131
|
+
}
|
|
132
|
+
return {
|
|
133
|
+
type: 'valid',
|
|
134
|
+
targets: [
|
|
135
|
+
...new Map(targets.map((target) => [
|
|
136
|
+
remotion_1.Internals.makeSequencePropsSubscriptionKey(target.nodePath),
|
|
137
|
+
target,
|
|
138
|
+
])).values(),
|
|
139
|
+
],
|
|
140
|
+
};
|
|
141
|
+
};
|
|
142
|
+
exports.getPasteSequencePropTarget = getPasteSequencePropTarget;
|
|
@@ -2,7 +2,7 @@ import type { SequenceNodePath, InteractivitySchema, VideoConfigValues } from 'r
|
|
|
2
2
|
import { subscribeToSequenceProps } from '../sequence-props-api';
|
|
3
3
|
type SubscribeResult = Awaited<ReturnType<typeof subscribeToSequenceProps>>;
|
|
4
4
|
type ApplyResult = (result: SubscribeResult) => void;
|
|
5
|
-
export declare const acquireSequencePropsSubscription: ({ fileName, line, column, schema, componentIdentity, effects, nodePath, clientId, applyOnce, applyEach, videoConfigValues, }: {
|
|
5
|
+
export declare const acquireSequencePropsSubscription: ({ fileName, line, column, schema, componentIdentity, effects, nodePath, clientId, applyOnce, applyEach, videoConfigValues, stack, }: {
|
|
6
6
|
fileName: string;
|
|
7
7
|
line: number;
|
|
8
8
|
column: number;
|
|
@@ -14,6 +14,7 @@ export declare const acquireSequencePropsSubscription: ({ fileName, line, column
|
|
|
14
14
|
applyOnce: ApplyResult;
|
|
15
15
|
applyEach: ApplyResult;
|
|
16
16
|
videoConfigValues: VideoConfigValues;
|
|
17
|
+
stack: string | null;
|
|
17
18
|
}) => {
|
|
18
19
|
release: () => void;
|
|
19
20
|
};
|
|
@@ -4,9 +4,11 @@ exports.acquireSequencePropsSubscription = void 0;
|
|
|
4
4
|
const studio_shared_1 = require("@remotion/studio-shared");
|
|
5
5
|
const remotion_1 = require("remotion");
|
|
6
6
|
const sequence_props_api_1 = require("../sequence-props-api");
|
|
7
|
-
|
|
7
|
+
// The generated stack distinguishes Fast Refresh instances even when source maps
|
|
8
|
+
// resolve both the old and new JSX nodes to the same line and column.
|
|
9
|
+
const makeKey = ({ fileName, line, column, componentIdentity, sequenceKeys, assetKeys, effectKeys, videoConfigValues, stack, }) => `${fileName}\0${line}\0${column}\0${componentIdentity !== null && componentIdentity !== void 0 ? componentIdentity : ''}\0${sequenceKeys.join('\0')}\0${assetKeys.join('\0')}\0${effectKeys.map((keys) => keys.join('\0')).join('\0\0')}\0${JSON.stringify(videoConfigValues)}\0${stack !== null && stack !== void 0 ? stack : ''}`;
|
|
8
10
|
const entries = new Map();
|
|
9
|
-
const acquireSequencePropsSubscription = ({ fileName, line, column, schema, componentIdentity, effects, nodePath, clientId, applyOnce, applyEach, videoConfigValues, }) => {
|
|
11
|
+
const acquireSequencePropsSubscription = ({ fileName, line, column, schema, componentIdentity, effects, nodePath, clientId, applyOnce, applyEach, videoConfigValues, stack, }) => {
|
|
10
12
|
const sequenceKeys = (0, studio_shared_1.getAllSchemaKeys)(schema);
|
|
11
13
|
const assetKeys = (0, studio_shared_1.getAssetSchemaKeys)(schema);
|
|
12
14
|
const effectKeys = effects.map((effect) => (0, studio_shared_1.getAllSchemaKeys)(effect));
|
|
@@ -19,6 +21,7 @@ const acquireSequencePropsSubscription = ({ fileName, line, column, schema, comp
|
|
|
19
21
|
assetKeys,
|
|
20
22
|
effectKeys,
|
|
21
23
|
videoConfigValues,
|
|
24
|
+
stack,
|
|
22
25
|
});
|
|
23
26
|
let entry = entries.get(key);
|
|
24
27
|
if (!entry) {
|
|
@@ -150,8 +150,8 @@ const formatTranslateTimelineFieldValueForDisplay = ({ fieldSchema, value, }) =>
|
|
|
150
150
|
if (numericValue !== null) {
|
|
151
151
|
return formatTranslateCoordinateForDisplay(numericValue, decimalPlaces);
|
|
152
152
|
}
|
|
153
|
-
const
|
|
154
|
-
return (0, timeline_translate_utils_1.serializeTranslate)(
|
|
153
|
+
const translate = (0, timeline_translate_utils_1.parseTranslate)(String(value !== null && value !== void 0 ? value : '0px 0px'));
|
|
154
|
+
return (0, timeline_translate_utils_1.serializeTranslate)(translate, decimalPlaces);
|
|
155
155
|
};
|
|
156
156
|
const formatTransformOriginAxisValueForDisplay = ({ decimalPlaces, unit, value, }) => {
|
|
157
157
|
return `${(0, timeline_field_utils_1.formatTimelineNumber)({
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
|
+
import { type SchemaFieldInfo } from '../../helpers/timeline-layout';
|
|
3
|
+
export declare const isTimelineFieldStacked: ({ field, transform3DMode, }: {
|
|
4
|
+
readonly field: SchemaFieldInfo;
|
|
5
|
+
readonly transform3DMode: boolean;
|
|
6
|
+
}) => boolean;
|
|
2
7
|
export declare const getTimelineFieldLabelRowStyle: (depth: number, basePadding?: number | undefined) => React.CSSProperties;
|
|
3
8
|
export declare const timelineFieldValueColumnStyle: React.CSSProperties;
|
|
9
|
+
export declare const timelineCompactStackedFieldValueColumnStyle: React.CSSProperties;
|
|
4
10
|
export declare const timelineStackedFieldContentStyle: React.CSSProperties;
|
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.timelineStackedFieldContentStyle = exports.timelineFieldValueColumnStyle = exports.getTimelineFieldLabelRowStyle = void 0;
|
|
3
|
+
exports.timelineStackedFieldContentStyle = exports.timelineCompactStackedFieldValueColumnStyle = exports.timelineFieldValueColumnStyle = exports.getTimelineFieldLabelRowStyle = exports.isTimelineFieldStacked = void 0;
|
|
4
4
|
const timeline_layout_1 = require("../../helpers/timeline-layout");
|
|
5
5
|
const timeline_row_layout_1 = require("./timeline-row-layout");
|
|
6
|
+
const isTimelineFieldStacked = ({ field, transform3DMode, }) => {
|
|
7
|
+
return (field.typeName === 'text-content' ||
|
|
8
|
+
(transform3DMode &&
|
|
9
|
+
(field.typeName === 'translate' ||
|
|
10
|
+
field.typeName === 'rotation-css' ||
|
|
11
|
+
field.typeName === 'scale' ||
|
|
12
|
+
field.typeName === 'transform-origin')));
|
|
13
|
+
};
|
|
14
|
+
exports.isTimelineFieldStacked = isTimelineFieldStacked;
|
|
6
15
|
const getTimelineFieldLabelRowStyle = (depth, basePadding) => {
|
|
7
16
|
return {
|
|
8
17
|
flex: `0 0 ${(0, timeline_row_layout_1.getTimelineFieldLabelFlexBasis)(depth, basePadding)}`,
|
|
@@ -22,6 +31,12 @@ exports.timelineFieldValueColumnStyle = {
|
|
|
22
31
|
minWidth: 0,
|
|
23
32
|
paddingRight: timeline_layout_1.EXPANDED_SECTION_PADDING_RIGHT,
|
|
24
33
|
};
|
|
34
|
+
exports.timelineCompactStackedFieldValueColumnStyle = {
|
|
35
|
+
...exports.timelineFieldValueColumnStyle,
|
|
36
|
+
marginBottom: -2,
|
|
37
|
+
position: 'relative',
|
|
38
|
+
top: -2,
|
|
39
|
+
};
|
|
25
40
|
exports.timelineStackedFieldContentStyle = {
|
|
26
41
|
alignSelf: 'stretch',
|
|
27
42
|
display: 'flex',
|
|
@@ -1,2 +1,18 @@
|
|
|
1
|
+
export type ParsedCssRotation = {
|
|
2
|
+
readonly axis: readonly [number, number, number];
|
|
3
|
+
readonly degrees: number;
|
|
4
|
+
};
|
|
5
|
+
export declare const parseCssRotation: (value: string) => ParsedCssRotation | null;
|
|
1
6
|
export declare const parseCssRotationToDegrees: (value: string) => number;
|
|
7
|
+
export type CssRotationEuler = readonly [number, number, number];
|
|
8
|
+
export declare const parseCssRotationToEuler: (value: string) => CssRotationEuler;
|
|
9
|
+
export declare const serializeCssRotation3d: ({ axis, degrees, decimalPlaces, }: {
|
|
10
|
+
readonly axis: readonly [number, number, number];
|
|
11
|
+
readonly degrees: number;
|
|
12
|
+
readonly decimalPlaces?: number | undefined;
|
|
13
|
+
}) => string;
|
|
14
|
+
export declare const serializeCssRotationFromEuler: ({ rotation, decimalPlaces, }: {
|
|
15
|
+
readonly rotation: CssRotationEuler;
|
|
16
|
+
readonly decimalPlaces?: number | undefined;
|
|
17
|
+
}) => string;
|
|
2
18
|
export declare const serializeCssRotation: (value: number, decimalPlaces?: number) => string;
|