@remotion/studio-shared 4.0.461 → 4.0.463

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.
@@ -1,8 +1,7 @@
1
1
  import type { AudioCodec, ChromeMode, Codec, ColorSpace, LogLevel, PixelFormat, StillImageFormat, VideoImageFormat, X264Preset } from '@remotion/renderer';
2
2
  import type { HardwareAccelerationOption } from '@remotion/renderer/client';
3
- import type { _InternalTypes, CanUpdateSequencePropsResponseFalse, CanUpdateSequencePropsResponseTrue, SequenceSchema } from 'remotion';
4
- import type { CanUpdateSequencePropsResponse } from 'remotion';
5
- import type { SequenceNodePath } from 'remotion';
3
+ import type { CannotUpdateSequenceReason } from 'remotion';
4
+ import type { _InternalTypes, CanUpdateEffectPropsResponse, CanUpdateSequencePropsResponseFalse, CanUpdateSequencePropsResponseTrue, CanUpdateSequencePropStatus, SequenceSchema, SequenceNodePath, SequencePropsSubscriptionKey } from 'remotion';
6
5
  import type { RecastCodemod, VisualControlChange } from './codemods';
7
6
  import type { PackageManager } from './package-manager';
8
7
  import type { ProjectInfo } from './project-info';
@@ -162,37 +161,57 @@ export type UnsubscribeFromDefaultPropsRequest = {
162
161
  };
163
162
  export type CanUpdateSequencePropsRequest = {
164
163
  fileName: string;
165
- nodePath: SequenceNodePath;
164
+ nodePath: SequencePropsSubscriptionKey;
166
165
  keys: string[];
167
166
  };
168
167
  export type SubscribeToSequencePropsRequest = {
169
168
  fileName: string;
170
169
  line: number;
171
170
  column: number;
172
- schema: SequenceSchema;
171
+ keys: string[];
172
+ effects: string[][];
173
173
  clientId: string;
174
174
  };
175
175
  export type SubscribeToSequencePropsResponse = {
176
176
  success: true;
177
177
  status: CanUpdateSequencePropsResponseTrue;
178
- nodePath: SequenceNodePath;
178
+ nodePath: SequencePropsSubscriptionKey;
179
179
  } | {
180
180
  success: false;
181
181
  status: CanUpdateSequencePropsResponseFalse;
182
182
  };
183
183
  export type UnsubscribeFromSequencePropsRequest = {
184
184
  fileName: string;
185
- nodePath: SequenceNodePath;
185
+ nodePath: SequencePropsSubscriptionKey;
186
186
  clientId: string;
187
+ sequenceKeys: string[];
188
+ effectKeys: string[][];
187
189
  };
188
190
  export type SaveSequencePropsRequest = {
189
191
  fileName: string;
190
- nodePath: SequenceNodePath;
192
+ nodePath: SequencePropsSubscriptionKey;
193
+ key: string;
194
+ value: string;
195
+ defaultValue: string | null;
196
+ schema: SequenceSchema;
197
+ };
198
+ export type SaveSequencePropsResponse = {
199
+ canUpdate: true;
200
+ props: Record<string, CanUpdateSequencePropStatus>;
201
+ } | {
202
+ canUpdate: false;
203
+ reason: CannotUpdateSequenceReason;
204
+ };
205
+ export type SaveEffectPropsRequest = {
206
+ fileName: string;
207
+ sequenceNodePath: SequencePropsSubscriptionKey;
208
+ effectIndex: number;
191
209
  key: string;
192
210
  value: string;
193
211
  defaultValue: string | null;
194
212
  schema: SequenceSchema;
195
213
  };
214
+ export type SaveEffectPropsResponse = CanUpdateEffectPropsResponse;
196
215
  export type DeleteJsxNodeRequest = {
197
216
  fileName: string;
198
217
  nodePath: SequenceNodePath;
@@ -260,7 +279,8 @@ export type ApiRoutes = {
260
279
  '/api/unsubscribe-from-default-props': ReqAndRes<UnsubscribeFromDefaultPropsRequest, undefined>;
261
280
  '/api/subscribe-to-sequence-props': ReqAndRes<SubscribeToSequencePropsRequest, SubscribeToSequencePropsResponse>;
262
281
  '/api/unsubscribe-from-sequence-props': ReqAndRes<UnsubscribeFromSequencePropsRequest, undefined>;
263
- '/api/save-sequence-props': ReqAndRes<SaveSequencePropsRequest, CanUpdateSequencePropsResponse>;
282
+ '/api/save-sequence-props': ReqAndRes<SaveSequencePropsRequest, SaveSequencePropsResponse>;
283
+ '/api/save-effect-props': ReqAndRes<SaveEffectPropsRequest, SaveEffectPropsResponse>;
264
284
  '/api/delete-jsx-node': ReqAndRes<DeleteJsxNodeRequest, DeleteJsxNodeResponse>;
265
285
  '/api/duplicate-jsx-node': ReqAndRes<DuplicateJsxNodeRequest, DuplicateJsxNodeResponse>;
266
286
  '/api/update-available': ReqAndRes<UpdateAvailableRequest, UpdateAvailableResponse>;
@@ -1,5 +1,5 @@
1
1
  import type { StaticFile } from 'remotion';
2
- import type { SequenceNodePath, CanUpdateSequencePropsResponse } from 'remotion';
2
+ import type { CanUpdateSequencePropsResponse, SequencePropsSubscriptionKey } from 'remotion';
3
3
  import type { CanUpdateDefaultPropsResponse } from './api-requests';
4
4
  import type { HotMiddlewareMessage } from './hot-middleware';
5
5
  import type { CompletedClientRender, RenderJob } from './render-job';
@@ -39,7 +39,7 @@ export type EventSourceEvent = {
39
39
  } | {
40
40
  type: 'sequence-props-updated';
41
41
  fileName: string;
42
- nodePath: SequenceNodePath;
42
+ nodePath: SequencePropsSubscriptionKey;
43
43
  result: CanUpdateSequencePropsResponse;
44
44
  } | {
45
45
  type: 'default-props-updatable-changed';
@@ -0,0 +1,2 @@
1
+ import type { SequenceSchema } from 'remotion';
2
+ export declare const getAllSchemaKeys: (schema: SequenceSchema) => string[];
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAllSchemaKeys = void 0;
4
+ const remotion_1 = require("remotion");
5
+ const getAllSchemaKeys = (schema) => {
6
+ return Object.keys(remotion_1.Internals.getFlatSchemaWithAllKeys(schema));
7
+ };
8
+ exports.getAllSchemaKeys = getAllSchemaKeys;
package/dist/index.d.ts CHANGED
@@ -1,10 +1,11 @@
1
1
  export { splitAnsi, stripAnsi } from './ansi';
2
- export { AddRenderRequest, ApiRoutes, ApplyCodemodRequest, ApplyCodemodResponse, ApplyVisualControlRequest, ApplyVisualControlResponse, CanUpdateDefaultPropsResponse, CanUpdateSequencePropsRequest, CancelRenderRequest, SubscribeToSequencePropsRequest, SubscribeToSequencePropsResponse, UnsubscribeFromSequencePropsRequest, CancelRenderResponse, CopyStillToClipboardRequest, DeleteJsxNodeRequest, DeleteJsxNodeResponse, DuplicateJsxNodeRequest, DuplicateJsxNodeResponse, DeleteStaticFileRequest, DeleteStaticFileResponse, InstallPackageRequest, InstallPackageResponse, OpenInFileExplorerRequest, ProjectInfoRequest, ProjectInfoResponse, RedoRequest, RedoResponse, RemoveRenderRequest, RestartStudioRequest, RestartStudioResponse, SaveSequencePropsRequest, SimpleDiff, SubscribeToDefaultPropsRequest, SubscribeToDefaultPropsResponse, SubscribeToFileExistenceRequest, SubscribeToFileExistenceResponse, UndoRequest, UndoResponse, UnsubscribeFromDefaultPropsRequest, UnsubscribeFromFileExistenceRequest, UpdateAvailableRequest, UpdateAvailableResponse, UpdateDefaultPropsRequest, UpdateDefaultPropsResponse, } from './api-requests';
2
+ export { AddRenderRequest, ApiRoutes, ApplyCodemodRequest, ApplyCodemodResponse, ApplyVisualControlRequest, ApplyVisualControlResponse, CanUpdateDefaultPropsResponse, CanUpdateSequencePropsRequest, CancelRenderRequest, SubscribeToSequencePropsRequest, SubscribeToSequencePropsResponse, UnsubscribeFromSequencePropsRequest, CancelRenderResponse, CopyStillToClipboardRequest, DeleteJsxNodeRequest, DeleteJsxNodeResponse, DuplicateJsxNodeRequest, DuplicateJsxNodeResponse, DeleteStaticFileRequest, DeleteStaticFileResponse, InstallPackageRequest, InstallPackageResponse, OpenInFileExplorerRequest, ProjectInfoRequest, ProjectInfoResponse, RedoRequest, RedoResponse, RemoveRenderRequest, RestartStudioRequest, RestartStudioResponse, SaveEffectPropsRequest, SaveEffectPropsResponse, SaveSequencePropsRequest, SaveSequencePropsResponse, SimpleDiff, SubscribeToDefaultPropsRequest, SubscribeToDefaultPropsResponse, SubscribeToFileExistenceRequest, SubscribeToFileExistenceResponse, UndoRequest, UndoResponse, UnsubscribeFromDefaultPropsRequest, UnsubscribeFromFileExistenceRequest, UpdateAvailableRequest, UpdateAvailableResponse, UpdateDefaultPropsRequest, UpdateDefaultPropsResponse, } from './api-requests';
3
3
  export type { ApplyVisualControlCodemod, RecastCodemod } from './codemods';
4
4
  export { DEFAULT_BUFFER_STATE_DELAY_IN_MILLISECONDS } from './default-buffer-state-delay-in-milliseconds';
5
5
  export { EventSourceEvent } from './event-source-event';
6
6
  export { formatBytes } from './format-bytes';
7
7
  export { getDefaultOutLocation } from './get-default-out-name';
8
+ export { getAllSchemaKeys } from './get-all-keys';
8
9
  export { ErrorLocation, getLocationFromBuildError, } from './get-location-from-build-error';
9
10
  export { getProjectName } from './get-project-name';
10
11
  export type { GitSource } from './git-source';
@@ -16,9 +17,12 @@ export { ProjectInfo } from './project-info';
16
17
  export type { RenderDefaults } from './render-defaults';
17
18
  export { AggregateRenderProgress, ArtifactProgress, BrowserDownloadState, BrowserProgressLog, BundlingState, CopyingState, DownloadProgress, JobProgressCallback, RenderJob, RenderJobWithCleanup, RenderingProgressInput, RequiredChromiumOptions, StitchingProgressInput, UiOpenGlOptions, } from './render-job';
18
19
  export type { CompletedClientRender } from './render-job';
19
- export { SCHEMA_FIELD_ROW_HEIGHT, UNSUPPORTED_FIELD_ROW_HEIGHT, getFieldsToShow, } from './schema-field-info';
20
- export type { CodeValues, DragOverrides, SchemaFieldInfo, SequenceControls, } from './schema-field-info';
20
+ export { SCHEMA_FIELD_ROW_HEIGHT, getEffectFieldsToShow, getFieldsToShow, } from './schema-field-info';
21
+ export type { AnySchemaFieldInfo, CodeValues, DragOverrides, EffectSchemaFieldInfo, SchemaFieldInfo, SequenceControls, SequenceSchemaFieldInfo, } from './schema-field-info';
21
22
  export { ScriptLine, SomeStackFrame, StackFrame, SymbolicatedStackFrame, } from './stack-types';
22
23
  export { EnumPath, stringifyDefaultProps } from './stringify-default-props';
23
24
  export type { VisualControlChange } from './codemods';
24
25
  export { optimisticUpdateForCodeValues } from './optimistic-update-for-code-values';
26
+ export { optimisticUpdateForEffectCodeValues } from './optimistic-update-for-effect-code-values';
27
+ export { stringifySequenceSubscriptionKey } from './stringify-sequence-subscription-key';
28
+ export { stringifySequenceExpandedRowKey } from './stringify-sequence-subscription-key';
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.optimisticUpdateForCodeValues = exports.stringifyDefaultProps = exports.getFieldsToShow = exports.UNSUPPORTED_FIELD_ROW_HEIGHT = exports.SCHEMA_FIELD_ROW_HEIGHT = exports.packages = exports.installableMap = exports.extraPackages = exports.descriptions = exports.apiDocs = exports.DEFAULT_TIMELINE_TRACKS = exports.hotMiddlewareOptions = exports.getProjectName = exports.getLocationFromBuildError = exports.getDefaultOutLocation = exports.formatBytes = exports.DEFAULT_BUFFER_STATE_DELAY_IN_MILLISECONDS = exports.stripAnsi = exports.splitAnsi = void 0;
3
+ exports.stringifySequenceExpandedRowKey = exports.stringifySequenceSubscriptionKey = exports.optimisticUpdateForEffectCodeValues = exports.optimisticUpdateForCodeValues = exports.stringifyDefaultProps = exports.getFieldsToShow = exports.getEffectFieldsToShow = exports.SCHEMA_FIELD_ROW_HEIGHT = exports.packages = exports.installableMap = exports.extraPackages = exports.descriptions = exports.apiDocs = exports.DEFAULT_TIMELINE_TRACKS = exports.hotMiddlewareOptions = exports.getProjectName = exports.getLocationFromBuildError = exports.getAllSchemaKeys = exports.getDefaultOutLocation = exports.formatBytes = exports.DEFAULT_BUFFER_STATE_DELAY_IN_MILLISECONDS = exports.stripAnsi = exports.splitAnsi = void 0;
4
4
  const ansi_1 = require("./ansi");
5
5
  Object.defineProperty(exports, "splitAnsi", { enumerable: true, get: function () { return ansi_1.splitAnsi; } });
6
6
  Object.defineProperty(exports, "stripAnsi", { enumerable: true, get: function () { return ansi_1.stripAnsi; } });
@@ -10,6 +10,8 @@ const format_bytes_1 = require("./format-bytes");
10
10
  Object.defineProperty(exports, "formatBytes", { enumerable: true, get: function () { return format_bytes_1.formatBytes; } });
11
11
  const get_default_out_name_1 = require("./get-default-out-name");
12
12
  Object.defineProperty(exports, "getDefaultOutLocation", { enumerable: true, get: function () { return get_default_out_name_1.getDefaultOutLocation; } });
13
+ const get_all_keys_1 = require("./get-all-keys");
14
+ Object.defineProperty(exports, "getAllSchemaKeys", { enumerable: true, get: function () { return get_all_keys_1.getAllSchemaKeys; } });
13
15
  const get_location_from_build_error_1 = require("./get-location-from-build-error");
14
16
  Object.defineProperty(exports, "getLocationFromBuildError", { enumerable: true, get: function () { return get_location_from_build_error_1.getLocationFromBuildError; } });
15
17
  const get_project_name_1 = require("./get-project-name");
@@ -26,9 +28,15 @@ Object.defineProperty(exports, "installableMap", { enumerable: true, get: functi
26
28
  Object.defineProperty(exports, "packages", { enumerable: true, get: function () { return package_info_1.packages; } });
27
29
  const schema_field_info_1 = require("./schema-field-info");
28
30
  Object.defineProperty(exports, "SCHEMA_FIELD_ROW_HEIGHT", { enumerable: true, get: function () { return schema_field_info_1.SCHEMA_FIELD_ROW_HEIGHT; } });
29
- Object.defineProperty(exports, "UNSUPPORTED_FIELD_ROW_HEIGHT", { enumerable: true, get: function () { return schema_field_info_1.UNSUPPORTED_FIELD_ROW_HEIGHT; } });
31
+ Object.defineProperty(exports, "getEffectFieldsToShow", { enumerable: true, get: function () { return schema_field_info_1.getEffectFieldsToShow; } });
30
32
  Object.defineProperty(exports, "getFieldsToShow", { enumerable: true, get: function () { return schema_field_info_1.getFieldsToShow; } });
31
33
  const stringify_default_props_1 = require("./stringify-default-props");
32
34
  Object.defineProperty(exports, "stringifyDefaultProps", { enumerable: true, get: function () { return stringify_default_props_1.stringifyDefaultProps; } });
33
35
  const optimistic_update_for_code_values_1 = require("./optimistic-update-for-code-values");
34
36
  Object.defineProperty(exports, "optimisticUpdateForCodeValues", { enumerable: true, get: function () { return optimistic_update_for_code_values_1.optimisticUpdateForCodeValues; } });
37
+ const optimistic_update_for_effect_code_values_1 = require("./optimistic-update-for-effect-code-values");
38
+ Object.defineProperty(exports, "optimisticUpdateForEffectCodeValues", { enumerable: true, get: function () { return optimistic_update_for_effect_code_values_1.optimisticUpdateForEffectCodeValues; } });
39
+ const stringify_sequence_subscription_key_1 = require("./stringify-sequence-subscription-key");
40
+ Object.defineProperty(exports, "stringifySequenceSubscriptionKey", { enumerable: true, get: function () { return stringify_sequence_subscription_key_1.stringifySequenceSubscriptionKey; } });
41
+ const stringify_sequence_subscription_key_2 = require("./stringify-sequence-subscription-key");
42
+ Object.defineProperty(exports, "stringifySequenceExpandedRowKey", { enumerable: true, get: function () { return stringify_sequence_subscription_key_2.stringifySequenceExpandedRowKey; } });
@@ -24,6 +24,7 @@ const optimisticUpdateForCodeValues = ({ previous, fieldKey, value, schema, }) =
24
24
  return {
25
25
  canUpdate: true,
26
26
  props,
27
+ effects: previous.effects,
27
28
  };
28
29
  };
29
30
  exports.optimisticUpdateForCodeValues = optimisticUpdateForCodeValues;
@@ -0,0 +1,8 @@
1
+ import { type CanUpdateSequencePropsResponse, type SequenceSchema } from 'remotion';
2
+ export declare const optimisticUpdateForEffectCodeValues: ({ previous, effectIndex, fieldKey, value, schema, }: {
3
+ previous: CanUpdateSequencePropsResponse;
4
+ effectIndex: number;
5
+ fieldKey: string;
6
+ value: unknown;
7
+ schema: SequenceSchema;
8
+ }) => CanUpdateSequencePropsResponse;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.optimisticUpdateForEffectCodeValues = void 0;
4
+ const no_react_1 = require("remotion/no-react");
5
+ const optimisticUpdateForEffectCodeValues = ({ previous, effectIndex, fieldKey, value, schema, }) => {
6
+ var _a;
7
+ if (!previous.canUpdate) {
8
+ return previous;
9
+ }
10
+ const targetIndex = previous.effects.findIndex((e) => e.effectIndex === effectIndex);
11
+ if (targetIndex === -1) {
12
+ return previous;
13
+ }
14
+ const target = previous.effects[targetIndex];
15
+ if (!target.canUpdate) {
16
+ return previous;
17
+ }
18
+ const props = {
19
+ ...target.props,
20
+ [fieldKey]: { canUpdate: true, codeValue: value },
21
+ };
22
+ if (((_a = schema[fieldKey]) === null || _a === void 0 ? void 0 : _a.type) === 'enum') {
23
+ const propsToDelete = no_react_1.NoReactInternals.findPropsToDelete({
24
+ schema,
25
+ key: fieldKey,
26
+ value,
27
+ });
28
+ for (const propToDelete of propsToDelete) {
29
+ delete props[propToDelete];
30
+ }
31
+ }
32
+ const updatedEffect = {
33
+ ...target,
34
+ props,
35
+ };
36
+ const effects = [...previous.effects];
37
+ effects[targetIndex] = updatedEffect;
38
+ return {
39
+ ...previous,
40
+ effects,
41
+ };
42
+ };
43
+ exports.optimisticUpdateForEffectCodeValues = optimisticUpdateForEffectCodeValues;
@@ -1,4 +1,4 @@
1
- export declare const packages: readonly ["svg-3d-engine", "animation-utils", "animated-emoji", "astro-example", "babel-loader", "bugs", "brand", "bundler", "cli", "cloudrun", "codex-plugin", "compositor-darwin-arm64", "compositor-darwin-x64", "compositor-linux-arm64-gnu", "compositor-linux-arm64-musl", "compositor-linux-x64-gnu", "compositor-linux-x64-musl", "compositor-win32-x64-msvc", "core", "create-video", "discord-poster", "docusaurus-plugin", "docs", "enable-scss", "eslint-config", "eslint-config-flat", "eslint-config-internal", "eslint-plugin", "example-without-zod", "example", "fonts", "gif", "google-fonts", "install-whisper-cpp", "it-tests", "react18-tests", "lambda-go-example", "lambda-go", "lambda-php", "lambda-ruby", "lambda-python", "lambda", "lambda-client", "layout-utils", "rounded-text-box", "licensing", "lottie", "mcp", "media-utils", "motion-blur", "noise", "paths", "player-a11y", "player-example", "player", "preload", "renderer", "rive", "shapes", "skia", "promo-pages", "streaming", "serverless", "serverless-client", "skills", "studio-server", "studio-shared", "studio", "tailwind", "tailwind-v4", "timeline-utils", "test-utils", "three", "transitions", "media-parser", "zod-types", "zod-types-v3", "webcodecs", "convert", "captions", "openai-whisper", "elevenlabs", "compositor", "example-videos", "whisper-web", "media", "web-renderer", "design", "light-leaks", "starburst", "vercel", "sfx", "effects"];
1
+ export declare const packages: readonly ["svg-3d-engine", "animation-utils", "animated-emoji", "astro-example", "babel-loader", "bugs", "brand", "bundler", "cli", "cloudrun", "codex-plugin", "compositor-darwin-arm64", "compositor-darwin-x64", "compositor-linux-arm64-gnu", "compositor-linux-arm64-musl", "compositor-linux-x64-gnu", "compositor-linux-x64-musl", "compositor-win32-x64-msvc", "core", "create-video", "discord-poster", "docusaurus-plugin", "docs", "enable-scss", "eslint-config", "eslint-config-flat", "eslint-config-internal", "eslint-plugin", "example-without-zod", "example", "fonts", "gif", "google-fonts", "install-whisper-cpp", "it-tests", "react18-tests", "lambda-go-example", "lambda-go", "lambda-php", "lambda-ruby", "lambda-python", "lambda", "lambda-client", "layout-utils", "rounded-text-box", "licensing", "lottie", "mcp", "media-utils", "motion-blur", "noise", "paths", "player-a11y", "player-example", "player", "preload", "renderer", "rive", "shapes", "skia", "promo-pages", "streaming", "serverless", "serverless-client", "skills", "skills-evals", "studio-server", "studio-shared", "studio", "tailwind", "tailwind-v4", "timeline-utils", "test-utils", "three", "transitions", "media-parser", "zod-types", "zod-types-v3", "webcodecs", "convert", "captions", "openai-whisper", "elevenlabs", "compositor", "example-videos", "whisper-web", "media", "web-renderer", "design", "light-leaks", "starburst", "vercel", "sfx", "effects"];
2
2
  export type Pkgs = (typeof packages)[number];
3
3
  export type ExtraPackage = {
4
4
  name: string;
@@ -67,6 +67,7 @@ exports.packages = [
67
67
  'serverless',
68
68
  'serverless-client',
69
69
  'skills',
70
+ 'skills-evals',
70
71
  'studio-server',
71
72
  'studio-shared',
72
73
  'studio',
@@ -99,13 +100,13 @@ exports.packages = [
99
100
  exports.extraPackages = [
100
101
  {
101
102
  name: 'mediabunny',
102
- version: '1.42.0',
103
+ version: '1.45.0',
103
104
  description: 'Multimedia library used by Remotion',
104
105
  docsUrl: 'https://www.remotion.dev/docs/mediabunny/version',
105
106
  },
106
107
  {
107
108
  name: '@mediabunny/ac3',
108
- version: '1.42.0',
109
+ version: '1.45.0',
109
110
  description: 'AC-3 and E-AC-3 audio codec support for Mediabunny',
110
111
  docsUrl: 'https://www.remotion.dev/docs/mediabunny/formats#ac-3-and-e-ac-3',
111
112
  },
@@ -187,6 +188,7 @@ exports.descriptions = {
187
188
  'lambda-ruby': null,
188
189
  'player-example': null,
189
190
  skills: null,
191
+ 'skills-evals': null,
190
192
  'discord-poster': null,
191
193
  'docusaurus-plugin': null,
192
194
  'animated-emoji': 'Google Fonts Animated Emojis as Remotion components',
@@ -275,6 +277,7 @@ exports.installableMap = {
275
277
  shapes: true,
276
278
  skia: true,
277
279
  skills: false,
280
+ 'skills-evals': false,
278
281
  'promo-pages': false,
279
282
  streaming: false,
280
283
  serverless: false,
@@ -378,6 +381,7 @@ exports.apiDocs = {
378
381
  streaming: null,
379
382
  serverless: null,
380
383
  skills: null,
384
+ 'skills-evals': null,
381
385
  studio: 'https://www.remotion.dev/docs/studio/api',
382
386
  'timeline-utils': null,
383
387
  transitions: 'https://www.remotion.dev/transitions',
@@ -1,20 +1,29 @@
1
- import type { CodeValues, DragOverrides, SequenceControls, VisibleFieldSchema, SequenceSchema, GetDragOverrides, GetCodeValues, SequenceNodePath } from 'remotion';
1
+ import type { CodeValues, DragOverrides, SequenceControls, VisibleFieldSchema, SequenceSchema, GetDragOverrides, SequencePropsSubscriptionKey, EffectDefinition } from 'remotion';
2
2
  export type { CodeValues, DragOverrides, SequenceControls };
3
3
  export type SchemaFieldInfo = {
4
4
  key: string;
5
5
  description: string | undefined;
6
- typeName: string;
7
- supported: boolean;
6
+ typeName: SupportedSchemaType;
8
7
  rowHeight: number;
9
- currentRuntimeValue: unknown;
10
8
  fieldSchema: VisibleFieldSchema;
11
9
  };
10
+ export type SequenceSchemaFieldInfo = SchemaFieldInfo & {
11
+ readonly kind: 'sequence-field';
12
+ };
13
+ export type EffectSchemaFieldInfo = SchemaFieldInfo & {
14
+ readonly kind: 'effect-field';
15
+ readonly effectIndex: number;
16
+ readonly effectSchema: SequenceSchema;
17
+ };
18
+ export type AnySchemaFieldInfo = SequenceSchemaFieldInfo | EffectSchemaFieldInfo;
12
19
  export declare const SCHEMA_FIELD_ROW_HEIGHT = 22;
13
- export declare const UNSUPPORTED_FIELD_ROW_HEIGHT = 22;
14
- export declare const getFieldsToShow: ({ getDragOverrides, getCodeValues, nodePath, schema, currentRuntimeValueDotNotation, }: {
20
+ declare const SUPPORTED_SCHEMA_TYPES: readonly ["number", "boolean", "rotation", "translate", "color", "enum", "hidden"];
21
+ type SupportedSchemaType = (typeof SUPPORTED_SCHEMA_TYPES)[number];
22
+ export declare const getFieldsToShow: ({ getDragOverrides, codeValues, nodePath, schema, currentRuntimeValueDotNotation, }: {
15
23
  schema: SequenceSchema;
16
24
  currentRuntimeValueDotNotation: Record<string, unknown>;
17
25
  getDragOverrides: GetDragOverrides;
18
- getCodeValues: GetCodeValues;
19
- nodePath: SequenceNodePath;
20
- }) => SchemaFieldInfo[] | null;
26
+ codeValues: CodeValues;
27
+ nodePath: SequencePropsSubscriptionKey;
28
+ }) => SequenceSchemaFieldInfo[] | null;
29
+ export declare const getEffectFieldsToShow: (effect: EffectDefinition<unknown>, effectIndex: number) => EffectSchemaFieldInfo[];
@@ -1,44 +1,78 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getFieldsToShow = exports.UNSUPPORTED_FIELD_ROW_HEIGHT = exports.SCHEMA_FIELD_ROW_HEIGHT = void 0;
3
+ exports.getEffectFieldsToShow = exports.getFieldsToShow = exports.SCHEMA_FIELD_ROW_HEIGHT = void 0;
4
4
  const remotion_1 = require("remotion");
5
5
  const no_react_1 = require("remotion/no-react");
6
6
  exports.SCHEMA_FIELD_ROW_HEIGHT = 22;
7
- exports.UNSUPPORTED_FIELD_ROW_HEIGHT = 22;
8
- const SUPPORTED_SCHEMA_TYPES = new Set([
7
+ const SUPPORTED_SCHEMA_TYPES = [
9
8
  'number',
10
9
  'boolean',
11
10
  'rotation',
12
11
  'translate',
12
+ 'color',
13
13
  'enum',
14
- ]);
15
- const getFieldsToShow = ({ getDragOverrides, getCodeValues, nodePath, schema, currentRuntimeValueDotNotation, }) => {
14
+ 'hidden',
15
+ ];
16
+ const getFieldsToShow = ({ getDragOverrides, codeValues, nodePath, schema, currentRuntimeValueDotNotation, }) => {
16
17
  const { merged: valuesDotNotation } = remotion_1.Internals.computeEffectiveSchemaValuesDotNotation({
17
18
  schema,
18
19
  currentValue: currentRuntimeValueDotNotation,
19
20
  overrideValues: getDragOverrides(nodePath),
20
- propStatus: getCodeValues(nodePath),
21
+ propStatus: remotion_1.Internals.getCodeValuesCtx(codeValues, nodePath),
21
22
  });
22
23
  const activeSchema = remotion_1.Internals.flattenActiveSchema(schema, (key) => valuesDotNotation[key]);
23
24
  return Object.entries(activeSchema)
24
25
  .map(([key, fieldSchema]) => {
25
26
  const typeName = fieldSchema.type;
26
- const supported = SUPPORTED_SCHEMA_TYPES.has(typeName);
27
+ if (SUPPORTED_SCHEMA_TYPES.indexOf(typeName) === -1) {
28
+ throw new Error(`Unsupported field type: ${typeName}`);
29
+ }
27
30
  if (typeName === 'hidden') {
28
31
  return null;
29
32
  }
33
+ // `hidden` is represented as the eye/speaker icon on the timeline track,
34
+ // so we don't render it as a regular field in the expanded section.
35
+ if (key === 'hidden') {
36
+ return null;
37
+ }
30
38
  return {
39
+ kind: 'sequence-field',
31
40
  key,
32
41
  description: fieldSchema.description,
33
42
  typeName,
34
- supported,
35
- rowHeight: supported
36
- ? exports.SCHEMA_FIELD_ROW_HEIGHT
37
- : exports.UNSUPPORTED_FIELD_ROW_HEIGHT,
38
- currentRuntimeValue: currentRuntimeValueDotNotation[key],
43
+ rowHeight: exports.SCHEMA_FIELD_ROW_HEIGHT,
39
44
  fieldSchema,
40
45
  };
41
46
  })
42
47
  .filter(no_react_1.NoReactInternals.truthy);
43
48
  };
44
49
  exports.getFieldsToShow = getFieldsToShow;
50
+ const getEffectFieldsToShow = (effect, effectIndex) => {
51
+ return Object.entries(effect.schema)
52
+ .map(([key, fieldSchema]) => {
53
+ const typeName = fieldSchema.type;
54
+ if (typeName === 'hidden') {
55
+ return null;
56
+ }
57
+ // `disabled` is represented as the eye icon on the effect timeline row,
58
+ // so we don't render it as a regular field in the expanded section.
59
+ if (key === 'disabled') {
60
+ return null;
61
+ }
62
+ if (SUPPORTED_SCHEMA_TYPES.indexOf(typeName) === -1) {
63
+ throw new Error(`Unsupported field type: ${typeName}`);
64
+ }
65
+ return {
66
+ kind: 'effect-field',
67
+ key,
68
+ description: fieldSchema.description,
69
+ typeName,
70
+ rowHeight: exports.SCHEMA_FIELD_ROW_HEIGHT,
71
+ fieldSchema,
72
+ effectSchema: effect.schema,
73
+ effectIndex,
74
+ };
75
+ })
76
+ .filter(no_react_1.NoReactInternals.truthy);
77
+ };
78
+ exports.getEffectFieldsToShow = getEffectFieldsToShow;
@@ -0,0 +1,3 @@
1
+ import type { SequencePropsSubscriptionKey } from 'remotion';
2
+ export declare const stringifySequenceSubscriptionKey: (key: SequencePropsSubscriptionKey) => string;
3
+ export declare const stringifySequenceExpandedRowKey: (key: SequencePropsSubscriptionKey) => string;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stringifySequenceExpandedRowKey = exports.stringifySequenceSubscriptionKey = void 0;
4
+ const stringifySequenceSubscriptionKey = (key) => {
5
+ return `${key.absolutePath}:${JSON.stringify(key.nodePath)}:${key.sequenceKeys.join('\0')}:${key.effectKeys.map((keys) => keys.join('\0')).join('\0\0')}`;
6
+ };
7
+ exports.stringifySequenceSubscriptionKey = stringifySequenceSubscriptionKey;
8
+ // deliberately not including effect keys, keeping expanded if changing effects
9
+ const stringifySequenceExpandedRowKey = (key) => {
10
+ return `${key.absolutePath}:${JSON.stringify(key.nodePath)}:${key.sequenceKeys.join('\0')}`;
11
+ };
12
+ exports.stringifySequenceExpandedRowKey = stringifySequenceExpandedRowKey;
package/package.json CHANGED
@@ -3,10 +3,9 @@
3
3
  "url": "https://github.com/remotion-dev/remotion/tree/main/packages/studio-shared"
4
4
  },
5
5
  "name": "@remotion/studio-shared",
6
- "version": "4.0.461",
6
+ "version": "4.0.463",
7
7
  "description": "Internal package for shared objects between the Studio backend and frontend",
8
8
  "main": "dist",
9
- "sideEffects": false,
10
9
  "scripts": {
11
10
  "lint": "eslint src",
12
11
  "test": "bun test src",
@@ -21,11 +20,11 @@
21
20
  "url": "https://github.com/remotion-dev/remotion/issues"
22
21
  },
23
22
  "dependencies": {
24
- "remotion": "4.0.461"
23
+ "remotion": "4.0.463"
25
24
  },
26
25
  "devDependencies": {
27
- "@remotion/renderer": "4.0.461",
28
- "@remotion/eslint-config-internal": "4.0.461",
26
+ "@remotion/renderer": "4.0.463",
27
+ "@remotion/eslint-config-internal": "4.0.463",
29
28
  "eslint": "9.19.0",
30
29
  "@typescript/native-preview": "7.0.0-dev.20260217.1"
31
30
  },
@@ -1,3 +0,0 @@
1
- import type { CodeValues } from 'remotion';
2
- export declare const getCodeValues: (codeValues: CodeValues, overrideId: string) => Record<string, import("remotion").CanUpdateSequencePropStatus>;
3
- export type GetCodeValuesType = typeof getCodeValues;
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getCodeValues = void 0;
4
- const getCodeValues = (codeValues, overrideId) => {
5
- var _a;
6
- return (_a = codeValues[overrideId]) !== null && _a !== void 0 ? _a : undefined;
7
- };
8
- exports.getCodeValues = getCodeValues;
@@ -1 +0,0 @@
1
- export declare const SOURCE_MAP_ENDPOINT = "/source-map-helper.wasm";
@@ -1,4 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SOURCE_MAP_ENDPOINT = void 0;
4
- exports.SOURCE_MAP_ENDPOINT = '/source-map-helper.wasm';