@remotion/studio-server 4.0.505 → 4.0.507
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/effect-param-expression.js +2 -0
- package/dist/codemods/update-keyframes/update-keyframes.js +2 -0
- package/dist/helpers/coding-agent-registry.d.ts +49 -0
- package/dist/helpers/coding-agent-registry.js +515 -0
- package/dist/helpers/editor-registry.d.ts +1 -0
- package/dist/helpers/editor-registry.js +31 -3
- package/dist/helpers/open-in-editor.js +5 -5
- package/dist/helpers/parse-keyframe-easing-expression.js +3 -0
- package/dist/helpers/resolve-editor.d.ts +2 -0
- package/dist/helpers/resolve-editor.js +4 -1
- package/dist/index.d.ts +7 -2
- package/dist/index.js +2 -0
- package/dist/preview-server/api-routes.js +7 -3
- package/dist/preview-server/api-types.d.ts +2 -1
- package/dist/preview-server/handler.d.ts +2 -1
- package/dist/preview-server/handler.js +2 -1
- package/dist/preview-server/routes/add-render.js +2 -0
- package/dist/preview-server/routes/can-update-sequence-props.js +28 -5
- package/dist/preview-server/routes/copy-render-output-to-asset.d.ts +3 -0
- package/dist/preview-server/routes/copy-render-output-to-asset.js +58 -0
- package/dist/preview-server/routes/default-coding-agent.d.ts +4 -0
- package/dist/preview-server/routes/default-coding-agent.js +32 -0
- package/dist/preview-server/routes/default-editor.d.ts +1 -6
- package/dist/preview-server/routes/default-editor.js +13 -113
- package/dist/preview-server/routes/element-install-plan.d.ts +1 -0
- package/dist/preview-server/routes/insert-element.js +27 -11
- package/dist/preview-server/routes/install-dependency.d.ts +2 -3
- package/dist/preview-server/routes/install-dependency.js +5 -7
- package/dist/preview-server/routes/open-in-editor.js +1 -1
- package/dist/preview-server/routes/update-config.d.ts +7 -0
- package/dist/preview-server/routes/update-config.js +188 -0
- package/dist/preview-server/start-server.d.ts +1 -0
- package/dist/preview-server/start-server.js +1 -0
- package/dist/preview-server/studio-protocol/handle-discovery.js +3 -4
- package/dist/preview-server/studio-protocol/handle-install.js +1 -1
- package/dist/preview-server/studio-protocol/handle-license-key.d.ts +6 -1
- package/dist/preview-server/studio-protocol/handle-license-key.js +13 -15
- package/dist/preview-server/studio-protocol/origin-policy.d.ts +2 -5
- package/dist/preview-server/studio-protocol/origin-policy.js +6 -30
- package/dist/remotion-skill-names.d.ts +1 -1
- package/dist/remotion-skill-names.js +1 -0
- package/dist/routes.d.ts +2 -1
- package/dist/routes.js +11 -3
- package/dist/start-studio.d.ts +2 -1
- package/dist/start-studio.js +2 -1
- package/package.json +8 -8
- package/web/coding-agent-icons/claude-code.png +0 -0
- package/web/coding-agent-icons/codex.png +0 -0
- package/web/coding-agent-icons/copilot.png +0 -0
- package/web/coding-agent-icons/cursor.png +0 -0
- package/dist/preview-server/routes/delete-effect-keyframe.d.ts +0 -3
- package/dist/preview-server/routes/delete-effect-keyframe.js +0 -89
- package/dist/preview-server/routes/delete-sequence-keyframe.d.ts +0 -3
- package/dist/preview-server/routes/delete-sequence-keyframe.js +0 -82
- package/dist/preview-server/routes/save-props-mutex.d.ts +0 -1
- package/dist/preview-server/routes/save-props-mutex.js +0 -11
package/dist/routes.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import type { DefaultEditor } from '@remotion/renderer';
|
|
|
3
3
|
import type { GitSource, RenderDefaults, RenderJob, StudioRuntimeConfig } from '@remotion/studio-shared';
|
|
4
4
|
import type { QueueMethods } from './preview-server/api-types';
|
|
5
5
|
import type { LiveEventsServer } from './preview-server/live-events';
|
|
6
|
-
export declare const handleRoutes: ({ staticHash, staticHashPrefix, outputHash, outputHashPrefix, request, response, liveEventsServer, getCurrentInputProps, getEnvVariables, remotionRoot, entryPoint, publicDir, logLevel, getRenderQueue, getRenderDefaults, getNumberOfAudioTags, queueMethods: methods, gitSource, binariesDirectory, getAudioLatencyHint, getPreviewSampleRate, enableCrossSiteIsolation, getStudioRuntimeConfig, getDefaultEditor, configFile, }: {
|
|
6
|
+
export declare const handleRoutes: ({ staticHash, staticHashPrefix, outputHash, outputHashPrefix, request, response, liveEventsServer, getCurrentInputProps, getEnvVariables, remotionRoot, entryPoint, publicDir, logLevel, getRenderQueue, getRenderDefaults, getNumberOfAudioTags, queueMethods: methods, gitSource, binariesDirectory, getAudioLatencyHint, getPreviewSampleRate, enableCrossSiteIsolation, getStudioRuntimeConfig, getDefaultCodingAgent, getDefaultEditor, configFile, }: {
|
|
7
7
|
staticHash: string;
|
|
8
8
|
staticHashPrefix: string;
|
|
9
9
|
outputHash: string;
|
|
@@ -27,6 +27,7 @@ export declare const handleRoutes: ({ staticHash, staticHashPrefix, outputHash,
|
|
|
27
27
|
getPreviewSampleRate: () => number | null;
|
|
28
28
|
enableCrossSiteIsolation: boolean;
|
|
29
29
|
getStudioRuntimeConfig: () => StudioRuntimeConfig;
|
|
30
|
+
getDefaultCodingAgent: () => "claude-code" | "codex" | "copilot" | "cursor" | null;
|
|
30
31
|
getDefaultEditor: () => DefaultEditor | null;
|
|
31
32
|
configFile: string | null;
|
|
32
33
|
}) => Promise<void>;
|
package/dist/routes.js
CHANGED
|
@@ -252,7 +252,7 @@ const handleBeep = (_, response) => {
|
|
|
252
252
|
readStream.pipe(response);
|
|
253
253
|
return Promise.resolve();
|
|
254
254
|
};
|
|
255
|
-
const handleRoutes = ({ staticHash, staticHashPrefix, outputHash, outputHashPrefix, request, response, liveEventsServer, getCurrentInputProps, getEnvVariables, remotionRoot, entryPoint, publicDir, logLevel, getRenderQueue, getRenderDefaults, getNumberOfAudioTags, queueMethods: methods, gitSource, binariesDirectory, getAudioLatencyHint, getPreviewSampleRate, enableCrossSiteIsolation, getStudioRuntimeConfig, getDefaultEditor, configFile, }) => {
|
|
255
|
+
const handleRoutes = ({ staticHash, staticHashPrefix, outputHash, outputHashPrefix, request, response, liveEventsServer, getCurrentInputProps, getEnvVariables, remotionRoot, entryPoint, publicDir, logLevel, getRenderQueue, getRenderDefaults, getNumberOfAudioTags, queueMethods: methods, gitSource, binariesDirectory, getAudioLatencyHint, getPreviewSampleRate, enableCrossSiteIsolation, getStudioRuntimeConfig, getDefaultCodingAgent, getDefaultEditor, configFile, }) => {
|
|
256
256
|
const url = new URL(request.url, 'http://localhost');
|
|
257
257
|
if (url.pathname === '/api/file-source') {
|
|
258
258
|
return handleFileSource({
|
|
@@ -284,7 +284,6 @@ const handleRoutes = ({ staticHash, staticHashPrefix, outputHash, outputHashPref
|
|
|
284
284
|
url.pathname === '/api/studio-protocol/license-key') {
|
|
285
285
|
if (request.method === 'OPTIONS') {
|
|
286
286
|
return (0, origin_policy_1.handleStudioProtocolOptions)({
|
|
287
|
-
licenseKey: url.pathname === '/api/studio-protocol/license-key',
|
|
288
287
|
request,
|
|
289
288
|
response,
|
|
290
289
|
});
|
|
@@ -299,7 +298,15 @@ const handleRoutes = ({ staticHash, staticHashPrefix, outputHash, outputHashPref
|
|
|
299
298
|
});
|
|
300
299
|
}
|
|
301
300
|
if (url.pathname === '/api/studio-protocol/license-key') {
|
|
302
|
-
return (0, handle_license_key_1.handleStudioProtocolLicenseKey)({
|
|
301
|
+
return (0, handle_license_key_1.handleStudioProtocolLicenseKey)({
|
|
302
|
+
configFile,
|
|
303
|
+
focusStudioTab: (studioUrl) => {
|
|
304
|
+
(0, better_opn_1.focusBrowserTab)({ url: studioUrl }).catch(() => undefined);
|
|
305
|
+
},
|
|
306
|
+
liveEventsServer,
|
|
307
|
+
request,
|
|
308
|
+
response,
|
|
309
|
+
});
|
|
303
310
|
}
|
|
304
311
|
return (0, handle_install_1.handleStudioProtocolInstall)({
|
|
305
312
|
focusStudioTab: (studioUrl) => {
|
|
@@ -323,6 +330,7 @@ const handleRoutes = ({ staticHash, staticHashPrefix, outputHash, outputHashPref
|
|
|
323
330
|
binariesDirectory,
|
|
324
331
|
publicDir,
|
|
325
332
|
configFile,
|
|
333
|
+
getDefaultCodingAgent,
|
|
326
334
|
getDefaultEditor,
|
|
327
335
|
});
|
|
328
336
|
}
|
package/dist/start-studio.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export type StartStudioResult = {
|
|
|
7
7
|
} | {
|
|
8
8
|
type: 'already-running';
|
|
9
9
|
};
|
|
10
|
-
export declare const startStudio: ({ browserArgs, browserFlag, shouldOpenBrowser, fullEntryPath, logLevel, getCurrentInputProps, getEnvVariables, desiredPort, remotionRoot, relativePublicDir, bundlerOverride, rspackOverride, webpackOverride, poll, getRenderDefaults, getRenderQueue, getNumberOfAudioTags, queueMethods, previewEntry, gitSource, binariesDirectory, forceIPv4, getAudioLatencyHint, getPreviewSampleRate, enableCrossSiteIsolation, forceNew, rspack, getStudioRuntimeConfig, getDefaultEditor, configFile, }: {
|
|
10
|
+
export declare const startStudio: ({ browserArgs, browserFlag, shouldOpenBrowser, fullEntryPath, logLevel, getCurrentInputProps, getEnvVariables, desiredPort, remotionRoot, relativePublicDir, bundlerOverride, rspackOverride, webpackOverride, poll, getRenderDefaults, getRenderQueue, getNumberOfAudioTags, queueMethods, previewEntry, gitSource, binariesDirectory, forceIPv4, getAudioLatencyHint, getPreviewSampleRate, enableCrossSiteIsolation, forceNew, rspack, getStudioRuntimeConfig, getDefaultCodingAgent, getDefaultEditor, configFile, }: {
|
|
11
11
|
browserArgs: string;
|
|
12
12
|
browserFlag: string;
|
|
13
13
|
logLevel: "error" | "info" | "trace" | "verbose" | "warn";
|
|
@@ -36,6 +36,7 @@ export declare const startStudio: ({ browserArgs, browserFlag, shouldOpenBrowser
|
|
|
36
36
|
forceNew: boolean;
|
|
37
37
|
rspack: boolean;
|
|
38
38
|
getStudioRuntimeConfig: () => StudioRuntimeConfig;
|
|
39
|
+
getDefaultCodingAgent: () => "claude-code" | "codex" | "copilot" | "cursor" | null;
|
|
39
40
|
getDefaultEditor: () => DefaultEditor | null;
|
|
40
41
|
configFile: string | null;
|
|
41
42
|
}) => Promise<StartStudioResult>;
|
package/dist/start-studio.js
CHANGED
|
@@ -19,7 +19,7 @@ const public_folder_1 = require("./preview-server/public-folder");
|
|
|
19
19
|
const start_server_1 = require("./preview-server/start-server");
|
|
20
20
|
const server_ready_1 = require("./server-ready");
|
|
21
21
|
const watch_root_file_1 = require("./watch-root-file");
|
|
22
|
-
const startStudio = async ({ browserArgs, browserFlag, shouldOpenBrowser, fullEntryPath, logLevel, getCurrentInputProps, getEnvVariables, desiredPort, remotionRoot, relativePublicDir, bundlerOverride, rspackOverride, webpackOverride, poll, getRenderDefaults, getRenderQueue, getNumberOfAudioTags, queueMethods, previewEntry, gitSource, binariesDirectory, forceIPv4, getAudioLatencyHint, getPreviewSampleRate, enableCrossSiteIsolation, forceNew, rspack, getStudioRuntimeConfig, getDefaultEditor, configFile, }) => {
|
|
22
|
+
const startStudio = async ({ browserArgs, browserFlag, shouldOpenBrowser, fullEntryPath, logLevel, getCurrentInputProps, getEnvVariables, desiredPort, remotionRoot, relativePublicDir, bundlerOverride, rspackOverride, webpackOverride, poll, getRenderDefaults, getRenderQueue, getNumberOfAudioTags, queueMethods, previewEntry, gitSource, binariesDirectory, forceIPv4, getAudioLatencyHint, getPreviewSampleRate, enableCrossSiteIsolation, forceNew, rspack, getStudioRuntimeConfig, getDefaultCodingAgent, getDefaultEditor, configFile, }) => {
|
|
23
23
|
try {
|
|
24
24
|
if (typeof Bun === 'undefined') {
|
|
25
25
|
process.title = 'node (npx remotion studio)';
|
|
@@ -93,6 +93,7 @@ const startStudio = async ({ browserArgs, browserFlag, shouldOpenBrowser, fullEn
|
|
|
93
93
|
forceNew,
|
|
94
94
|
rspack,
|
|
95
95
|
getStudioRuntimeConfig,
|
|
96
|
+
getDefaultCodingAgent,
|
|
96
97
|
getDefaultEditor,
|
|
97
98
|
configFile,
|
|
98
99
|
});
|
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.507",
|
|
7
7
|
"description": "Run a Remotion Studio with a server backend",
|
|
8
8
|
"main": "dist",
|
|
9
9
|
"scripts": {
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"access": "public"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@remotion/studio-protocol": "4.0.
|
|
26
|
+
"@remotion/studio-protocol": "4.0.507",
|
|
27
27
|
"@babel/types": "7.24.0",
|
|
28
28
|
"@babel/parser": "7.24.1",
|
|
29
29
|
"@svgr/core": "8.1.0",
|
|
@@ -32,12 +32,12 @@
|
|
|
32
32
|
"semver": "7.5.3",
|
|
33
33
|
"zod": "4.4.3",
|
|
34
34
|
"prettier": "3.8.1",
|
|
35
|
-
"remotion": "4.0.
|
|
35
|
+
"remotion": "4.0.507",
|
|
36
36
|
"recast": "0.23.11",
|
|
37
|
-
"@remotion/bundler": "4.0.
|
|
38
|
-
"@remotion/renderer": "4.0.
|
|
39
|
-
"@remotion/studio-codemods": "4.0.
|
|
40
|
-
"@remotion/studio-shared": "4.0.
|
|
37
|
+
"@remotion/bundler": "4.0.507",
|
|
38
|
+
"@remotion/renderer": "4.0.507",
|
|
39
|
+
"@remotion/studio-codemods": "4.0.507",
|
|
40
|
+
"@remotion/studio-shared": "4.0.507",
|
|
41
41
|
"memfs": "3.4.3",
|
|
42
42
|
"open": "8.4.2"
|
|
43
43
|
},
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"ast-types": "0.16.1",
|
|
46
46
|
"react": "19.2.3",
|
|
47
47
|
"@types/semver": "7.5.3",
|
|
48
|
-
"@remotion/eslint-config-internal": "4.0.
|
|
48
|
+
"@remotion/eslint-config-internal": "4.0.507",
|
|
49
49
|
"eslint": "9.19.0",
|
|
50
50
|
"@types/node": "20.12.14",
|
|
51
51
|
"@typescript/native-preview": "7.0.0-dev.20260217.1"
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import type { DeleteEffectKeyframeRequest, DeleteEffectKeyframeResponse } from '@remotion/studio-shared';
|
|
2
|
-
import type { ApiHandler } from '../api-types';
|
|
3
|
-
export declare const deleteEffectKeyframeHandler: ApiHandler<DeleteEffectKeyframeRequest, DeleteEffectKeyframeResponse>;
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.deleteEffectKeyframeHandler = void 0;
|
|
4
|
-
const node_fs_1 = require("node:fs");
|
|
5
|
-
const renderer_1 = require("@remotion/renderer");
|
|
6
|
-
const studio_shared_1 = require("@remotion/studio-shared");
|
|
7
|
-
const parse_ast_1 = require("../../codemods/parse-ast");
|
|
8
|
-
const update_keyframes_1 = require("../../codemods/update-keyframes/update-keyframes");
|
|
9
|
-
const file_watcher_1 = require("../../file-watcher");
|
|
10
|
-
const resolve_file_inside_project_1 = require("../../helpers/resolve-file-inside-project");
|
|
11
|
-
const undo_stack_1 = require("../undo-stack");
|
|
12
|
-
const watch_ignore_next_change_1 = require("../watch-ignore-next-change");
|
|
13
|
-
const can_update_effect_props_1 = require("./can-update-effect-props");
|
|
14
|
-
const can_update_sequence_props_1 = require("./can-update-sequence-props");
|
|
15
|
-
const log_effect_update_1 = require("./log-updates/log-effect-update");
|
|
16
|
-
const save_props_mutex_1 = require("./save-props-mutex");
|
|
17
|
-
const deleteEffectKeyframeHandler = ({ input: { fileName, sequenceNodePath, effectIndex, key, frame, schema, clientId, }, remotionRoot, logLevel, }) => (0, save_props_mutex_1.withSavePropsLock)(async () => {
|
|
18
|
-
renderer_1.RenderInternals.Log.trace({ indent: false, logLevel }, `[delete-effect-keyframe] Received request for fileName="${fileName}" effectIndex=${effectIndex} key="${key}" frame=${frame}`);
|
|
19
|
-
const { absolutePath, fileRelativeToRoot } = (0, resolve_file_inside_project_1.resolveFileInsideProject)({
|
|
20
|
-
remotionRoot,
|
|
21
|
-
fileName,
|
|
22
|
-
action: 'modify',
|
|
23
|
-
});
|
|
24
|
-
const fileContents = (0, node_fs_1.readFileSync)(absolutePath, 'utf-8');
|
|
25
|
-
const { output, oldValueStrings, newValueStrings, formatted, logLine, effectCallee, } = await (0, update_keyframes_1.updateEffectKeyframes)({
|
|
26
|
-
input: fileContents,
|
|
27
|
-
sequenceNodePath: sequenceNodePath.nodePath,
|
|
28
|
-
effectIndex,
|
|
29
|
-
updates: [
|
|
30
|
-
{
|
|
31
|
-
key,
|
|
32
|
-
operation: {
|
|
33
|
-
type: 'remove',
|
|
34
|
-
frame,
|
|
35
|
-
},
|
|
36
|
-
},
|
|
37
|
-
],
|
|
38
|
-
});
|
|
39
|
-
const oldValueString = oldValueStrings[0];
|
|
40
|
-
const newValueString = newValueStrings[0];
|
|
41
|
-
const undoPropChange = `${key} keyframe restored at frame ${frame}`;
|
|
42
|
-
const redoPropChange = `${key} keyframe deleted at frame ${frame}`;
|
|
43
|
-
(0, undo_stack_1.pushToUndoStack)({
|
|
44
|
-
filePath: absolutePath,
|
|
45
|
-
oldContents: fileContents,
|
|
46
|
-
newContents: null,
|
|
47
|
-
logLevel,
|
|
48
|
-
remotionRoot,
|
|
49
|
-
logLine,
|
|
50
|
-
description: {
|
|
51
|
-
undoMessage: `↩️ ${undoPropChange}`,
|
|
52
|
-
redoMessage: `↪️ ${redoPropChange}`,
|
|
53
|
-
},
|
|
54
|
-
entryType: 'effect-props',
|
|
55
|
-
suppressHmrOnFileRestore: true,
|
|
56
|
-
});
|
|
57
|
-
(0, undo_stack_1.suppressUndoStackInvalidation)(absolutePath);
|
|
58
|
-
(0, watch_ignore_next_change_1.suppressBundlerUpdateForFile)(absolutePath);
|
|
59
|
-
(0, file_watcher_1.writeFileAndNotifyFileWatchers)(absolutePath, output, clientId);
|
|
60
|
-
(0, log_effect_update_1.logEffectUpdate)({
|
|
61
|
-
fileRelativeToRoot,
|
|
62
|
-
line: logLine,
|
|
63
|
-
effectName: effectCallee,
|
|
64
|
-
propKey: key,
|
|
65
|
-
oldValueString,
|
|
66
|
-
newValueString,
|
|
67
|
-
defaultValueString: null,
|
|
68
|
-
formatted,
|
|
69
|
-
logLevel,
|
|
70
|
-
removedProps: [],
|
|
71
|
-
addedProps: [],
|
|
72
|
-
});
|
|
73
|
-
(0, undo_stack_1.printUndoHint)(logLevel);
|
|
74
|
-
const ast = (0, parse_ast_1.parseAst)((0, node_fs_1.readFileSync)(absolutePath, 'utf-8'));
|
|
75
|
-
const jsx = (0, can_update_sequence_props_1.findJsxElementAtNodePath)(ast, sequenceNodePath.nodePath);
|
|
76
|
-
if (!jsx) {
|
|
77
|
-
return {
|
|
78
|
-
canUpdate: false,
|
|
79
|
-
effectIndex,
|
|
80
|
-
reason: 'not-found',
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
return (0, can_update_effect_props_1.computeEffectPropStatus)({
|
|
84
|
-
jsx,
|
|
85
|
-
effectIndex,
|
|
86
|
-
keys: (0, studio_shared_1.getAllSchemaKeys)(schema),
|
|
87
|
-
});
|
|
88
|
-
});
|
|
89
|
-
exports.deleteEffectKeyframeHandler = deleteEffectKeyframeHandler;
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import type { DeleteSequenceKeyframeRequest, DeleteSequenceKeyframeResponse } from '@remotion/studio-shared';
|
|
2
|
-
import type { ApiHandler } from '../api-types';
|
|
3
|
-
export declare const deleteSequenceKeyframeHandler: ApiHandler<DeleteSequenceKeyframeRequest, DeleteSequenceKeyframeResponse>;
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.deleteSequenceKeyframeHandler = void 0;
|
|
4
|
-
const node_fs_1 = require("node:fs");
|
|
5
|
-
const renderer_1 = require("@remotion/renderer");
|
|
6
|
-
const studio_shared_1 = require("@remotion/studio-shared");
|
|
7
|
-
const update_keyframes_1 = require("../../codemods/update-keyframes/update-keyframes");
|
|
8
|
-
const file_watcher_1 = require("../../file-watcher");
|
|
9
|
-
const resolve_file_inside_project_1 = require("../../helpers/resolve-file-inside-project");
|
|
10
|
-
const undo_stack_1 = require("../undo-stack");
|
|
11
|
-
const watch_ignore_next_change_1 = require("../watch-ignore-next-change");
|
|
12
|
-
const can_update_sequence_props_1 = require("./can-update-sequence-props");
|
|
13
|
-
const log_update_1 = require("./log-updates/log-update");
|
|
14
|
-
const save_props_mutex_1 = require("./save-props-mutex");
|
|
15
|
-
const deleteSequenceKeyframeHandler = ({ input: { fileName, nodePath, key, frame, schema, clientId }, remotionRoot, logLevel, }) => (0, save_props_mutex_1.withSavePropsLock)(async () => {
|
|
16
|
-
renderer_1.RenderInternals.Log.trace({ indent: false, logLevel }, `[delete-sequence-keyframe] Received request for fileName="${fileName}" key="${key}" frame=${frame}`);
|
|
17
|
-
const { absolutePath, fileRelativeToRoot } = (0, resolve_file_inside_project_1.resolveFileInsideProject)({
|
|
18
|
-
remotionRoot,
|
|
19
|
-
fileName,
|
|
20
|
-
action: 'modify',
|
|
21
|
-
});
|
|
22
|
-
const fileContents = (0, node_fs_1.readFileSync)(absolutePath, 'utf-8');
|
|
23
|
-
const { output, oldValueStrings, newValueStrings, formatted, logLine } = await (0, update_keyframes_1.updateSequenceKeyframes)({
|
|
24
|
-
input: fileContents,
|
|
25
|
-
nodePath: nodePath.nodePath,
|
|
26
|
-
updates: [
|
|
27
|
-
{
|
|
28
|
-
key,
|
|
29
|
-
operation: {
|
|
30
|
-
type: 'remove',
|
|
31
|
-
frame,
|
|
32
|
-
},
|
|
33
|
-
},
|
|
34
|
-
],
|
|
35
|
-
});
|
|
36
|
-
const oldValueString = oldValueStrings[0];
|
|
37
|
-
const newValueString = newValueStrings[0];
|
|
38
|
-
const undoPropChange = `${key} keyframe restored at frame ${frame}`;
|
|
39
|
-
const redoPropChange = `${key} keyframe deleted at frame ${frame}`;
|
|
40
|
-
(0, undo_stack_1.pushToUndoStack)({
|
|
41
|
-
filePath: absolutePath,
|
|
42
|
-
oldContents: fileContents,
|
|
43
|
-
newContents: null,
|
|
44
|
-
logLevel,
|
|
45
|
-
remotionRoot,
|
|
46
|
-
logLine,
|
|
47
|
-
description: {
|
|
48
|
-
undoMessage: `↩️ ${undoPropChange}`,
|
|
49
|
-
redoMessage: `↪️ ${redoPropChange}`,
|
|
50
|
-
},
|
|
51
|
-
entryType: 'sequence-props',
|
|
52
|
-
suppressHmrOnFileRestore: true,
|
|
53
|
-
});
|
|
54
|
-
(0, undo_stack_1.suppressUndoStackInvalidation)(absolutePath);
|
|
55
|
-
(0, watch_ignore_next_change_1.suppressBundlerUpdateForFile)(absolutePath);
|
|
56
|
-
(0, file_watcher_1.writeFileAndNotifyFileWatchers)(absolutePath, output, clientId);
|
|
57
|
-
(0, log_update_1.logUpdate)({
|
|
58
|
-
fileRelativeToRoot,
|
|
59
|
-
line: logLine,
|
|
60
|
-
key,
|
|
61
|
-
oldValueString,
|
|
62
|
-
newValueString,
|
|
63
|
-
defaultValueString: null,
|
|
64
|
-
formatted,
|
|
65
|
-
logLevel,
|
|
66
|
-
removedProps: [],
|
|
67
|
-
addedProps: [],
|
|
68
|
-
});
|
|
69
|
-
(0, undo_stack_1.printUndoHint)(logLevel);
|
|
70
|
-
const status = (0, can_update_sequence_props_1.computeSequencePropsStatusFromContent)({
|
|
71
|
-
fileContents: output,
|
|
72
|
-
keys: (0, studio_shared_1.getAllSchemaKeys)(schema),
|
|
73
|
-
nodePath: nodePath.nodePath,
|
|
74
|
-
effects: [],
|
|
75
|
-
});
|
|
76
|
-
return {
|
|
77
|
-
canUpdate: true,
|
|
78
|
-
props: status.props,
|
|
79
|
-
results: [{ fileName, nodePath, props: status.props }],
|
|
80
|
-
};
|
|
81
|
-
});
|
|
82
|
-
exports.deleteSequenceKeyframeHandler = deleteSequenceKeyframeHandler;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const withSavePropsLock: <T>(fn: () => Promise<T>) => Promise<T>;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.withSavePropsLock = void 0;
|
|
4
|
-
let chain = Promise.resolve();
|
|
5
|
-
const withSavePropsLock = (fn) => {
|
|
6
|
-
const run = () => fn();
|
|
7
|
-
const next = chain.then(run, run);
|
|
8
|
-
chain = next.then(() => undefined, () => undefined);
|
|
9
|
-
return next;
|
|
10
|
-
};
|
|
11
|
-
exports.withSavePropsLock = withSavePropsLock;
|