@remotion/studio-shared 4.0.490 → 4.0.492

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,6 +1,6 @@
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, CannotUpdateSequenceReason, CanUpdateEffectPropsResponse, CanUpdateSequencePropsResponseFalse, CanUpdateSequencePropsResponseTrue, CanUpdateSequencePropStatus, ExtrapolateType, InteractivitySchema, InterpolateOutputOption, JsxComponentIdentity, SequenceNodePath, SequencePropsSubscriptionKey } from 'remotion';
3
+ import type { _InternalTypes, CannotUpdateSequenceReason, CanUpdateEffectPropsResponse, CanUpdateSequencePropsResponseFalse, CanUpdateSequencePropsResponseTrue, CanUpdateSequencePropStatus, ExtrapolateType, InteractivitySchema, InterpolateOutputOption, JsxComponentIdentity, SequenceNodePath, SequencePropsSubscriptionKey, VideoConfigValues } from 'remotion';
4
4
  import type { RecastCodemod, VisualControlChange } from './codemods';
5
5
  import type { ComponentProp } from './component-drag-data';
6
6
  import type { EffectClipboardParam, EffectClipboardPasteType, EffectClipboardSnapshot } from './effect-clipboard-data';
@@ -204,8 +204,10 @@ export type SubscribeToSequencePropsRequest = {
204
204
  nodePath: SequenceNodePath | null;
205
205
  componentIdentity: JsxComponentIdentity | null;
206
206
  keys: string[];
207
+ assetKeys: string[];
207
208
  effects: string[][];
208
209
  clientId: string;
210
+ videoConfigValues: VideoConfigValues;
209
211
  };
210
212
  export type SubscribeToSequencePropsResponse = {
211
213
  success: true;
@@ -220,6 +222,7 @@ export type UnsubscribeFromSequencePropsRequest = {
220
222
  nodePath: SequencePropsSubscriptionKey;
221
223
  clientId: string;
222
224
  sequenceKeys: string[];
225
+ assetKeys: string[];
223
226
  effectKeys: string[][];
224
227
  };
225
228
  export type GoogleFontSourceEdit = {
@@ -479,6 +482,7 @@ export type PasteEffectsRequest = {
479
482
  type: EffectClipboardPasteType;
480
483
  effects: EffectClipboardSnapshot[];
481
484
  clientId: string;
485
+ insertAtIndices: number[] | null;
482
486
  };
483
487
  export type PasteEffectsResponse = {
484
488
  success: true;
@@ -602,6 +606,7 @@ export type UpdateElementInstallTargetRequest = {
602
606
  canInstall: boolean;
603
607
  lastFocusedAt: number | null;
604
608
  readOnly: boolean;
609
+ studioUrl: string;
605
610
  };
606
611
  export type UpdateElementInstallTargetResponse = {};
607
612
  export type DownloadRemoteAssetRequest = {
@@ -1,15 +1,13 @@
1
- export declare const getDefinePluginDefinitions: ({ maxTimelineTracks, askAIEnabled, interactivityEnabled, keyboardShortcutsEnabled, bufferStateDelayInMilliseconds, experimentalClientSideRenderingEnabled, }: {
1
+ export declare const getDefinePluginDefinitions: ({ maxTimelineTracks, askAIEnabled, interactivityEnabled, keyboardShortcutsEnabled, bufferStateDelayInMilliseconds, }: {
2
2
  maxTimelineTracks: number | null;
3
3
  askAIEnabled: boolean;
4
4
  interactivityEnabled: boolean;
5
5
  keyboardShortcutsEnabled: boolean;
6
6
  bufferStateDelayInMilliseconds: number | null;
7
- experimentalClientSideRenderingEnabled: boolean;
8
7
  }) => {
9
8
  'process.env.MAX_TIMELINE_TRACKS': number | null;
10
9
  'process.env.ASK_AI_ENABLED': boolean;
11
10
  'process.env.INTERACTIVITY_ENABLED': boolean;
12
11
  'process.env.KEYBOARD_SHORTCUTS_ENABLED': boolean;
13
12
  'process.env.BUFFER_STATE_DELAY_IN_MILLISECONDS': number | null;
14
- 'process.env.EXPERIMENTAL_CLIENT_SIDE_RENDERING_ENABLED': boolean;
15
13
  };
@@ -1,12 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getDefinePluginDefinitions = void 0;
4
- const getDefinePluginDefinitions = ({ maxTimelineTracks, askAIEnabled, interactivityEnabled, keyboardShortcutsEnabled, bufferStateDelayInMilliseconds, experimentalClientSideRenderingEnabled, }) => ({
4
+ const getDefinePluginDefinitions = ({ maxTimelineTracks, askAIEnabled, interactivityEnabled, keyboardShortcutsEnabled, bufferStateDelayInMilliseconds, }) => ({
5
5
  'process.env.MAX_TIMELINE_TRACKS': maxTimelineTracks,
6
6
  'process.env.ASK_AI_ENABLED': askAIEnabled,
7
7
  'process.env.INTERACTIVITY_ENABLED': interactivityEnabled,
8
8
  'process.env.KEYBOARD_SHORTCUTS_ENABLED': keyboardShortcutsEnabled,
9
9
  'process.env.BUFFER_STATE_DELAY_IN_MILLISECONDS': bufferStateDelayInMilliseconds,
10
- 'process.env.EXPERIMENTAL_CLIENT_SIDE_RENDERING_ENABLED': experimentalClientSideRenderingEnabled,
11
10
  });
12
11
  exports.getDefinePluginDefinitions = getDefinePluginDefinitions;
@@ -400,6 +400,17 @@ exports.EFFECT_CATALOG = [
400
400
  config: {},
401
401
  },
402
402
  },
403
+ {
404
+ id: 'effects-skew',
405
+ category: 'Distort',
406
+ label: 'skew()',
407
+ description: 'Skew the source on two axes',
408
+ effect: {
409
+ name: 'skew',
410
+ importPath: '@remotion/effects/skew',
411
+ config: {},
412
+ },
413
+ },
403
414
  {
404
415
  id: 'effects-burlap',
405
416
  category: 'Stylize',
@@ -630,6 +641,17 @@ exports.EFFECT_CATALOG = [
630
641
  config: {},
631
642
  },
632
643
  },
644
+ {
645
+ id: 'effects-liquid-contours',
646
+ category: 'Generate',
647
+ label: 'liquidContours()',
648
+ description: 'Two-color liquid contour background',
649
+ effect: {
650
+ name: 'liquidContours',
651
+ importPath: '@remotion/effects/liquid-contours',
652
+ config: {},
653
+ },
654
+ },
633
655
  {
634
656
  id: 'effects-checkerboard',
635
657
  category: 'Generate',
@@ -641,6 +663,17 @@ exports.EFFECT_CATALOG = [
641
663
  config: {},
642
664
  },
643
665
  },
666
+ {
667
+ id: 'effects-flannel',
668
+ category: 'Generate',
669
+ label: 'flannel()',
670
+ description: 'Plaid woven fabric pattern',
671
+ effect: {
672
+ name: 'flannel',
673
+ importPath: '@remotion/effects/flannel',
674
+ config: {},
675
+ },
676
+ },
644
677
  {
645
678
  id: 'effects-halftone-linear-gradient',
646
679
  category: 'Generate',
@@ -1,2 +1,3 @@
1
1
  import type { InteractivitySchema } from 'remotion';
2
2
  export declare const getAllSchemaKeys: (schema: InteractivitySchema) => string[];
3
+ export declare const getAssetSchemaKeys: (schema: InteractivitySchema) => string[];
@@ -1,8 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getAllSchemaKeys = void 0;
3
+ exports.getAssetSchemaKeys = exports.getAllSchemaKeys = void 0;
4
4
  const remotion_1 = require("remotion");
5
5
  const getAllSchemaKeys = (schema) => {
6
6
  return Object.keys(remotion_1.Internals.getFlatSchemaWithAllKeys(schema));
7
7
  };
8
8
  exports.getAllSchemaKeys = getAllSchemaKeys;
9
+ const getAssetSchemaKeys = (schema) => {
10
+ return Object.entries(remotion_1.Internals.getFlatSchemaWithAllKeys(schema))
11
+ .filter(([, field]) => (field === null || field === void 0 ? void 0 : field.type) === 'asset')
12
+ .map(([key]) => key);
13
+ };
14
+ exports.getAssetSchemaKeys = getAssetSchemaKeys;
package/dist/index.d.ts CHANGED
@@ -15,7 +15,7 @@ export { EFFECT_DRAG_MIME_TYPE, parseEffectDragData, type EffectDragData, } from
15
15
  export { ELEMENT_DRAG_MIME_TYPE, getElementComponentNameFromSourceCode, isLowercaseElementFileName, makeElementDragData, makeElementFileNameFromSlug, parseElementDragData, type ElementDragData, } from './element-drag-data';
16
16
  export { EventSourceEvent } from './event-source-event';
17
17
  export { formatBytes } from './format-bytes';
18
- export { getAllSchemaKeys } from './get-all-keys';
18
+ export { getAllSchemaKeys, getAssetSchemaKeys } from './get-all-keys';
19
19
  export { getDefaultOutLocation } from './get-default-out-name';
20
20
  export { ErrorLocation, getLocationFromBuildError, } from './get-location-from-build-error';
21
21
  export { getProjectName } from './get-project-name';
package/dist/index.js CHANGED
@@ -14,8 +14,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.KEYFRAME_EASING_PRESETS = exports.EASE_KEYFRAME_EASING = exports.CUBIC_KEYFRAME_EASING = exports.hotMiddlewareOptions = exports.getProjectName = exports.getLocationFromBuildError = exports.getDefaultOutLocation = exports.getAllSchemaKeys = exports.formatBytes = exports.parseElementDragData = exports.makeElementFileNameFromSlug = exports.makeElementDragData = exports.isLowercaseElementFileName = exports.getElementComponentNameFromSourceCode = exports.ELEMENT_DRAG_MIME_TYPE = exports.parseEffectDragData = exports.EFFECT_DRAG_MIME_TYPE = exports.parseEffectPropClipboardDataResult = exports.parseEffectPropClipboardData = exports.parseEffectClipboardDataResult = exports.parseEffectClipboardData = exports.makeEffectDragDataFromCatalogItem = exports.getEffectPreviewSource = exports.getEffectPreviewAlt = exports.getEffectDocumentationPath = exports.getEffectDocumentationLink = exports.getEffectCatalogCategories = exports.EFFECT_CATALOG = exports.parseEasingClipboardDataResult = exports.parseEasingClipboardData = exports.isRemotionDragMimeType = exports.REMOTION_DRAG_MIME_TYPES = exports.isImageFileType = exports.detectFileType = exports.getDefinePluginDefinitions = exports.DEFAULT_BUFFER_STATE_DELAY_IN_MILLISECONDS = exports.parseCompositionDragData = exports.makeCompositionDragData = exports.COMPOSITION_DRAG_MIME_TYPE = exports.parseComponentDragData = exports.makeComponentDragData = exports.isComponentImportPath = exports.isComponentIdentifier = exports.areComponentProps = exports.COMPONENT_DRAG_MIME_TYPE = exports.parseAssetDragData = exports.makeAssetDragData = exports.ASSET_DRAG_MIME_TYPE = exports.stripAnsi = exports.splitAnsi = void 0;
18
- exports.isUrl = exports.stringifySequenceSubscriptionKey = exports.stringifySequenceExpandedRowKey = exports.optimisticUpdateSequenceKeyframeSettings = exports.optimisticUpdateEffectKeyframeSettings = exports.optimisticUpdateForPropStatuses = exports.optimisticUpdateForEffectPropStatuses = exports.optimisticMoveSequenceKeyframes = exports.optimisticMoveEffectKeyframes = exports.moveKeyframesInPropStatus = exports.canMoveKeyframesWithoutCollisions = exports.optimisticDeleteSequenceKeyframes = exports.optimisticDeleteSequenceKeyframe = exports.optimisticDeleteEffectKeyframes = exports.optimisticDeleteEffectKeyframe = exports.optimisticAddSequenceKeyframe = exports.optimisticAddEffectKeyframe = exports.studioHtml = exports.getStudioEntryPoints = exports.stringifyDefaultProps = exports.parseSfxDragData = exports.SFX_DRAG_MIME_TYPE = exports.getSchemaFieldGroup = exports.getFieldsToShow = exports.getEffectFieldsToShow = exports.SCHEMA_FIELD_ROW_HEIGHT = exports.SCHEMA_FIELD_GROUPS = exports.isValidPackageName = exports.getRequiredPackageForInsertableElement = exports.getRequiredPackageForEffectImportPath = exports.parseSpringEasingConfig = exports.DEFAULT_SPRING_EASING = exports.packages = exports.installableMap = exports.extraPackages = exports.descriptions = exports.apiDocs = exports.DEFAULT_TIMELINE_TRACKS = exports.keyframeInterpolationFunctions = exports.isSchemaFieldKeyframable = exports.isKeyframeInterpolationFunction = exports.isInteractivitySchemaFieldKeyframable = exports.getKeyframeInterpolationFunctionForSchemaField = exports.getKeyframeInterpolationFunction = exports.getPolyKeyframeEasing = exports.getOutKeyframeEasing = exports.getBackKeyframeEasing = exports.QUAD_KEYFRAME_EASING = exports.LINEAR_KEYFRAME_EASING = void 0;
17
+ exports.EASE_KEYFRAME_EASING = exports.CUBIC_KEYFRAME_EASING = exports.hotMiddlewareOptions = exports.getProjectName = exports.getLocationFromBuildError = exports.getDefaultOutLocation = exports.getAssetSchemaKeys = exports.getAllSchemaKeys = exports.formatBytes = exports.parseElementDragData = exports.makeElementFileNameFromSlug = exports.makeElementDragData = exports.isLowercaseElementFileName = exports.getElementComponentNameFromSourceCode = exports.ELEMENT_DRAG_MIME_TYPE = exports.parseEffectDragData = exports.EFFECT_DRAG_MIME_TYPE = exports.parseEffectPropClipboardDataResult = exports.parseEffectPropClipboardData = exports.parseEffectClipboardDataResult = exports.parseEffectClipboardData = exports.makeEffectDragDataFromCatalogItem = exports.getEffectPreviewSource = exports.getEffectPreviewAlt = exports.getEffectDocumentationPath = exports.getEffectDocumentationLink = exports.getEffectCatalogCategories = exports.EFFECT_CATALOG = exports.parseEasingClipboardDataResult = exports.parseEasingClipboardData = exports.isRemotionDragMimeType = exports.REMOTION_DRAG_MIME_TYPES = exports.isImageFileType = exports.detectFileType = exports.getDefinePluginDefinitions = exports.DEFAULT_BUFFER_STATE_DELAY_IN_MILLISECONDS = exports.parseCompositionDragData = exports.makeCompositionDragData = exports.COMPOSITION_DRAG_MIME_TYPE = exports.parseComponentDragData = exports.makeComponentDragData = exports.isComponentImportPath = exports.isComponentIdentifier = exports.areComponentProps = exports.COMPONENT_DRAG_MIME_TYPE = exports.parseAssetDragData = exports.makeAssetDragData = exports.ASSET_DRAG_MIME_TYPE = exports.stripAnsi = exports.splitAnsi = void 0;
18
+ exports.isUrl = exports.stringifySequenceSubscriptionKey = exports.stringifySequenceExpandedRowKey = exports.optimisticUpdateSequenceKeyframeSettings = exports.optimisticUpdateEffectKeyframeSettings = exports.optimisticUpdateForPropStatuses = exports.optimisticUpdateForEffectPropStatuses = exports.optimisticMoveSequenceKeyframes = exports.optimisticMoveEffectKeyframes = exports.moveKeyframesInPropStatus = exports.canMoveKeyframesWithoutCollisions = exports.optimisticDeleteSequenceKeyframes = exports.optimisticDeleteSequenceKeyframe = exports.optimisticDeleteEffectKeyframes = exports.optimisticDeleteEffectKeyframe = exports.optimisticAddSequenceKeyframe = exports.optimisticAddEffectKeyframe = exports.studioHtml = exports.getStudioEntryPoints = exports.stringifyDefaultProps = exports.parseSfxDragData = exports.SFX_DRAG_MIME_TYPE = exports.getSchemaFieldGroup = exports.getFieldsToShow = exports.getEffectFieldsToShow = exports.SCHEMA_FIELD_ROW_HEIGHT = exports.SCHEMA_FIELD_GROUPS = exports.isValidPackageName = exports.getRequiredPackageForInsertableElement = exports.getRequiredPackageForEffectImportPath = exports.parseSpringEasingConfig = exports.DEFAULT_SPRING_EASING = exports.packages = exports.installableMap = exports.extraPackages = exports.descriptions = exports.apiDocs = exports.DEFAULT_TIMELINE_TRACKS = exports.keyframeInterpolationFunctions = exports.isSchemaFieldKeyframable = exports.isKeyframeInterpolationFunction = exports.isInteractivitySchemaFieldKeyframable = exports.getKeyframeInterpolationFunctionForSchemaField = exports.getKeyframeInterpolationFunction = exports.getPolyKeyframeEasing = exports.getOutKeyframeEasing = exports.getBackKeyframeEasing = exports.QUAD_KEYFRAME_EASING = exports.LINEAR_KEYFRAME_EASING = exports.KEYFRAME_EASING_PRESETS = void 0;
19
19
  const ansi_1 = require("./ansi");
20
20
  Object.defineProperty(exports, "splitAnsi", { enumerable: true, get: function () { return ansi_1.splitAnsi; } });
21
21
  Object.defineProperty(exports, "stripAnsi", { enumerable: true, get: function () { return ansi_1.stripAnsi; } });
@@ -75,6 +75,7 @@ const format_bytes_1 = require("./format-bytes");
75
75
  Object.defineProperty(exports, "formatBytes", { enumerable: true, get: function () { return format_bytes_1.formatBytes; } });
76
76
  const get_all_keys_1 = require("./get-all-keys");
77
77
  Object.defineProperty(exports, "getAllSchemaKeys", { enumerable: true, get: function () { return get_all_keys_1.getAllSchemaKeys; } });
78
+ Object.defineProperty(exports, "getAssetSchemaKeys", { enumerable: true, get: function () { return get_all_keys_1.getAssetSchemaKeys; } });
78
79
  const get_default_out_name_1 = require("./get-default-out-name");
79
80
  Object.defineProperty(exports, "getDefaultOutLocation", { enumerable: true, get: function () { return get_default_out_name_1.getDefaultOutLocation; } });
80
81
  const get_location_from_build_error_1 = require("./get-location-from-build-error");
@@ -16,7 +16,8 @@ const isInteractivitySchemaFieldKeyframable = (field) => {
16
16
  if (field.type === 'array' ||
17
17
  field.type === 'boolean' ||
18
18
  field.type === 'enum' ||
19
- field.type === 'font-family') {
19
+ field.type === 'font-family' ||
20
+ field.type === 'asset') {
20
21
  return false;
21
22
  }
22
23
  return field.keyframable !== false;
@@ -1,4 +1,4 @@
1
- export declare const packages: readonly ["svg-3d-engine", "animation-utils", "animated-emoji", "astro-example", "babel-loader", "bugs", "brand", "bundler", "browser-studio", "canvas-capture", "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", "remotion-media", "web-renderer", "design", "light-leaks", "rough-notation", "starburst", "vercel", "sfx", "effects"];
1
+ export declare const packages: readonly ["svg-3d-engine", "animation-utils", "animated-emoji", "astro-example", "babel-loader", "bugs", "brand", "bundler", "browser-studio", "canvas-capture", "claude-code-plugin", "cli", "cloudrun", "codex-plugin", "kimi-code-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", "remotion-media", "web-renderer", "design", "light-leaks", "rough-notation", "starburst", "vercel", "sfx", "effects"];
2
2
  export type Pkgs = (typeof packages)[number];
3
3
  export type ExtraPackage = {
4
4
  name: string;
@@ -12,9 +12,11 @@ exports.packages = [
12
12
  'bundler',
13
13
  'browser-studio',
14
14
  'canvas-capture',
15
+ 'claude-code-plugin',
15
16
  'cli',
16
17
  'cloudrun',
17
18
  'codex-plugin',
19
+ 'kimi-code-plugin',
18
20
  'compositor-darwin-arm64',
19
21
  'compositor-darwin-x64',
20
22
  'compositor-linux-arm64-gnu',
@@ -131,7 +133,9 @@ exports.descriptions = {
131
133
  compositor: 'Rust binary for Remotion',
132
134
  player: 'React component for embedding a Remotion preview into your app',
133
135
  cloudrun: 'Render Remotion videos on Google Cloud Run',
136
+ 'claude-code-plugin': null,
134
137
  'codex-plugin': null,
138
+ 'kimi-code-plugin': null,
135
139
  renderer: 'Render Remotion videos using Node.js or Bun',
136
140
  cli: 'Control Remotion features using the `npx remotion` command',
137
141
  core: 'Make videos programmatically',
@@ -217,7 +221,7 @@ exports.descriptions = {
217
221
  'serverless-client': null,
218
222
  media: 'Experimental WebCodecs-based media tags',
219
223
  'remotion-media': null,
220
- 'web-renderer': 'Render videos in the browser (not yet released)',
224
+ 'web-renderer': 'Render videos in the browser',
221
225
  design: 'Design system',
222
226
  'light-leaks': 'Light leak effects for Remotion',
223
227
  'rough-notation': 'Rough annotation primitives for Remotion',
@@ -240,7 +244,9 @@ exports.installableMap = {
240
244
  'canvas-capture': false,
241
245
  cli: false,
242
246
  cloudrun: true,
247
+ 'claude-code-plugin': false,
243
248
  'codex-plugin': false,
249
+ 'kimi-code-plugin': false,
244
250
  'lambda-client': false,
245
251
  'serverless-client': false,
246
252
  'compositor-darwin-arm64': false,
@@ -330,7 +336,9 @@ exports.installableMap = {
330
336
  exports.apiDocs = {
331
337
  player: 'https://www.remotion.dev/docs/player',
332
338
  cloudrun: 'https://www.remotion.dev/docs/cloudrun',
339
+ 'claude-code-plugin': null,
333
340
  'codex-plugin': null,
341
+ 'kimi-code-plugin': null,
334
342
  renderer: 'https://www.remotion.dev/docs/renderer',
335
343
  cli: 'https://www.remotion.dev/docs/cli',
336
344
  core: 'https://www.remotion.dev/docs/remotion',
@@ -47,7 +47,6 @@ export type RenderDefaults = {
47
47
  chromeMode: ChromeMode;
48
48
  publicLicenseKey: string | null;
49
49
  outputLocation: string | null;
50
- allowHtmlInCanvas: boolean;
51
50
  sampleRate: number;
52
51
  };
53
52
  declare global {
@@ -18,12 +18,15 @@ export type EffectSchemaFieldInfo = SchemaFieldInfo & {
18
18
  };
19
19
  export type AnySchemaFieldInfo = InteractivitySchemaFieldInfo | EffectSchemaFieldInfo;
20
20
  export declare const SCHEMA_FIELD_ROW_HEIGHT = 22;
21
- export type SchemaFieldGroup = 'controls' | 'transforms' | 'text';
21
+ export type SchemaFieldGroup = 'source' | 'controls' | 'transforms' | 'text';
22
22
  export type SchemaFieldGroupInfo = {
23
23
  readonly id: SchemaFieldGroup;
24
24
  readonly label: string;
25
25
  };
26
26
  export declare const SCHEMA_FIELD_GROUPS: readonly [{
27
+ readonly id: "source";
28
+ readonly label: "Source";
29
+ }, {
27
30
  readonly id: "controls";
28
31
  readonly label: "Controls";
29
32
  }, {
@@ -34,7 +37,7 @@ export declare const SCHEMA_FIELD_GROUPS: readonly [{
34
37
  readonly label: "Text";
35
38
  }];
36
39
  export declare const getSchemaFieldGroup: (key: string) => SchemaFieldGroup;
37
- declare const SUPPORTED_SCHEMA_TYPES: readonly ["number", "boolean", "rotation-css", "rotation-degrees", "translate", "transform-origin", "scale", "uv-coordinate", "color", "text-content", "font-family", "array", "enum", "hidden"];
40
+ declare const SUPPORTED_SCHEMA_TYPES: readonly ["number", "boolean", "rotation-css", "rotation-degrees", "translate", "transform-origin", "scale", "uv-coordinate", "color", "text-content", "font-family", "asset", "array", "enum", "hidden"];
38
41
  type SupportedSchemaType = (typeof SUPPORTED_SCHEMA_TYPES)[number];
39
42
  export declare const getFieldsToShow: ({ getDragOverrides, propStatuses, nodePath, schema, currentRuntimeValueDotNotation, includeTextContent, }: {
40
43
  schema: InteractivitySchema;
@@ -5,6 +5,7 @@ const remotion_1 = require("remotion");
5
5
  const no_react_1 = require("remotion/no-react");
6
6
  exports.SCHEMA_FIELD_ROW_HEIGHT = 22;
7
7
  exports.SCHEMA_FIELD_GROUPS = [
8
+ { id: 'source', label: 'Source' },
8
9
  { id: 'controls', label: 'Controls' },
9
10
  { id: 'transforms', label: 'Transform' },
10
11
  { id: 'text', label: 'Text' },
@@ -32,6 +33,9 @@ const TEXT_FIELD_KEYS = new Set([
32
33
  'style.textAlign',
33
34
  ]);
34
35
  const getSchemaFieldGroup = (key) => {
36
+ if (key === 'src') {
37
+ return 'source';
38
+ }
35
39
  if (TRANSFORM_FIELD_KEYS.has(key)) {
36
40
  return 'transforms';
37
41
  }
@@ -63,6 +67,7 @@ const SUPPORTED_SCHEMA_TYPES = [
63
67
  'color',
64
68
  'text-content',
65
69
  'font-family',
70
+ 'asset',
66
71
  'array',
67
72
  'enum',
68
73
  'hidden',
@@ -84,9 +89,6 @@ const getSchemaFieldRowHeight = ({ fieldSchema, value, }) => {
84
89
  value,
85
90
  }) * exports.SCHEMA_FIELD_ROW_HEIGHT);
86
91
  }
87
- if (fieldSchema.type === 'text-content') {
88
- return exports.SCHEMA_FIELD_ROW_HEIGHT * 2;
89
- }
90
92
  return exports.SCHEMA_FIELD_ROW_HEIGHT;
91
93
  };
92
94
  const getEffectFieldValue = ({ key, dragOverrides, effectStatus, }) => {
@@ -0,0 +1,22 @@
1
+ export declare const SHAPE_DRAG_MIME_TYPE = "application/vnd.remotion.shape+json";
2
+ export declare const shapeNames: readonly ["Arrow", "Circle", "Ellipse", "Heart", "Pie", "Polygon", "Rect", "Star", "Triangle"];
3
+ export type ShapeName = (typeof shapeNames)[number];
4
+ export type ShapeAttribute = {
5
+ name: string;
6
+ value: string | number | boolean;
7
+ };
8
+ export type ShapeDragData = {
9
+ type: 'remotion-shape';
10
+ version: 1;
11
+ shape: ShapeName;
12
+ attributes: ShapeAttribute[];
13
+ };
14
+ export declare const isShapeName: (value: unknown) => value is "Arrow" | "Circle" | "Ellipse" | "Heart" | "Pie" | "Polygon" | "Rect" | "Star" | "Triangle";
15
+ export declare const isShapeAttributeName: (value: unknown) => value is string;
16
+ export declare const isShapeAttribute: (value: unknown) => value is ShapeAttribute;
17
+ export declare const areShapeAttributes: (value: unknown) => value is ShapeAttribute[];
18
+ export declare const makeShapeDragData: ({ attributes, shape, }: {
19
+ attributes: ShapeAttribute[];
20
+ shape: "Arrow" | "Circle" | "Ellipse" | "Heart" | "Pie" | "Polygon" | "Rect" | "Star" | "Triangle";
21
+ }) => ShapeDragData;
22
+ export declare const parseShapeDragData: (value: string) => ShapeDragData | null;
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseShapeDragData = exports.makeShapeDragData = exports.areShapeAttributes = exports.isShapeAttribute = exports.isShapeAttributeName = exports.isShapeName = exports.shapeNames = exports.SHAPE_DRAG_MIME_TYPE = void 0;
4
+ exports.SHAPE_DRAG_MIME_TYPE = 'application/vnd.remotion.shape+json';
5
+ exports.shapeNames = [
6
+ 'Arrow',
7
+ 'Circle',
8
+ 'Ellipse',
9
+ 'Heart',
10
+ 'Pie',
11
+ 'Polygon',
12
+ 'Rect',
13
+ 'Star',
14
+ 'Triangle',
15
+ ];
16
+ const isRecord = (value) => {
17
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
18
+ };
19
+ const isShapeName = (value) => {
20
+ return typeof value === 'string' && exports.shapeNames.includes(value);
21
+ };
22
+ exports.isShapeName = isShapeName;
23
+ const isShapeAttributeName = (value) => {
24
+ return (typeof value === 'string' &&
25
+ value !== 'style' &&
26
+ /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(value));
27
+ };
28
+ exports.isShapeAttributeName = isShapeAttributeName;
29
+ const isShapeAttribute = (value) => {
30
+ if (!isRecord(value)) {
31
+ return false;
32
+ }
33
+ if (!(0, exports.isShapeAttributeName)(value.name)) {
34
+ return false;
35
+ }
36
+ return (typeof value.value === 'string' ||
37
+ typeof value.value === 'boolean' ||
38
+ (typeof value.value === 'number' && Number.isFinite(value.value)));
39
+ };
40
+ exports.isShapeAttribute = isShapeAttribute;
41
+ const areShapeAttributes = (value) => {
42
+ if (!Array.isArray(value)) {
43
+ return false;
44
+ }
45
+ const seen = new Set();
46
+ for (const attribute of value) {
47
+ if (!(0, exports.isShapeAttribute)(attribute) || seen.has(attribute.name)) {
48
+ return false;
49
+ }
50
+ seen.add(attribute.name);
51
+ }
52
+ return true;
53
+ };
54
+ exports.areShapeAttributes = areShapeAttributes;
55
+ const makeShapeDragData = ({ attributes, shape, }) => {
56
+ return {
57
+ type: 'remotion-shape',
58
+ version: 1,
59
+ shape,
60
+ attributes,
61
+ };
62
+ };
63
+ exports.makeShapeDragData = makeShapeDragData;
64
+ const parseShapeDragData = (value) => {
65
+ try {
66
+ const parsed = JSON.parse(value);
67
+ if (!isRecord(parsed)) {
68
+ return null;
69
+ }
70
+ if (parsed.type !== 'remotion-shape' || parsed.version !== 1) {
71
+ return null;
72
+ }
73
+ if (!(0, exports.isShapeName)(parsed.shape)) {
74
+ return null;
75
+ }
76
+ if (!(0, exports.areShapeAttributes)(parsed.attributes)) {
77
+ return null;
78
+ }
79
+ return {
80
+ type: 'remotion-shape',
81
+ version: 1,
82
+ shape: parsed.shape,
83
+ attributes: parsed.attributes,
84
+ };
85
+ }
86
+ catch (_a) {
87
+ return null;
88
+ }
89
+ };
90
+ exports.parseShapeDragData = parseShapeDragData;
@@ -18,6 +18,7 @@ export type StudioHtmlOptions = {
18
18
  sampleRate: number | null;
19
19
  publicFiles: StaticFile[];
20
20
  publicFolderExists: string | null;
21
+ fileSystemPlatform: string | null;
21
22
  includeFavicon: boolean;
22
23
  title: string;
23
24
  renderDefaults: RenderDefaults | undefined;
@@ -31,4 +32,4 @@ export type StudioHtmlOptions = {
31
32
  readOnlyStudio?: boolean;
32
33
  studioRuntimeConfig?: StudioRuntimeConfig;
33
34
  };
34
- export declare const studioHtml: ({ publicPath, editorName, inputProps, envVariables, staticHash, remotionRoot, studioServerCommand, renderQueue, completedClientRenders, numberOfAudioTags, publicFiles, includeFavicon, title, renderDefaults, publicFolderExists, gitSource, projectName, installedDependencies, packageManager, audioLatencyHint, sampleRate, logLevel, mode, bundleScriptUrl, readOnlyStudio, studioRuntimeConfig, }: StudioHtmlOptions) => string;
35
+ export declare const studioHtml: ({ publicPath, editorName, inputProps, envVariables, staticHash, remotionRoot, studioServerCommand, renderQueue, completedClientRenders, numberOfAudioTags, publicFiles, includeFavicon, title, renderDefaults, publicFolderExists, fileSystemPlatform, gitSource, projectName, installedDependencies, packageManager, audioLatencyHint, sampleRate, logLevel, mode, bundleScriptUrl, readOnlyStudio, studioRuntimeConfig, }: StudioHtmlOptions) => string;
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.studioHtml = void 0;
4
4
  const remotion_1 = require("remotion");
5
- const studioHtml = ({ publicPath, editorName, inputProps, envVariables, staticHash, remotionRoot, studioServerCommand, renderQueue, completedClientRenders, numberOfAudioTags, publicFiles, includeFavicon, title, renderDefaults, publicFolderExists, gitSource, projectName, installedDependencies, packageManager, audioLatencyHint, sampleRate, logLevel, mode, bundleScriptUrl, readOnlyStudio, studioRuntimeConfig, }) => {
5
+ const studioHtml = ({ publicPath, editorName, inputProps, envVariables, staticHash, remotionRoot, studioServerCommand, renderQueue, completedClientRenders, numberOfAudioTags, publicFiles, includeFavicon, title, renderDefaults, publicFolderExists, fileSystemPlatform, gitSource, projectName, installedDependencies, packageManager, audioLatencyHint, sampleRate, logLevel, mode, bundleScriptUrl, readOnlyStudio, studioRuntimeConfig, }) => {
6
6
  const scriptUrl = bundleScriptUrl !== null && bundleScriptUrl !== void 0 ? bundleScriptUrl : `${publicPath}bundle.js`;
7
7
  return `
8
8
  <!DOCTYPE html>
@@ -32,6 +32,7 @@ const studioHtml = ({ publicPath, editorName, inputProps, envVariables, staticHa
32
32
  <script>window.remotion_studioConfig = ${JSON.stringify(studioRuntimeConfig !== null && studioRuntimeConfig !== void 0 ? studioRuntimeConfig : null)};</script>
33
33
  <script>window.remotion_renderDefaults = ${JSON.stringify(renderDefaults)};</script>
34
34
  <script>window.remotion_cwd = ${JSON.stringify(remotionRoot)};</script>
35
+ <script>window.remotion_fileSystemPlatform = ${JSON.stringify(fileSystemPlatform)};</script>
35
36
  <script>window.remotion_studioServerCommand = ${studioServerCommand ? JSON.stringify(studioServerCommand) : 'null'};</script>
36
37
  ${inputProps
37
38
  ? `<script>window.remotion_inputProps = ${JSON.stringify(JSON.stringify(inputProps))};</script>`
@@ -4,5 +4,4 @@ export type StudioRuntimeConfig = {
4
4
  readonly interactivityEnabled: boolean;
5
5
  readonly keyboardShortcutsEnabled: boolean;
6
6
  readonly bufferStateDelayInMilliseconds: number | null;
7
- readonly experimentalClientSideRenderingEnabled: boolean;
8
7
  };
package/package.json CHANGED
@@ -3,7 +3,7 @@
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.490",
6
+ "version": "4.0.492",
7
7
  "description": "Internal package for shared objects between the Studio backend and frontend",
8
8
  "main": "dist",
9
9
  "scripts": {
@@ -20,11 +20,11 @@
20
20
  "url": "https://github.com/remotion-dev/remotion/issues"
21
21
  },
22
22
  "dependencies": {
23
- "remotion": "4.0.490"
23
+ "remotion": "4.0.492"
24
24
  },
25
25
  "devDependencies": {
26
- "@remotion/renderer": "4.0.490",
27
- "@remotion/eslint-config-internal": "4.0.490",
26
+ "@remotion/renderer": "4.0.492",
27
+ "@remotion/eslint-config-internal": "4.0.492",
28
28
  "eslint": "9.19.0",
29
29
  "@typescript/native-preview": "7.0.0-dev.20260217.1"
30
30
  },