@remotion/studio-server 4.0.470 → 4.0.472
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/codemods/add-effect.d.ts +26 -0
- package/dist/codemods/add-effect.js +193 -0
- package/dist/codemods/format-file-content.js +1 -1
- package/dist/codemods/parse-ast.js +4 -1
- package/dist/codemods/paste-effects.d.ts +15 -0
- package/dist/codemods/paste-effects.js +234 -0
- package/dist/codemods/recast-mods.js +178 -31
- package/dist/codemods/reorder-effect.d.ts +13 -0
- package/dist/codemods/reorder-effect.js +61 -0
- package/dist/codemods/update-keyframes/ensure-imports-and-frame-hook.d.ts +1 -1
- package/dist/codemods/update-keyframes/ensure-imports-and-frame-hook.js +7 -55
- package/dist/codemods/update-keyframes/update-keyframes.d.ts +15 -6
- package/dist/codemods/update-keyframes/update-keyframes.js +152 -26
- package/dist/helpers/get-ast-node-path.js +6 -1
- package/dist/helpers/import-agnostic-node-path.d.ts +10 -0
- package/dist/helpers/import-agnostic-node-path.js +154 -0
- package/dist/helpers/imports.d.ts +16 -0
- package/dist/helpers/imports.js +145 -0
- package/dist/helpers/open-in-editor.d.ts +2 -2
- package/dist/helpers/open-in-editor.js +35 -2
- package/dist/helpers/resolve-composition-component.d.ts +15 -0
- package/dist/helpers/resolve-composition-component.js +332 -31
- package/dist/preview-server/api-routes.js +10 -4
- package/dist/preview-server/routes/add-effect-keyframe.js +4 -2
- package/dist/preview-server/routes/add-effect.d.ts +3 -0
- package/dist/preview-server/routes/add-effect.js +68 -0
- package/dist/preview-server/routes/add-sequence-keyframe.js +7 -3
- package/dist/preview-server/routes/apply-codemod.js +18 -0
- package/dist/preview-server/routes/can-update-effect-props.d.ts +3 -2
- package/dist/preview-server/routes/can-update-effect-props.js +75 -6
- package/dist/preview-server/routes/can-update-sequence-props.d.ts +1 -0
- package/dist/preview-server/routes/can-update-sequence-props.js +47 -30
- package/dist/preview-server/routes/delete-keyframes.d.ts +13 -0
- package/dist/preview-server/routes/delete-keyframes.js +264 -0
- package/dist/preview-server/routes/insert-jsx-element.d.ts +3 -0
- package/dist/preview-server/routes/insert-jsx-element.js +102 -0
- package/dist/preview-server/routes/paste-effects.d.ts +3 -0
- package/dist/preview-server/routes/paste-effects.js +78 -0
- package/dist/preview-server/routes/reorder-effect.d.ts +3 -0
- package/dist/preview-server/routes/reorder-effect.js +67 -0
- package/dist/preview-server/routes/save-effect-props.js +1 -0
- package/dist/preview-server/routes/subscribe-to-sequence-props.js +2 -1
- package/dist/preview-server/sequence-props-watchers.d.ts +2 -1
- package/dist/preview-server/sequence-props-watchers.js +22 -2
- package/dist/preview-server/undo-stack.d.ts +15 -1
- package/package.json +6 -6
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.insertJsxElementHandler = void 0;
|
|
4
|
+
const renderer_1 = require("@remotion/renderer");
|
|
5
|
+
const file_watcher_1 = require("../../file-watcher");
|
|
6
|
+
const resolve_composition_component_1 = require("../../helpers/resolve-composition-component");
|
|
7
|
+
const format_log_file_location_1 = require("../format-log-file-location");
|
|
8
|
+
const undo_stack_1 = require("../undo-stack");
|
|
9
|
+
const log_update_1 = require("./log-updates/log-update");
|
|
10
|
+
const save_props_mutex_1 = require("./save-props-mutex");
|
|
11
|
+
const validateDimension = (name, value) => {
|
|
12
|
+
if (!Number.isFinite(value) || value < 1) {
|
|
13
|
+
throw new Error(`${name} must be a positive number`);
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
const validateElement = (element) => {
|
|
17
|
+
if (element.type === 'solid') {
|
|
18
|
+
validateDimension('width', element.width);
|
|
19
|
+
validateDimension('height', element.height);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
if (element.type === 'asset') {
|
|
23
|
+
if (!element.src || element.src.includes('\\')) {
|
|
24
|
+
throw new Error('Asset path must be a static file path');
|
|
25
|
+
}
|
|
26
|
+
if (element.dimensions) {
|
|
27
|
+
validateDimension('width', element.dimensions.width);
|
|
28
|
+
validateDimension('height', element.dimensions.height);
|
|
29
|
+
}
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
throw new Error('Unsupported element type');
|
|
33
|
+
};
|
|
34
|
+
const getElementLabel = (element) => {
|
|
35
|
+
if (element.type === 'solid') {
|
|
36
|
+
return '<Solid>';
|
|
37
|
+
}
|
|
38
|
+
if (element.type === 'asset') {
|
|
39
|
+
if (element.assetType === 'image') {
|
|
40
|
+
return '<Img>';
|
|
41
|
+
}
|
|
42
|
+
if (element.assetType === 'video') {
|
|
43
|
+
return '<Video>';
|
|
44
|
+
}
|
|
45
|
+
if (element.assetType === 'gif') {
|
|
46
|
+
return '<Gif>';
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
throw new Error('Unsupported element type');
|
|
50
|
+
};
|
|
51
|
+
const insertJsxElementHandler = ({ input: { compositionFile, compositionId, element }, remotionRoot, logLevel, }) => (0, save_props_mutex_1.withSavePropsLock)(async () => {
|
|
52
|
+
try {
|
|
53
|
+
validateElement(element);
|
|
54
|
+
const elementLabel = getElementLabel(element);
|
|
55
|
+
renderer_1.RenderInternals.Log.trace({ indent: false, logLevel }, `[insert-jsx-element] Received request for compositionFile="${compositionFile}" compositionId="${compositionId}" element="${element.type}"`);
|
|
56
|
+
const { fileName, source, oldContents, output, formatted, logLine } = await (0, resolve_composition_component_1.insertJsxElementIntoComposition)({
|
|
57
|
+
remotionRoot,
|
|
58
|
+
compositionFile,
|
|
59
|
+
compositionId,
|
|
60
|
+
element,
|
|
61
|
+
prettierConfigOverride: null,
|
|
62
|
+
});
|
|
63
|
+
(0, undo_stack_1.pushToUndoStack)({
|
|
64
|
+
filePath: fileName,
|
|
65
|
+
oldContents,
|
|
66
|
+
newContents: output,
|
|
67
|
+
logLevel,
|
|
68
|
+
remotionRoot,
|
|
69
|
+
logLine,
|
|
70
|
+
description: {
|
|
71
|
+
undoMessage: `↩️ Added ${elementLabel}`,
|
|
72
|
+
redoMessage: `↪️ Added ${elementLabel}`,
|
|
73
|
+
},
|
|
74
|
+
entryType: 'insert-jsx-element',
|
|
75
|
+
suppressHmrOnFileRestore: false,
|
|
76
|
+
});
|
|
77
|
+
(0, undo_stack_1.suppressUndoStackInvalidation)(fileName);
|
|
78
|
+
(0, file_watcher_1.writeFileAndNotifyFileWatchers)(fileName, output, undefined);
|
|
79
|
+
const locationLabel = (0, format_log_file_location_1.formatLogFileLocation)({
|
|
80
|
+
remotionRoot,
|
|
81
|
+
absolutePath: fileName,
|
|
82
|
+
line: logLine,
|
|
83
|
+
});
|
|
84
|
+
renderer_1.RenderInternals.Log.info({ indent: false, logLevel }, `${renderer_1.RenderInternals.chalk.blueBright(`${locationLabel}`)} Added ${elementLabel}`);
|
|
85
|
+
if (!formatted) {
|
|
86
|
+
(0, log_update_1.warnAboutPrettierOnce)(logLevel);
|
|
87
|
+
}
|
|
88
|
+
renderer_1.RenderInternals.Log.verbose({ indent: false, logLevel }, `[insert-jsx-element] Wrote ${source}${formatted ? ' (formatted)' : ''}`);
|
|
89
|
+
(0, undo_stack_1.printUndoHint)(logLevel);
|
|
90
|
+
return {
|
|
91
|
+
success: true,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
catch (err) {
|
|
95
|
+
return {
|
|
96
|
+
success: false,
|
|
97
|
+
reason: err.message,
|
|
98
|
+
stack: err.stack,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
exports.insertJsxElementHandler = insertJsxElementHandler;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.pasteEffectsHandler = void 0;
|
|
4
|
+
const node_fs_1 = require("node:fs");
|
|
5
|
+
const renderer_1 = require("@remotion/renderer");
|
|
6
|
+
const paste_effects_1 = require("../../codemods/paste-effects");
|
|
7
|
+
const file_watcher_1 = require("../../file-watcher");
|
|
8
|
+
const resolve_file_inside_project_1 = require("../../helpers/resolve-file-inside-project");
|
|
9
|
+
const format_log_file_location_1 = require("../format-log-file-location");
|
|
10
|
+
const undo_stack_1 = require("../undo-stack");
|
|
11
|
+
const formatting_1 = require("./log-updates/formatting");
|
|
12
|
+
const log_update_1 = require("./log-updates/log-update");
|
|
13
|
+
const getPastedEffectDescription = (effectLabels) => {
|
|
14
|
+
if (effectLabels.length === 1) {
|
|
15
|
+
return effectLabels[0];
|
|
16
|
+
}
|
|
17
|
+
return `${effectLabels.length} effects`;
|
|
18
|
+
};
|
|
19
|
+
const pasteEffectsHandler = async ({ input: { targetFileName, targetSequenceNodePath, type, effects, clientId }, remotionRoot, logLevel, }) => {
|
|
20
|
+
try {
|
|
21
|
+
if (effects.length === 0 && type !== 'effects-replacing') {
|
|
22
|
+
throw new Error('No effects were specified for pasting');
|
|
23
|
+
}
|
|
24
|
+
renderer_1.RenderInternals.Log.trace({ indent: false, logLevel }, `[paste-effects] Received request to paste ${effects.length} effect${effects.length === 1 ? '' : 's'} into fileName="${targetFileName}"`);
|
|
25
|
+
const { absolutePath, fileRelativeToRoot } = (0, resolve_file_inside_project_1.resolveFileInsideProject)({
|
|
26
|
+
remotionRoot,
|
|
27
|
+
fileName: targetFileName,
|
|
28
|
+
action: 'modify',
|
|
29
|
+
});
|
|
30
|
+
const fileContents = (0, node_fs_1.readFileSync)(absolutePath, 'utf-8');
|
|
31
|
+
const { output, formatted, effectLabels, logLine } = await (0, paste_effects_1.pasteEffects)({
|
|
32
|
+
input: fileContents,
|
|
33
|
+
targetFileName,
|
|
34
|
+
targetSequenceNodePath: targetSequenceNodePath.nodePath,
|
|
35
|
+
type,
|
|
36
|
+
effects,
|
|
37
|
+
});
|
|
38
|
+
const effectDescription = getPastedEffectDescription(effectLabels);
|
|
39
|
+
(0, undo_stack_1.pushToUndoStack)({
|
|
40
|
+
filePath: absolutePath,
|
|
41
|
+
oldContents: fileContents,
|
|
42
|
+
newContents: null,
|
|
43
|
+
logLevel,
|
|
44
|
+
remotionRoot,
|
|
45
|
+
logLine,
|
|
46
|
+
description: {
|
|
47
|
+
undoMessage: `↩️ Pasting of ${effectDescription}`,
|
|
48
|
+
redoMessage: `↪️ Pasting of ${effectDescription}`,
|
|
49
|
+
},
|
|
50
|
+
entryType: 'paste-effects',
|
|
51
|
+
suppressHmrOnFileRestore: false,
|
|
52
|
+
});
|
|
53
|
+
(0, undo_stack_1.suppressUndoStackInvalidation)(absolutePath);
|
|
54
|
+
(0, file_watcher_1.writeFileAndNotifyFileWatchers)(absolutePath, output, clientId);
|
|
55
|
+
const locationLabel = (0, format_log_file_location_1.formatLogFileLocation)({
|
|
56
|
+
remotionRoot,
|
|
57
|
+
absolutePath,
|
|
58
|
+
line: logLine,
|
|
59
|
+
});
|
|
60
|
+
renderer_1.RenderInternals.Log.info({ indent: false, logLevel }, `${renderer_1.RenderInternals.chalk.blueBright(`${locationLabel}`)} Pasted ${(0, formatting_1.attrName)(effectDescription)}`);
|
|
61
|
+
if (!formatted) {
|
|
62
|
+
(0, log_update_1.warnAboutPrettierOnce)(logLevel);
|
|
63
|
+
}
|
|
64
|
+
renderer_1.RenderInternals.Log.verbose({ indent: false, logLevel }, `[paste-effects] Wrote ${fileRelativeToRoot}${formatted ? ' (formatted)' : ''}`);
|
|
65
|
+
(0, undo_stack_1.printUndoHint)(logLevel);
|
|
66
|
+
return {
|
|
67
|
+
success: true,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
catch (err) {
|
|
71
|
+
return {
|
|
72
|
+
success: false,
|
|
73
|
+
reason: err.message,
|
|
74
|
+
stack: err.stack,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
exports.pasteEffectsHandler = pasteEffectsHandler;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.reorderEffectHandler = void 0;
|
|
4
|
+
const node_fs_1 = require("node:fs");
|
|
5
|
+
const renderer_1 = require("@remotion/renderer");
|
|
6
|
+
const reorder_effect_1 = require("../../codemods/reorder-effect");
|
|
7
|
+
const file_watcher_1 = require("../../file-watcher");
|
|
8
|
+
const resolve_file_inside_project_1 = require("../../helpers/resolve-file-inside-project");
|
|
9
|
+
const format_log_file_location_1 = require("../format-log-file-location");
|
|
10
|
+
const undo_stack_1 = require("../undo-stack");
|
|
11
|
+
const formatting_1 = require("./log-updates/formatting");
|
|
12
|
+
const log_update_1 = require("./log-updates/log-update");
|
|
13
|
+
const reorderEffectHandler = async ({ input: { fileName, sequenceNodePath, fromIndex, toIndex, clientId }, remotionRoot, logLevel, }) => {
|
|
14
|
+
try {
|
|
15
|
+
renderer_1.RenderInternals.Log.trace({ indent: false, logLevel }, `[reorder-effect] Received request for fileName="${fileName}" fromIndex=${fromIndex} toIndex=${toIndex}`);
|
|
16
|
+
const { absolutePath, fileRelativeToRoot } = (0, resolve_file_inside_project_1.resolveFileInsideProject)({
|
|
17
|
+
remotionRoot,
|
|
18
|
+
fileName,
|
|
19
|
+
action: 'modify',
|
|
20
|
+
});
|
|
21
|
+
const fileContents = (0, node_fs_1.readFileSync)(absolutePath, 'utf-8');
|
|
22
|
+
const { output, formatted, effectLabel, logLine } = await (0, reorder_effect_1.reorderEffect)({
|
|
23
|
+
input: fileContents,
|
|
24
|
+
sequenceNodePath: sequenceNodePath.nodePath,
|
|
25
|
+
fromIndex,
|
|
26
|
+
toIndex,
|
|
27
|
+
});
|
|
28
|
+
(0, undo_stack_1.pushToUndoStack)({
|
|
29
|
+
filePath: absolutePath,
|
|
30
|
+
oldContents: fileContents,
|
|
31
|
+
newContents: null,
|
|
32
|
+
logLevel,
|
|
33
|
+
remotionRoot,
|
|
34
|
+
logLine,
|
|
35
|
+
description: {
|
|
36
|
+
undoMessage: `↩️ Reordering of ${effectLabel}`,
|
|
37
|
+
redoMessage: `↪️ Reordering of ${effectLabel}`,
|
|
38
|
+
},
|
|
39
|
+
entryType: 'reorder-effect',
|
|
40
|
+
suppressHmrOnFileRestore: false,
|
|
41
|
+
});
|
|
42
|
+
(0, undo_stack_1.suppressUndoStackInvalidation)(absolutePath);
|
|
43
|
+
(0, file_watcher_1.writeFileAndNotifyFileWatchers)(absolutePath, output, clientId);
|
|
44
|
+
const locationLabel = (0, format_log_file_location_1.formatLogFileLocation)({
|
|
45
|
+
remotionRoot,
|
|
46
|
+
absolutePath,
|
|
47
|
+
line: logLine,
|
|
48
|
+
});
|
|
49
|
+
renderer_1.RenderInternals.Log.info({ indent: false, logLevel }, `${renderer_1.RenderInternals.chalk.blueBright(`${locationLabel}`)} Reordered ${(0, formatting_1.attrName)(effectLabel)}`);
|
|
50
|
+
if (!formatted) {
|
|
51
|
+
(0, log_update_1.warnAboutPrettierOnce)(logLevel);
|
|
52
|
+
}
|
|
53
|
+
renderer_1.RenderInternals.Log.verbose({ indent: false, logLevel }, `[reorder-effect] Wrote ${fileRelativeToRoot}${formatted ? ' (formatted)' : ''}`);
|
|
54
|
+
(0, undo_stack_1.printUndoHint)(logLevel);
|
|
55
|
+
return {
|
|
56
|
+
success: true,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
catch (err) {
|
|
60
|
+
return {
|
|
61
|
+
success: false,
|
|
62
|
+
reason: err.message,
|
|
63
|
+
stack: err.stack,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
exports.reorderEffectHandler = reorderEffectHandler;
|
|
@@ -2,11 +2,12 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.subscribeToSequenceProps = void 0;
|
|
4
4
|
const sequence_props_watchers_1 = require("../sequence-props-watchers");
|
|
5
|
-
const subscribeToSequenceProps = ({ input: { fileName, line, column, keys, effects, clientId }, remotionRoot, logLevel, }) => {
|
|
5
|
+
const subscribeToSequenceProps = ({ input: { fileName, line, column, nodePath, keys, effects, clientId }, remotionRoot, logLevel, }) => {
|
|
6
6
|
const result = (0, sequence_props_watchers_1.subscribeToSequencePropsWatchers)({
|
|
7
7
|
fileName,
|
|
8
8
|
line,
|
|
9
9
|
column,
|
|
10
|
+
nodePath,
|
|
10
11
|
keys,
|
|
11
12
|
effects,
|
|
12
13
|
remotionRoot,
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { type SubscribeToSequencePropsResponse } from '@remotion/studio-shared';
|
|
2
2
|
import type { SequenceNodePath } from 'remotion';
|
|
3
|
-
export declare const subscribeToSequencePropsWatchers: ({ fileName, line, column, keys, effects, remotionRoot, clientId, logLevel, }: {
|
|
3
|
+
export declare const subscribeToSequencePropsWatchers: ({ fileName, line, column, nodePath: preferredNodePath, keys, effects, remotionRoot, clientId, logLevel, }: {
|
|
4
4
|
fileName: string;
|
|
5
5
|
line: number;
|
|
6
6
|
column: number;
|
|
7
|
+
nodePath: SequenceNodePath | null;
|
|
7
8
|
keys: string[];
|
|
8
9
|
effects: string[][];
|
|
9
10
|
remotionRoot: string;
|
|
@@ -13,7 +13,26 @@ const live_events_1 = require("./live-events");
|
|
|
13
13
|
const node_path_cache_1 = require("./node-path-cache");
|
|
14
14
|
const can_update_sequence_props_1 = require("./routes/can-update-sequence-props");
|
|
15
15
|
const sequencePropsWatchers = {};
|
|
16
|
-
const getSequencePropsStatus = ({ fileName, line, column, keys, effects, remotionRoot, logLevel, }) => {
|
|
16
|
+
const getSequencePropsStatus = ({ fileName, line, column, preferredNodePath, keys, effects, remotionRoot, logLevel, }) => {
|
|
17
|
+
if (preferredNodePath) {
|
|
18
|
+
const fromNodePath = (0, can_update_sequence_props_1.computeSequencePropsStatus)({
|
|
19
|
+
fileName,
|
|
20
|
+
nodePath: preferredNodePath,
|
|
21
|
+
keys,
|
|
22
|
+
effects,
|
|
23
|
+
remotionRoot,
|
|
24
|
+
});
|
|
25
|
+
return {
|
|
26
|
+
status: fromNodePath,
|
|
27
|
+
nodePath: {
|
|
28
|
+
absolutePath: node_path_1.default.resolve(remotionRoot, fileName),
|
|
29
|
+
nodePath: preferredNodePath,
|
|
30
|
+
sequenceKeys: keys,
|
|
31
|
+
effectKeys: effects,
|
|
32
|
+
},
|
|
33
|
+
success: true,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
17
36
|
// Try cached nodePath first (handles stale source maps after suppressed rebuilds)
|
|
18
37
|
const cachedNodePath = (0, node_path_cache_1.getCachedNodePath)(fileName, line, column);
|
|
19
38
|
if (cachedNodePath) {
|
|
@@ -47,12 +66,13 @@ const getSequencePropsStatus = ({ fileName, line, column, keys, effects, remotio
|
|
|
47
66
|
});
|
|
48
67
|
return status;
|
|
49
68
|
};
|
|
50
|
-
const subscribeToSequencePropsWatchers = ({ fileName, line, column, keys, effects, remotionRoot, clientId, logLevel, }) => {
|
|
69
|
+
const subscribeToSequencePropsWatchers = ({ fileName, line, column, nodePath: preferredNodePath, keys, effects, remotionRoot, clientId, logLevel, }) => {
|
|
51
70
|
var _a;
|
|
52
71
|
const initialResult = getSequencePropsStatus({
|
|
53
72
|
fileName,
|
|
54
73
|
line,
|
|
55
74
|
column,
|
|
75
|
+
preferredNodePath,
|
|
56
76
|
keys,
|
|
57
77
|
effects,
|
|
58
78
|
remotionRoot,
|
|
@@ -3,7 +3,7 @@ export interface UndoEntryDescription {
|
|
|
3
3
|
undoMessage: string;
|
|
4
4
|
redoMessage: string;
|
|
5
5
|
}
|
|
6
|
-
type UndoEntryType = 'visual-control' | 'default-props' | 'sequence-props' | 'effect-props' | 'delete-effect' | 'delete-jsx-node' | 'duplicate-jsx-node' | 'delete-composition' | 'rename-composition' | 'duplicate-composition';
|
|
6
|
+
type UndoEntryType = 'visual-control' | 'default-props' | 'sequence-props' | 'effect-props' | 'keyframe-delete' | 'add-effect' | 'delete-effect' | 'paste-effects' | 'reorder-effect' | 'delete-jsx-node' | 'duplicate-jsx-node' | 'insert-jsx-element' | 'delete-composition' | 'rename-composition' | 'duplicate-composition' | 'delete-folder' | 'rename-folder';
|
|
7
7
|
type UndoEntrySnapshot = {
|
|
8
8
|
filePath: string;
|
|
9
9
|
oldContents: string;
|
|
@@ -27,18 +27,32 @@ type UndoEntry = {
|
|
|
27
27
|
entryType: 'sequence-props';
|
|
28
28
|
} | {
|
|
29
29
|
entryType: 'effect-props';
|
|
30
|
+
} | {
|
|
31
|
+
entryType: 'keyframe-delete';
|
|
32
|
+
} | {
|
|
33
|
+
entryType: 'add-effect';
|
|
30
34
|
} | {
|
|
31
35
|
entryType: 'delete-effect';
|
|
36
|
+
} | {
|
|
37
|
+
entryType: 'paste-effects';
|
|
38
|
+
} | {
|
|
39
|
+
entryType: 'reorder-effect';
|
|
32
40
|
} | {
|
|
33
41
|
entryType: 'delete-jsx-node';
|
|
34
42
|
} | {
|
|
35
43
|
entryType: 'duplicate-jsx-node';
|
|
44
|
+
} | {
|
|
45
|
+
entryType: 'insert-jsx-element';
|
|
36
46
|
} | {
|
|
37
47
|
entryType: 'delete-composition';
|
|
38
48
|
} | {
|
|
39
49
|
entryType: 'rename-composition';
|
|
40
50
|
} | {
|
|
41
51
|
entryType: 'duplicate-composition';
|
|
52
|
+
} | {
|
|
53
|
+
entryType: 'delete-folder';
|
|
54
|
+
} | {
|
|
55
|
+
entryType: 'rename-folder';
|
|
42
56
|
});
|
|
43
57
|
export declare function pushToUndoStack({ filePath, oldContents, newContents, logLevel, remotionRoot, logLine, description, entryType, suppressHmrOnFileRestore }: {
|
|
44
58
|
filePath: string;
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"url": "https://github.com/remotion-dev/remotion/tree/main/packages/studio-server"
|
|
4
4
|
},
|
|
5
5
|
"name": "@remotion/studio-server",
|
|
6
|
-
"version": "4.0.
|
|
6
|
+
"version": "4.0.472",
|
|
7
7
|
"description": "Run a Remotion Studio with a server backend",
|
|
8
8
|
"main": "dist",
|
|
9
9
|
"scripts": {
|
|
@@ -27,11 +27,11 @@
|
|
|
27
27
|
"@babel/parser": "7.24.1",
|
|
28
28
|
"semver": "7.5.3",
|
|
29
29
|
"prettier": "3.8.1",
|
|
30
|
-
"remotion": "4.0.
|
|
30
|
+
"remotion": "4.0.472",
|
|
31
31
|
"recast": "0.23.11",
|
|
32
|
-
"@remotion/bundler": "4.0.
|
|
33
|
-
"@remotion/renderer": "4.0.
|
|
34
|
-
"@remotion/studio-shared": "4.0.
|
|
32
|
+
"@remotion/bundler": "4.0.472",
|
|
33
|
+
"@remotion/renderer": "4.0.472",
|
|
34
|
+
"@remotion/studio-shared": "4.0.472",
|
|
35
35
|
"memfs": "3.4.3",
|
|
36
36
|
"open": "8.4.2"
|
|
37
37
|
},
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"ast-types": "0.16.1",
|
|
40
40
|
"react": "19.2.3",
|
|
41
41
|
"@types/semver": "7.5.3",
|
|
42
|
-
"@remotion/eslint-config-internal": "4.0.
|
|
42
|
+
"@remotion/eslint-config-internal": "4.0.472",
|
|
43
43
|
"eslint": "9.19.0",
|
|
44
44
|
"@types/node": "20.12.14",
|
|
45
45
|
"@typescript/native-preview": "7.0.0-dev.20260217.1"
|