@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.
Files changed (56) hide show
  1. package/dist/codemods/effect-param-expression.js +2 -0
  2. package/dist/codemods/update-keyframes/update-keyframes.js +2 -0
  3. package/dist/helpers/coding-agent-registry.d.ts +49 -0
  4. package/dist/helpers/coding-agent-registry.js +515 -0
  5. package/dist/helpers/editor-registry.d.ts +1 -0
  6. package/dist/helpers/editor-registry.js +31 -3
  7. package/dist/helpers/open-in-editor.js +5 -5
  8. package/dist/helpers/parse-keyframe-easing-expression.js +3 -0
  9. package/dist/helpers/resolve-editor.d.ts +2 -0
  10. package/dist/helpers/resolve-editor.js +4 -1
  11. package/dist/index.d.ts +7 -2
  12. package/dist/index.js +2 -0
  13. package/dist/preview-server/api-routes.js +7 -3
  14. package/dist/preview-server/api-types.d.ts +2 -1
  15. package/dist/preview-server/handler.d.ts +2 -1
  16. package/dist/preview-server/handler.js +2 -1
  17. package/dist/preview-server/routes/add-render.js +2 -0
  18. package/dist/preview-server/routes/can-update-sequence-props.js +28 -5
  19. package/dist/preview-server/routes/copy-render-output-to-asset.d.ts +3 -0
  20. package/dist/preview-server/routes/copy-render-output-to-asset.js +58 -0
  21. package/dist/preview-server/routes/default-coding-agent.d.ts +4 -0
  22. package/dist/preview-server/routes/default-coding-agent.js +32 -0
  23. package/dist/preview-server/routes/default-editor.d.ts +1 -6
  24. package/dist/preview-server/routes/default-editor.js +13 -113
  25. package/dist/preview-server/routes/element-install-plan.d.ts +1 -0
  26. package/dist/preview-server/routes/insert-element.js +27 -11
  27. package/dist/preview-server/routes/install-dependency.d.ts +2 -3
  28. package/dist/preview-server/routes/install-dependency.js +5 -7
  29. package/dist/preview-server/routes/open-in-editor.js +1 -1
  30. package/dist/preview-server/routes/update-config.d.ts +7 -0
  31. package/dist/preview-server/routes/update-config.js +188 -0
  32. package/dist/preview-server/start-server.d.ts +1 -0
  33. package/dist/preview-server/start-server.js +1 -0
  34. package/dist/preview-server/studio-protocol/handle-discovery.js +3 -4
  35. package/dist/preview-server/studio-protocol/handle-install.js +1 -1
  36. package/dist/preview-server/studio-protocol/handle-license-key.d.ts +6 -1
  37. package/dist/preview-server/studio-protocol/handle-license-key.js +13 -15
  38. package/dist/preview-server/studio-protocol/origin-policy.d.ts +2 -5
  39. package/dist/preview-server/studio-protocol/origin-policy.js +6 -30
  40. package/dist/remotion-skill-names.d.ts +1 -1
  41. package/dist/remotion-skill-names.js +1 -0
  42. package/dist/routes.d.ts +2 -1
  43. package/dist/routes.js +11 -3
  44. package/dist/start-studio.d.ts +2 -1
  45. package/dist/start-studio.js +2 -1
  46. package/package.json +8 -8
  47. package/web/coding-agent-icons/claude-code.png +0 -0
  48. package/web/coding-agent-icons/codex.png +0 -0
  49. package/web/coding-agent-icons/copilot.png +0 -0
  50. package/web/coding-agent-icons/cursor.png +0 -0
  51. package/dist/preview-server/routes/delete-effect-keyframe.d.ts +0 -3
  52. package/dist/preview-server/routes/delete-effect-keyframe.js +0 -89
  53. package/dist/preview-server/routes/delete-sequence-keyframe.d.ts +0 -3
  54. package/dist/preview-server/routes/delete-sequence-keyframe.js +0 -82
  55. package/dist/preview-server/routes/save-props-mutex.d.ts +0 -1
  56. package/dist/preview-server/routes/save-props-mutex.js +0 -11
@@ -12,5 +12,6 @@ exports.remotionSkillNames = [
12
12
  'remotion-multimedia',
13
13
  'remotion-render',
14
14
  'remotion-saas',
15
+ 'remotion-studio',
15
16
  'remotion-upgrade',
16
17
  ];
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)({ configFile, request, response });
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
  }
@@ -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>;
@@ -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.505",
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.505",
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.505",
35
+ "remotion": "4.0.507",
36
36
  "recast": "0.23.11",
37
- "@remotion/bundler": "4.0.505",
38
- "@remotion/renderer": "4.0.505",
39
- "@remotion/studio-codemods": "4.0.505",
40
- "@remotion/studio-shared": "4.0.505",
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.505",
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
@@ -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;