@remotion/studio-shared 4.0.513 → 4.0.515

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.
@@ -637,6 +637,18 @@ export type SplitJsxSequenceResponse = {
637
637
  reason: string;
638
638
  stack: string;
639
639
  };
640
+ export type SplitVideoFromAudioRequest = {
641
+ fileName: string;
642
+ nodePath: SequenceNodePath;
643
+ };
644
+ export type SplitVideoFromAudioResponse = {
645
+ success: true;
646
+ nodePathMutation: SequenceNodePathMutation;
647
+ } | {
648
+ success: false;
649
+ reason: string;
650
+ stack: string;
651
+ };
640
652
  export type InsertableCompositionElement = {
641
653
  type: 'solid';
642
654
  width: number;
@@ -755,6 +767,9 @@ export type InsertElementResponse = {
755
767
  export type ElementInstallSource = {
756
768
  type: 'studio-protocol';
757
769
  origin: string;
770
+ } | {
771
+ type: 'browser-studio-link';
772
+ origin: string | null;
758
773
  } | {
759
774
  type: 'drag-and-drop';
760
775
  };
@@ -795,10 +810,14 @@ export type UpdateAvailableResponse = {
795
810
  latestVersion: string;
796
811
  updateAvailable: boolean;
797
812
  skillsUpdateAvailable: boolean;
798
- remotionUpgradeSkillAvailable: boolean;
799
813
  timedOut: boolean;
800
814
  packageManager: PackageManager | 'unknown';
801
815
  };
816
+ export type GetRemotionSkillsInfoRequest = {};
817
+ export type GetRemotionSkillsInfoResponse = {
818
+ remotionUpgradeSkillAvailable: boolean;
819
+ remotionInteractivitySkillAvailable: boolean;
820
+ };
802
821
  export type ProjectInfoRequest = {};
803
822
  export type ProjectInfoResponse = {
804
823
  projectInfo: ProjectInfo;
@@ -928,6 +947,7 @@ export type ApiRoutes = {
928
947
  '/api/delete-jsx-node': ReqAndRes<DeleteJsxNodeRequest, DeleteJsxNodeResponse>;
929
948
  '/api/duplicate-jsx-node': ReqAndRes<DuplicateJsxNodeRequest, DuplicateJsxNodeResponse>;
930
949
  '/api/split-jsx-sequence': ReqAndRes<SplitJsxSequenceRequest, SplitJsxSequenceResponse>;
950
+ '/api/split-video-from-audio': ReqAndRes<SplitVideoFromAudioRequest, SplitVideoFromAudioResponse>;
931
951
  '/api/insert-jsx-element': ReqAndRes<InsertJsxElementRequest, InsertJsxElementResponse>;
932
952
  '/api/convert-figma-clipboard-to-svg': ReqAndRes<ConvertFigmaClipboardToSvgRequest, ConvertFigmaClipboardToSvgResponse>;
933
953
  '/api/insert-element': ReqAndRes<InsertElementRequest, InsertElementResponse>;
@@ -935,6 +955,7 @@ export type ApiRoutes = {
935
955
  '/api/update-element-install-target': ReqAndRes<UpdateElementInstallTargetRequest, UpdateElementInstallTargetResponse>;
936
956
  '/api/download-remote-asset': ReqAndRes<DownloadRemoteAssetRequest, DownloadRemoteAssetResponse>;
937
957
  '/api/update-available': ReqAndRes<UpdateAvailableRequest, UpdateAvailableResponse>;
958
+ '/api/remotion-skills-info': ReqAndRes<GetRemotionSkillsInfoRequest, GetRemotionSkillsInfoResponse>;
938
959
  '/api/apply-codemod': ReqAndRes<ApplyCodemodRequest, ApplyCodemodResponse>;
939
960
  '/api/project-info': ReqAndRes<ProjectInfoRequest, ProjectInfoResponse>;
940
961
  '/api/delete-static-file': ReqAndRes<DeleteStaticFileRequest, DeleteStaticFileResponse>;
@@ -1,29 +1,91 @@
1
- import type { CompositionComponentInfoRequest, CompositionComponentInfoResponse, DeleteStaticFileRequest, DeleteStaticFileResponse, FindInFileRequest, FindInFileResponse, InsertJsxElementRequest, InsertJsxElementResponse, RedoResponse, RenameStaticFileRequest, RenameStaticFileResponse, SaveSequencePropsRequest, SaveSequencePropsResponse, SubscribeToDefaultPropsRequest, SubscribeToDefaultPropsResponse, SubscribeToSequencePropsRequest, SubscribeToSequencePropsResponse, UndoResponse, UnsubscribeFromDefaultPropsRequest, UnsubscribeFromSequencePropsRequest } from './api-requests';
1
+ import type { ElementDragData } from '@remotion/studio-protocol';
2
+ import type { AddEffectKeyframeRequest, AddEffectKeyframeResponse, AddEffectRequest, AddEffectResponse, AddKeyframesRequest, AddKeyframesResponse, AddSequenceKeyframeRequest, AddSequenceKeyframeResponse, ApplyCodemodRequest, ApplyCodemodResponse, BatchUpdateKeyframeSettingsRequest, BatchUpdateKeyframeSettingsResponse, CompositionComponentInfoRequest, CompositionComponentInfoResponse, DeleteJsxNodeRequest, DeleteJsxNodeResponse, DeleteKeyframesRequest, DeleteKeyframesResponse, DeleteEffectRequest, DeleteEffectResponse, DeleteStaticFileRequest, DeleteStaticFileResponse, FindInFileRequest, FindInFileResponse, DuplicateEffectRequest, DuplicateEffectResponse, InsertJsxElementRequest, InsertJsxElementResponse, InsertElementRequest, InsertElementResponse, InstallPackageRequest, MoveKeyframesRequest, MoveKeyframesResponse, PasteEffectsRequest, PasteEffectsResponse, PrepareElementInstallRequest, PrepareElementInstallResponse, RedoResponse, RenameStaticFileRequest, RenameStaticFileResponse, ReorderEffectRequest, ReorderEffectResponse, ReorderSequenceRequest, ReorderSequenceResponse, SaveSequencePropsRequest, SaveSequencePropsResponse, SaveEffectPropsRequest, SaveEffectPropsResponse, SaveMultipleEffectPropsRequest, SaveMultipleEffectPropsResponse, SimpleDiff, SplitJsxSequenceRequest, SplitJsxSequenceResponse, SplitVideoFromAudioRequest, SplitVideoFromAudioResponse, SubscribeToDefaultPropsRequest, SubscribeToDefaultPropsResponse, SubscribeToSequencePropsRequest, SubscribeToSequencePropsResponse, UndoResponse, UnsubscribeFromDefaultPropsRequest, UnsubscribeFromSequencePropsRequest, UpdateDefaultPropsRequest, UpdateDefaultPropsResponse, UpdateEffectKeyframeSettingsRequest, UpdateEffectKeyframeSettingsResponse, UpdateSequenceKeyframeSettingsRequest, UpdateSequenceKeyframeSettingsResponse } from './api-requests';
3
+ import type { RecastCodemod } from './codemods';
2
4
  import type { EventSourceEvent } from './event-source-event';
3
5
  export type WriteStaticFileRequest = {
4
6
  contents: string | ArrayBuffer;
5
7
  filePath: string;
6
8
  };
9
+ export type DuplicateCompositionRequest = {
10
+ codemod: Extract<RecastCodemod, {
11
+ type: 'duplicate-composition';
12
+ }>;
13
+ dryRun: boolean;
14
+ };
15
+ export type DuplicateCompositionResponse = {
16
+ success: true;
17
+ diff: SimpleDiff;
18
+ } | {
19
+ success: false;
20
+ reason: string;
21
+ stack: string;
22
+ };
23
+ export type BrowserStudioKeyframeOperations = {
24
+ addEffectKeyframe: (request: AddEffectKeyframeRequest) => Promise<AddEffectKeyframeResponse>;
25
+ addKeyframes: (request: AddKeyframesRequest) => Promise<AddKeyframesResponse>;
26
+ addSequenceKeyframe: (request: AddSequenceKeyframeRequest) => Promise<AddSequenceKeyframeResponse>;
27
+ batchUpdateKeyframeSettings: (request: BatchUpdateKeyframeSettingsRequest) => Promise<BatchUpdateKeyframeSettingsResponse>;
28
+ deleteKeyframes: (request: DeleteKeyframesRequest) => Promise<DeleteKeyframesResponse>;
29
+ moveKeyframes: (request: MoveKeyframesRequest) => Promise<MoveKeyframesResponse>;
30
+ updateEffectKeyframeSettings: (request: UpdateEffectKeyframeSettingsRequest) => Promise<UpdateEffectKeyframeSettingsResponse>;
31
+ updateSequenceKeyframeSettings: (request: UpdateSequenceKeyframeSettingsRequest) => Promise<UpdateSequenceKeyframeSettingsResponse>;
32
+ };
33
+ export type BrowserStudioEffectOperations = {
34
+ addEffect: (request: AddEffectRequest) => Promise<AddEffectResponse>;
35
+ deleteEffects: (request: DeleteEffectRequest) => Promise<DeleteEffectResponse>;
36
+ duplicateEffects: (request: DuplicateEffectRequest) => Promise<DuplicateEffectResponse>;
37
+ pasteEffects: (request: PasteEffectsRequest) => Promise<PasteEffectsResponse>;
38
+ reorderEffect: (request: ReorderEffectRequest) => Promise<ReorderEffectResponse>;
39
+ saveEffectProps: (request: SaveEffectPropsRequest) => Promise<SaveEffectPropsResponse>;
40
+ saveMultipleEffectProps: (request: SaveMultipleEffectPropsRequest) => Promise<SaveMultipleEffectPropsResponse>;
41
+ };
42
+ export type BrowserStudioInstallPackagesResponse = {
43
+ success: true;
44
+ } | {
45
+ success: false;
46
+ reason: string;
47
+ stack: string;
48
+ };
49
+ export type BrowserStudioPackageInstallationOperations = {
50
+ installPackages: (request: InstallPackageRequest) => Promise<BrowserStudioInstallPackagesResponse>;
51
+ };
7
52
  export type BrowserStudioOperations = {
53
+ consumeInitialElement: () => {
54
+ element: ElementDragData['element'];
55
+ sourceOrigin: string | null;
56
+ } | null;
57
+ applyCodemod: (request: ApplyCodemodRequest) => Promise<ApplyCodemodResponse>;
58
+ deleteJsxNode: (request: DeleteJsxNodeRequest) => Promise<DeleteJsxNodeResponse>;
8
59
  deleteStaticFile: (request: DeleteStaticFileRequest) => Promise<DeleteStaticFileResponse>;
9
60
  downloadProject: () => Promise<{
10
61
  data: Uint8Array;
11
62
  fileName: string;
12
63
  }>;
64
+ duplicateComposition: (request: DuplicateCompositionRequest) => Promise<DuplicateCompositionResponse>;
65
+ effects: BrowserStudioEffectOperations;
13
66
  findInFile: (request: FindInFileRequest) => Promise<FindInFileResponse>;
14
67
  getFileSource: (fileName: string) => Promise<string | null>;
15
68
  getCompositionFile: (compositionId: string) => string | null;
16
69
  getCompositionComponentInfo: (request: CompositionComponentInfoRequest) => Promise<CompositionComponentInfoResponse>;
17
70
  insertSolid: (request: InsertJsxElementRequest) => Promise<InsertJsxElementResponse>;
71
+ insertElement: (request: InsertElementRequest) => Promise<InsertElementResponse>;
72
+ insertJsxElement: (request: InsertJsxElementRequest) => Promise<InsertJsxElementResponse>;
73
+ keyframes: BrowserStudioKeyframeOperations;
74
+ packageInstallation: BrowserStudioPackageInstallationOperations;
75
+ prepareElementInstall: (request: PrepareElementInstallRequest) => Promise<PrepareElementInstallResponse>;
18
76
  redo: () => Promise<RedoResponse>;
19
77
  renameStaticFile: (request: RenameStaticFileRequest) => Promise<RenameStaticFileResponse>;
78
+ reorderSequence: (request: ReorderSequenceRequest) => Promise<ReorderSequenceResponse>;
20
79
  saveSequenceProps: (request: SaveSequencePropsRequest) => Promise<SaveSequencePropsResponse>;
80
+ splitJsxSequence: (request: SplitJsxSequenceRequest) => Promise<SplitJsxSequenceResponse>;
81
+ splitVideoFromAudio: (request: SplitVideoFromAudioRequest) => Promise<SplitVideoFromAudioResponse>;
21
82
  subscribeToDefaultProps: (request: SubscribeToDefaultPropsRequest) => Promise<SubscribeToDefaultPropsResponse>;
22
83
  subscribeToSequenceProps: (request: SubscribeToSequencePropsRequest) => Promise<SubscribeToSequencePropsResponse>;
23
84
  subscribeToEvent: (listener: (event: EventSourceEvent) => void) => () => void;
24
85
  undo: () => Promise<UndoResponse>;
25
86
  unsubscribeFromDefaultProps: (request: UnsubscribeFromDefaultPropsRequest) => Promise<undefined>;
26
87
  unsubscribeFromSequenceProps: (request: UnsubscribeFromSequencePropsRequest) => Promise<undefined>;
88
+ updateDefaultProps: (request: UpdateDefaultPropsRequest) => Promise<UpdateDefaultPropsResponse>;
27
89
  writeStaticFile: (request: WriteStaticFileRequest) => Promise<void>;
28
90
  };
29
91
  declare global {
@@ -38,6 +38,7 @@ export declare const configMethodLifecycles: {
38
38
  readonly setDeleteAfter: "runtime";
39
39
  readonly setDisallowParallelEncoding: "runtime";
40
40
  readonly setDotEnvLocation: "restart";
41
+ readonly setEnableCancellation: "runtime";
41
42
  readonly setEnableCrossSiteIsolation: "restart";
42
43
  readonly setEnableFolderExpiry: "runtime";
43
44
  readonly setEncodingBufferSize: "runtime";
@@ -41,6 +41,7 @@ exports.configMethodLifecycles = {
41
41
  setDeleteAfter: 'runtime',
42
42
  setDisallowParallelEncoding: 'runtime',
43
43
  setDotEnvLocation: 'restart',
44
+ setEnableCancellation: 'runtime',
44
45
  setEnableCrossSiteIsolation: 'restart',
45
46
  setEnableFolderExpiry: 'runtime',
46
47
  setEncodingBufferSize: 'runtime',
@@ -1,13 +1,15 @@
1
- export declare const getDefinePluginDefinitions: ({ maxTimelineTracks, askAIEnabled, interactivityEnabled, keyboardShortcutsEnabled, bufferStateDelayInMilliseconds, }: {
1
+ export declare const getDefinePluginDefinitions: ({ maxTimelineTracks, askAIEnabled, interactivityEnabled, keyboardShortcutsEnabled, bufferStateDelayInMilliseconds, experimentalClientSideRenderingEnabled, }: {
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;
7
8
  }) => {
8
9
  'process.env.MAX_TIMELINE_TRACKS': number | null;
9
10
  'process.env.ASK_AI_ENABLED': boolean;
10
11
  'process.env.INTERACTIVITY_ENABLED': boolean;
11
12
  'process.env.KEYBOARD_SHORTCUTS_ENABLED': boolean;
12
13
  'process.env.BUFFER_STATE_DELAY_IN_MILLISECONDS': number | null;
14
+ 'process.env.EXPERIMENTAL_CLIENT_SIDE_RENDERING_ENABLED': boolean;
13
15
  };
@@ -1,11 +1,12 @@
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, }) => ({
4
+ const getDefinePluginDefinitions = ({ maxTimelineTracks, askAIEnabled, interactivityEnabled, keyboardShortcutsEnabled, bufferStateDelayInMilliseconds, experimentalClientSideRenderingEnabled, }) => ({
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,
10
11
  });
11
12
  exports.getDefinePluginDefinitions = getDefinePluginDefinitions;
@@ -327,6 +327,20 @@ exports.EFFECT_CATALOG = [
327
327
  config: {},
328
328
  },
329
329
  },
330
+ {
331
+ id: 'effects-outline',
332
+ category: 'Blur & Shadow',
333
+ label: 'outline()',
334
+ description: 'Solid alpha outline effect',
335
+ effect: {
336
+ name: 'outline',
337
+ importPath: '@remotion/effects/outline',
338
+ config: {
339
+ width: 12,
340
+ color: '#00ffff',
341
+ },
342
+ },
343
+ },
330
344
  {
331
345
  id: 'effects-light-trail',
332
346
  category: 'Blur & Shadow',
@@ -4,7 +4,6 @@ export type ElementDragData = {
4
4
  type: 'remotion-element';
5
5
  version: 1;
6
6
  element: {
7
- dependencies: string[];
8
7
  slug: string;
9
8
  displayName: string;
10
9
  sourceCode: string;
@@ -14,8 +13,7 @@ export type ElementDragData = {
14
13
  export declare const isLowercaseElementFileName: (value: unknown) => value is string;
15
14
  export declare const makeElementFileNameFromSlug: (slug: string) => string | null;
16
15
  export declare const getElementComponentNameFromSourceCode: (sourceCode: string) => string | null;
17
- export declare const makeElementDragData: ({ dependencies, dimensions, displayName, slug, sourceCode, }: {
18
- dependencies: string[];
16
+ export declare const makeElementDragData: ({ dimensions, displayName, slug, sourceCode, }: {
19
17
  slug: string;
20
18
  displayName: string;
21
19
  sourceCode: string;
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parseElementDragData = exports.makeElementDragData = exports.getElementComponentNameFromSourceCode = exports.makeElementFileNameFromSlug = exports.isLowercaseElementFileName = exports.ELEMENT_DRAG_MIME_TYPE = void 0;
4
4
  const component_drag_data_1 = require("./component-drag-data");
5
- const package_name_1 = require("./package-name");
6
5
  const drag_mime_types_1 = require("./drag-mime-types");
7
6
  Object.defineProperty(exports, "ELEMENT_DRAG_MIME_TYPE", { enumerable: true, get: function () { return drag_mime_types_1.ELEMENT_DRAG_MIME_TYPE; } });
8
7
  const isRecord = (value) => {
@@ -49,11 +48,6 @@ const isSourceCode = (value) => {
49
48
  value.trim().length > 0 &&
50
49
  value.length < 200000);
51
50
  };
52
- const isDependencies = (value) => {
53
- return (Array.isArray(value) &&
54
- value.length <= 100 &&
55
- value.every((dependency) => typeof dependency === 'string' && (0, package_name_1.isValidPackageName)(dependency)));
56
- };
57
51
  const isDimensions = (value) => {
58
52
  if (!isRecord(value)) {
59
53
  return false;
@@ -75,12 +69,11 @@ const getElementComponentNameFromSourceCode = (sourceCode) => {
75
69
  return (0, component_drag_data_1.isComponentIdentifier)(componentName) ? componentName : null;
76
70
  };
77
71
  exports.getElementComponentNameFromSourceCode = getElementComponentNameFromSourceCode;
78
- const makeElementDragData = ({ dependencies, dimensions, displayName, slug, sourceCode, }) => {
72
+ const makeElementDragData = ({ dimensions, displayName, slug, sourceCode, }) => {
79
73
  return {
80
74
  type: 'remotion-element',
81
75
  version: 1,
82
76
  element: {
83
- dependencies: Array.from(new Set(dependencies)),
84
77
  slug,
85
78
  displayName,
86
79
  sourceCode,
@@ -101,20 +94,18 @@ const parseElementDragData = (value) => {
101
94
  if (!isRecord(parsed.element)) {
102
95
  return null;
103
96
  }
104
- const { dependencies, dimensions, displayName, slug, sourceCode } = parsed.element;
97
+ const { dimensions, displayName, slug, sourceCode } = parsed.element;
105
98
  if (!isSlug(slug) ||
106
99
  !isDisplayName(displayName) ||
107
100
  !isSourceCode(sourceCode) ||
108
101
  (0, exports.getElementComponentNameFromSourceCode)(sourceCode) === null ||
109
102
  (0, exports.makeElementFileNameFromSlug)(slug) === null ||
110
- (dependencies !== undefined && !isDependencies(dependencies)) ||
111
103
  (dimensions !== undefined &&
112
104
  dimensions !== null &&
113
105
  !isDimensions(dimensions))) {
114
106
  return null;
115
107
  }
116
108
  return (0, exports.makeElementDragData)({
117
- dependencies: dependencies !== null && dependencies !== void 0 ? dependencies : [],
118
109
  slug,
119
110
  displayName,
120
111
  sourceCode,
@@ -161,6 +161,7 @@ var configMethodLifecycles = {
161
161
  setDeleteAfter: "runtime",
162
162
  setDisallowParallelEncoding: "runtime",
163
163
  setDotEnvLocation: "restart",
164
+ setEnableCancellation: "runtime",
164
165
  setEnableCrossSiteIsolation: "restart",
165
166
  setEnableFolderExpiry: "runtime",
166
167
  setEncodingBufferSize: "runtime",
@@ -898,6 +899,20 @@ var EFFECT_CATALOG = [
898
899
  config: {}
899
900
  }
900
901
  },
902
+ {
903
+ id: "effects-outline",
904
+ category: "Blur & Shadow",
905
+ label: "outline()",
906
+ description: "Solid alpha outline effect",
907
+ effect: {
908
+ name: "outline",
909
+ importPath: "@remotion/effects/outline",
910
+ config: {
911
+ width: 12,
912
+ color: "#00ffff"
913
+ }
914
+ }
915
+ },
901
916
  {
902
917
  id: "effects-light-trail",
903
918
  category: "Blur & Shadow",
@@ -2266,6 +2281,7 @@ var allPackages = [
2266
2281
  "studio-protocol",
2267
2282
  "light-leaks",
2268
2283
  "mac-cursors",
2284
+ "maptiler",
2269
2285
  "rough-notation",
2270
2286
  "starburst",
2271
2287
  "vercel",
@@ -2279,19 +2295,25 @@ var packages = allPackages.filter((pkg) => shouldReleasePackage({
2279
2295
  var extraPackages = [
2280
2296
  {
2281
2297
  name: "mediabunny",
2282
- version: "1.50.8",
2298
+ version: "1.55.1",
2283
2299
  description: "Multimedia library used by Remotion",
2284
2300
  docsUrl: "https://www.remotion.dev/docs/mediabunny/version"
2285
2301
  },
2286
2302
  {
2287
2303
  name: "@mediabunny/ac3",
2288
- version: "1.50.8",
2304
+ version: "1.55.1",
2289
2305
  description: "AC-3 and E-AC-3 audio codec support for Mediabunny",
2290
2306
  docsUrl: "https://www.remotion.dev/docs/mediabunny/formats#ac-3-and-e-ac-3"
2291
2307
  },
2308
+ {
2309
+ name: "@mediabunny/dts",
2310
+ version: "1.55.1",
2311
+ description: "DTS audio codec support for Mediabunny",
2312
+ docsUrl: "https://mediabunny.dev/guide/extensions/dts"
2313
+ },
2292
2314
  {
2293
2315
  name: "@mediabunny/prores",
2294
- version: "1.50.8",
2316
+ version: "1.55.1",
2295
2317
  description: "Apple ProRes decoder support for Mediabunny",
2296
2318
  docsUrl: "https://www.remotion.dev/docs/mediabunny/formats"
2297
2319
  },
@@ -2399,6 +2421,7 @@ var descriptions = {
2399
2421
  "studio-protocol": "Create Element payloads and request installation into Remotion Studio",
2400
2422
  "light-leaks": "Light leak effects for Remotion",
2401
2423
  "mac-cursors": "macOS cursor components for Remotion",
2424
+ maptiler: "MapTiler components for Remotion",
2402
2425
  "rough-notation": "Rough annotation primitives for Remotion",
2403
2426
  "player-a11y": "Internal accessibility wrapper around @remotion/player",
2404
2427
  starburst: "Starburst ray effect for Remotion",
@@ -2516,6 +2539,7 @@ var installableMap = {
2516
2539
  packageName: "@remotion/mac-cursors",
2517
2540
  releaseVersion: VERSION
2518
2541
  }),
2542
+ maptiler: false,
2519
2543
  "rough-notation": true,
2520
2544
  starburst: shouldReleasePackage({
2521
2545
  packageName: "@remotion/starburst",
@@ -2623,6 +2647,7 @@ var apiDocs = {
2623
2647
  "studio-protocol": "https://www.remotion.dev/docs/studio-protocol",
2624
2648
  "light-leaks": "https://www.remotion.dev/docs/light-leaks",
2625
2649
  "mac-cursors": "https://www.remotion.dev/docs/mac-cursors",
2650
+ maptiler: null,
2626
2651
  "rough-notation": "https://www.remotion.dev/docs/rough-notation",
2627
2652
  starburst: "https://www.remotion.dev/docs/starburst",
2628
2653
  vercel: "https://www.remotion.dev/docs/vercel/api",
@@ -3196,6 +3221,7 @@ var studioHtml = ({
3196
3221
  logLevel,
3197
3222
  mode,
3198
3223
  bundleScriptUrl,
3224
+ bundleScriptType,
3199
3225
  readOnlyStudio,
3200
3226
  studioRuntimeConfig
3201
3227
  }) => {
@@ -3263,7 +3289,7 @@ var studioHtml = ({
3263
3289
  <div id="menuportal-3"></div>
3264
3290
  <div id="menuportal-4"></div>
3265
3291
  <div id="menuportal-5"></div>
3266
- <script src="${scriptUrl}"></script>
3292
+ <script${bundleScriptType === "module" ? ' type="module"' : ""} src="${scriptUrl}"></script>
3267
3293
  </body>
3268
3294
  </html>
3269
3295
  `.trim();
@@ -27,6 +27,7 @@ var studioHtml = ({
27
27
  logLevel,
28
28
  mode,
29
29
  bundleScriptUrl,
30
+ bundleScriptType,
30
31
  readOnlyStudio,
31
32
  studioRuntimeConfig
32
33
  }) => {
@@ -94,7 +95,7 @@ var studioHtml = ({
94
95
  <div id="menuportal-3"></div>
95
96
  <div id="menuportal-4"></div>
96
97
  <div id="menuportal-5"></div>
97
- <script src="${scriptUrl}"></script>
98
+ <script${bundleScriptType === "module" ? ' type="module"' : ""} src="${scriptUrl}"></script>
98
99
  </body>
99
100
  </html>
100
101
  `.trim();
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  export { splitAnsi, stripAnsi } from './ansi';
2
2
  export type { TerminalId } from './terminal';
3
3
  export type { GitClientId } from './git-client';
4
- export { AddEffectKeyframeRequest, AddEffectKeyframeResponse, AddEffectRequest, AddEffectResponse, AddKeyframesRequest, AddKeyframesResponse, AddRenderRequest, AddSequenceKeyframeRequest, AddSequenceKeyframeResponse, ApiRoutes, ApplyCodemodRequest, ApplyCodemodResponse, ApplyVisualControlRequest, ApplyVisualControlResponse, BatchUpdateEffectKeyframeSettings, BatchUpdateKeyframeSettingsRequest, BatchUpdateKeyframeSettingsResponse, BatchUpdateSequenceKeyframeSettings, CanUpdateDefaultPropsResponse, CanUpdateSequencePropsRequest, CancelRenderRequest, CancelRenderResponse, CaptionPatch, CompositionComponentInfoRequest, CompositionComponentInfoResponse, ConvertFigmaClipboardToSvgRequest, ConvertFigmaClipboardToSvgResponse, CopyRenderOutputToAssetRequest, CopyRenderOutputToAssetResponse, CopyStillToClipboardRequest, DeleteEffectKeyframe, DeleteEffectRequest, DeleteEffectRequestItem, DeleteEffectResponse, DeleteJsxNodeRequest, DeleteJsxNodeRequestItem, DeleteJsxNodeResponse, DeleteKeyframesRequest, DeleteKeyframesResponse, DeleteSequenceKeyframe, DeleteStaticFileRequest, DeleteStaticFileResponse, DownloadRemoteAssetRequest, DownloadRemoteAssetResponse, DuplicateEffectRequest, DuplicateEffectRequestItem, DuplicateEffectResponse, DuplicateJsxNodeRequest, DuplicateJsxNodeResponse, EditorPickerId, ElementInstallExpectedFileState, ElementInstallRequest, ElementInstallSource, FindInFileRequest, FindInFileResponse, GetDefaultCodingAgentInfoRequest, GetDefaultCodingAgentInfoResponse, GetDefaultEditorInfoRequest, GetDefaultEditorInfoResponse, GoogleFontSourceEdit, InsertElementFileConflict, InsertElementRequest, InsertElementResponse, InsertJsxElementRequest, InsertJsxElementResponse, InsertableCompositionElement, InsertableCompositionElementPosition, InstallPackageRequest, InstallPackageResponse, LogStudioErrorRequest, LogStudioErrorResponse, MoveEffectKeyframe, MoveKeyframesRequest, MoveKeyframesResponse, MoveSequenceKeyframe, OpenInCodingAgentRequest, OpenInCodingAgentResponse, OpenInEditorRequest, OpenInEditorResponse, OpenInFileExplorerRequest, OpenInGitClientRequest, OpenInGitClientResponse, OpenInTerminalRequest, OpenInTerminalResponse, PackageInstallSpec, PasteEffectsRequest, PasteEffectsResponse, PrepareElementInstallRequest, PrepareElementInstallResponse, ProjectInfoRequest, ProjectInfoResponse, RedoRequest, RedoResponse, RemoveRenderRequest, RenameStaticFileRequest, RenameStaticFileResponse, ReorderEffectRequest, ReorderEffectResponse, ReorderSequencePosition, ReorderSequenceRequest, ReorderSequenceResponse, RestartStudioRequest, RestartStudioResponse, SaveEffectPropsRequest, SaveEffectPropsResponse, SaveInlineCaptionPatchesRequest, SaveMultipleEffectPropsEdit, SaveMultipleEffectPropsRequest, SaveMultipleEffectPropsResponse, SaveMultipleEffectPropsResult, SaveSequencePropEdit, SaveSequencePropSourceEdit, SaveSequencePropsRequest, SaveSequencePropsResponse, SaveSequencePropsResult, SimpleDiff, SplitJsxSequenceRequest, SplitJsxSequenceResponse, SubscribeToDefaultPropsRequest, SubscribeToDefaultPropsResponse, SubscribeToFileExistenceRequest, SubscribeToFileExistenceResponse, SubscribeToSequencePropsBatchRequest, SubscribeToSequencePropsBatchResponse, SubscribeToSequencePropsRequest, SubscribeToSequencePropsResponse, UndoRequest, UndoResponse, UnsubscribeFromDefaultPropsRequest, UnsubscribeFromFileExistenceRequest, UnsubscribeFromSequencePropsRequest, UpdateAvailableRequest, UpdateAvailableResponse, UpdateConfigRequest, UpdateConfigResponse, UpdateDefaultPropsRequest, UpdateDefaultPropsResponse, UpdateEffectKeyframeSettingsRequest, UpdateEffectKeyframeSettingsResponse, UpdateElementInstallTargetRequest, UpdateElementInstallTargetResponse, UpdateSequenceKeyframeSettingsRequest, UpdateSequenceKeyframeSettingsResponse, type AddEffectKeyframe, type AddSequenceKeyframe, type ConfigUpdate, type ConfigValue, type KeyframeSettings, } from './api-requests';
5
- export type { BrowserStudioOperations } from './browser-studio-operations';
4
+ export { AddEffectKeyframeRequest, AddEffectKeyframeResponse, AddEffectRequest, AddEffectResponse, AddKeyframesRequest, AddKeyframesResponse, AddRenderRequest, AddSequenceKeyframeRequest, AddSequenceKeyframeResponse, ApiRoutes, ApplyCodemodRequest, ApplyCodemodResponse, ApplyVisualControlRequest, ApplyVisualControlResponse, BatchUpdateEffectKeyframeSettings, BatchUpdateKeyframeSettingsRequest, BatchUpdateKeyframeSettingsResponse, BatchUpdateSequenceKeyframeSettings, CanUpdateDefaultPropsResponse, CanUpdateSequencePropsRequest, CancelRenderRequest, CancelRenderResponse, CaptionPatch, CompositionComponentInfoRequest, CompositionComponentInfoResponse, ConvertFigmaClipboardToSvgRequest, ConvertFigmaClipboardToSvgResponse, CopyRenderOutputToAssetRequest, CopyRenderOutputToAssetResponse, CopyStillToClipboardRequest, DeleteEffectKeyframe, DeleteEffectRequest, DeleteEffectRequestItem, DeleteEffectResponse, DeleteJsxNodeRequest, DeleteJsxNodeRequestItem, DeleteJsxNodeResponse, DeleteKeyframesRequest, DeleteKeyframesResponse, DeleteSequenceKeyframe, DeleteStaticFileRequest, DeleteStaticFileResponse, DownloadRemoteAssetRequest, DownloadRemoteAssetResponse, DuplicateEffectRequest, DuplicateEffectRequestItem, DuplicateEffectResponse, DuplicateJsxNodeRequest, DuplicateJsxNodeResponse, EditorPickerId, ElementInstallExpectedFileState, ElementInstallRequest, ElementInstallSource, FindInFileRequest, FindInFileResponse, GetDefaultCodingAgentInfoRequest, GetDefaultCodingAgentInfoResponse, GetDefaultEditorInfoRequest, GetDefaultEditorInfoResponse, GetRemotionSkillsInfoRequest, GetRemotionSkillsInfoResponse, GoogleFontSourceEdit, InsertElementFileConflict, InsertElementRequest, InsertElementResponse, InsertJsxElementRequest, InsertJsxElementResponse, InsertableCompositionElement, InsertableCompositionElementPosition, InstallPackageRequest, InstallPackageResponse, LogStudioErrorRequest, LogStudioErrorResponse, MoveEffectKeyframe, MoveKeyframesRequest, MoveKeyframesResponse, MoveSequenceKeyframe, OpenInCodingAgentRequest, OpenInCodingAgentResponse, OpenInEditorRequest, OpenInEditorResponse, OpenInFileExplorerRequest, OpenInGitClientRequest, OpenInGitClientResponse, OpenInTerminalRequest, OpenInTerminalResponse, PackageInstallSpec, PasteEffectsRequest, PasteEffectsResponse, PrepareElementInstallRequest, PrepareElementInstallResponse, ProjectInfoRequest, ProjectInfoResponse, RedoRequest, RedoResponse, RemoveRenderRequest, RenameStaticFileRequest, RenameStaticFileResponse, ReorderEffectRequest, ReorderEffectResponse, ReorderSequencePosition, ReorderSequenceRequest, ReorderSequenceResponse, RestartStudioRequest, RestartStudioResponse, SaveEffectPropsRequest, SaveEffectPropsResponse, SaveInlineCaptionPatchesRequest, SaveMultipleEffectPropsEdit, SaveMultipleEffectPropsRequest, SaveMultipleEffectPropsResponse, SaveMultipleEffectPropsResult, SaveSequencePropEdit, SaveSequencePropSourceEdit, SaveSequencePropsRequest, SaveSequencePropsResponse, SaveSequencePropsResult, SimpleDiff, SplitJsxSequenceRequest, SplitJsxSequenceResponse, SplitVideoFromAudioRequest, SplitVideoFromAudioResponse, SubscribeToDefaultPropsRequest, SubscribeToDefaultPropsResponse, SubscribeToFileExistenceRequest, SubscribeToFileExistenceResponse, SubscribeToSequencePropsBatchRequest, SubscribeToSequencePropsBatchResponse, SubscribeToSequencePropsRequest, SubscribeToSequencePropsResponse, UndoRequest, UndoResponse, UnsubscribeFromDefaultPropsRequest, UnsubscribeFromFileExistenceRequest, UnsubscribeFromSequencePropsRequest, UpdateAvailableRequest, UpdateAvailableResponse, UpdateConfigRequest, UpdateConfigResponse, UpdateDefaultPropsRequest, UpdateDefaultPropsResponse, UpdateEffectKeyframeSettingsRequest, UpdateEffectKeyframeSettingsResponse, UpdateElementInstallTargetRequest, UpdateElementInstallTargetResponse, UpdateSequenceKeyframeSettingsRequest, UpdateSequenceKeyframeSettingsResponse, type AddEffectKeyframe, type AddSequenceKeyframe, type ConfigUpdate, type ConfigValue, type KeyframeSettings, } from './api-requests';
5
+ export type { BrowserStudioKeyframeOperations, BrowserStudioEffectOperations, BrowserStudioInstallPackagesResponse, BrowserStudioOperations, BrowserStudioPackageInstallationOperations, DuplicateCompositionRequest, DuplicateCompositionResponse, } from './browser-studio-operations';
6
6
  export type { CanvasCaptureData, CanvasCaptureMouseMovement, CanvasCapturePointerClick, } from './canvas-capture';
7
7
  export { CANVAS_CAPTURE_METADATA_TAG, parseCanvasCaptureData, } from './canvas-capture';
8
8
  export type { SequenceNodePathMutation, SequenceNodePathRemapping, } from './sequence-node-path-mutation';
@@ -44,7 +44,7 @@ export { ScriptLine, SomeStackFrame, StackFrame, SymbolicatedStackFrame, } from
44
44
  export { EnumPath, stringifyDefaultProps } from './stringify-default-props';
45
45
  export { getStudioEntryPoints, type StudioEntryPointPaths, } from './studio-entry-points';
46
46
  export { studioHtml, type StudioHtmlOptions } from './studio-html';
47
- export type { StudioRuntimeConfig } from './studio-runtime-config';
47
+ export type { ConfigFileStudioSettings, StudioRuntimeConfig, } from './studio-runtime-config';
48
48
  export { BORDER_RADIUS_LONGHAND_KEYS, BORDER_RADIUS_SHORTHAND_KEY, getStylePropertyLonghandKeys, } from './style-property-relations';
49
49
  export type { VisualControlChange } from './codemods';
50
50
  export { optimisticAddEffectKeyframe, optimisticAddSequenceKeyframe, } from './optimistic-add-keyframe';
@@ -0,0 +1,7 @@
1
+ import { type CanUpdateSequencePropsResponse, type SequenceSchema } from 'remotion';
2
+ export declare const optimisticUpdateForCodeValues: ({ previous, fieldKey, value, schema, }: {
3
+ previous: CanUpdateSequencePropsResponse;
4
+ fieldKey: string;
5
+ value: unknown;
6
+ schema: SequenceSchema;
7
+ }) => CanUpdateSequencePropsResponse;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.optimisticUpdateForCodeValues = void 0;
4
+ const no_react_1 = require("remotion/no-react");
5
+ const optimisticUpdateForCodeValues = ({ previous, fieldKey, value, schema, }) => {
6
+ var _a;
7
+ if (!previous.canUpdate) {
8
+ return previous;
9
+ }
10
+ const props = {
11
+ ...previous.props,
12
+ [fieldKey]: { status: 'static', codeValue: value },
13
+ };
14
+ if (((_a = schema[fieldKey]) === null || _a === void 0 ? void 0 : _a.type) === 'enum') {
15
+ const propsToDelete = no_react_1.NoReactInternals.findPropsToDelete({
16
+ schema,
17
+ key: fieldKey,
18
+ value,
19
+ });
20
+ for (const propToDelete of propsToDelete) {
21
+ delete props[propToDelete];
22
+ }
23
+ }
24
+ return {
25
+ canUpdate: true,
26
+ props,
27
+ effects: previous.effects,
28
+ };
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]: { status: 'static', 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,6 +1,6 @@
1
- declare const allPackages: readonly ["svg-3d-engine", "animation-utils", "animated-emoji", "astro-example", "babel-loader", "bugs", "brand", "bundler", "browser-studio", "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-codemods", "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", "studio-protocol", "light-leaks", "mac-cursors", "rough-notation", "starburst", "vercel", "sfx", "effects"];
1
+ declare const allPackages: readonly ["svg-3d-engine", "animation-utils", "animated-emoji", "astro-example", "babel-loader", "bugs", "brand", "bundler", "browser-studio", "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-codemods", "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", "studio-protocol", "light-leaks", "mac-cursors", "maptiler", "rough-notation", "starburst", "vercel", "sfx", "effects"];
2
2
  export type Pkgs = (typeof allPackages)[number];
3
- export declare const packages: ("animated-emoji" | "animation-utils" | "astro-example" | "babel-loader" | "brand" | "browser-studio" | "bugs" | "bundler" | "captions" | "claude-code-plugin" | "cli" | "cloudrun" | "codex-plugin" | "compositor" | "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" | "convert" | "core" | "create-video" | "design" | "discord-poster" | "docs" | "docusaurus-plugin" | "effects" | "elevenlabs" | "enable-scss" | "eslint-config" | "eslint-config-flat" | "eslint-config-internal" | "eslint-plugin" | "example" | "example-videos" | "example-without-zod" | "fonts" | "gif" | "google-fonts" | "install-whisper-cpp" | "it-tests" | "kimi-code-plugin" | "lambda" | "lambda-client" | "lambda-go" | "lambda-go-example" | "lambda-php" | "lambda-python" | "lambda-ruby" | "layout-utils" | "licensing" | "light-leaks" | "lottie" | "mac-cursors" | "mcp" | "media" | "media-parser" | "media-utils" | "motion-blur" | "noise" | "openai-whisper" | "paths" | "player" | "player-a11y" | "player-example" | "preload" | "promo-pages" | "react18-tests" | "remotion-media" | "renderer" | "rive" | "rough-notation" | "rounded-text-box" | "serverless" | "serverless-client" | "sfx" | "shapes" | "skia" | "skills" | "skills-evals" | "starburst" | "streaming" | "studio" | "studio-codemods" | "studio-protocol" | "studio-server" | "studio-shared" | "svg-3d-engine" | "tailwind" | "tailwind-v4" | "test-utils" | "three" | "timeline-utils" | "transitions" | "vercel" | "web-renderer" | "webcodecs" | "whisper-web" | "zod-types" | "zod-types-v3")[];
3
+ export declare const packages: ("animated-emoji" | "animation-utils" | "astro-example" | "babel-loader" | "brand" | "browser-studio" | "bugs" | "bundler" | "captions" | "claude-code-plugin" | "cli" | "cloudrun" | "codex-plugin" | "compositor" | "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" | "convert" | "core" | "create-video" | "design" | "discord-poster" | "docs" | "docusaurus-plugin" | "effects" | "elevenlabs" | "enable-scss" | "eslint-config" | "eslint-config-flat" | "eslint-config-internal" | "eslint-plugin" | "example" | "example-videos" | "example-without-zod" | "fonts" | "gif" | "google-fonts" | "install-whisper-cpp" | "it-tests" | "kimi-code-plugin" | "lambda" | "lambda-client" | "lambda-go" | "lambda-go-example" | "lambda-php" | "lambda-python" | "lambda-ruby" | "layout-utils" | "licensing" | "light-leaks" | "lottie" | "mac-cursors" | "maptiler" | "mcp" | "media" | "media-parser" | "media-utils" | "motion-blur" | "noise" | "openai-whisper" | "paths" | "player" | "player-a11y" | "player-example" | "preload" | "promo-pages" | "react18-tests" | "remotion-media" | "renderer" | "rive" | "rough-notation" | "rounded-text-box" | "serverless" | "serverless-client" | "sfx" | "shapes" | "skia" | "skills" | "skills-evals" | "starburst" | "streaming" | "studio" | "studio-codemods" | "studio-protocol" | "studio-server" | "studio-shared" | "svg-3d-engine" | "tailwind" | "tailwind-v4" | "test-utils" | "three" | "timeline-utils" | "transitions" | "vercel" | "web-renderer" | "webcodecs" | "whisper-web" | "zod-types" | "zod-types-v3")[];
4
4
  export type ExtraPackage = {
5
5
  name: string;
6
6
  version: string;
@@ -101,6 +101,7 @@ const allPackages = [
101
101
  'studio-protocol',
102
102
  'light-leaks',
103
103
  'mac-cursors',
104
+ 'maptiler',
104
105
  'rough-notation',
105
106
  'starburst',
106
107
  'vercel',
@@ -114,19 +115,25 @@ exports.packages = allPackages.filter((pkg) => (0, release_package_policy_1.shou
114
115
  exports.extraPackages = [
115
116
  {
116
117
  name: 'mediabunny',
117
- version: '1.50.8',
118
+ version: '1.55.1',
118
119
  description: 'Multimedia library used by Remotion',
119
120
  docsUrl: 'https://www.remotion.dev/docs/mediabunny/version',
120
121
  },
121
122
  {
122
123
  name: '@mediabunny/ac3',
123
- version: '1.50.8',
124
+ version: '1.55.1',
124
125
  description: 'AC-3 and E-AC-3 audio codec support for Mediabunny',
125
126
  docsUrl: 'https://www.remotion.dev/docs/mediabunny/formats#ac-3-and-e-ac-3',
126
127
  },
128
+ {
129
+ name: '@mediabunny/dts',
130
+ version: '1.55.1',
131
+ description: 'DTS audio codec support for Mediabunny',
132
+ docsUrl: 'https://mediabunny.dev/guide/extensions/dts',
133
+ },
127
134
  {
128
135
  name: '@mediabunny/prores',
129
- version: '1.50.8',
136
+ version: '1.55.1',
130
137
  description: 'Apple ProRes decoder support for Mediabunny',
131
138
  docsUrl: 'https://www.remotion.dev/docs/mediabunny/formats',
132
139
  },
@@ -234,6 +241,7 @@ exports.descriptions = {
234
241
  'studio-protocol': 'Create Element payloads and request installation into Remotion Studio',
235
242
  'light-leaks': 'Light leak effects for Remotion',
236
243
  'mac-cursors': 'macOS cursor components for Remotion',
244
+ maptiler: 'MapTiler components for Remotion',
237
245
  'rough-notation': 'Rough annotation primitives for Remotion',
238
246
  'player-a11y': 'Internal accessibility wrapper around @remotion/player',
239
247
  starburst: 'Starburst ray effect for Remotion',
@@ -351,6 +359,7 @@ exports.installableMap = {
351
359
  packageName: '@remotion/mac-cursors',
352
360
  releaseVersion: remotion_1.VERSION,
353
361
  }),
362
+ maptiler: false,
354
363
  'rough-notation': true,
355
364
  starburst: (0, release_package_policy_1.shouldReleasePackage)({
356
365
  packageName: '@remotion/starburst',
@@ -458,6 +467,7 @@ exports.apiDocs = {
458
467
  'studio-protocol': 'https://www.remotion.dev/docs/studio-protocol',
459
468
  'light-leaks': 'https://www.remotion.dev/docs/light-leaks',
460
469
  'mac-cursors': 'https://www.remotion.dev/docs/mac-cursors',
470
+ maptiler: null,
461
471
  'rough-notation': 'https://www.remotion.dev/docs/rough-notation',
462
472
  starburst: 'https://www.remotion.dev/docs/starburst',
463
473
  vercel: 'https://www.remotion.dev/docs/vercel/api',
@@ -4,11 +4,19 @@ import type { _InternalTypes } from 'remotion';
4
4
  import type { GitSource } from './git-source';
5
5
  import type { PackageManager } from './package-manager';
6
6
  import type { StudioRuntimeConfig } from './studio-runtime-config';
7
+ export type ConfigFileRenderDefaults = {
8
+ codec: Codec | null;
9
+ proResProfile: _InternalTypes['ProResProfile'] | null;
10
+ stillImageFormat: StillImageFormat | null;
11
+ videoImageFormat: VideoImageFormat | null;
12
+ x264Preset: X264Preset | null;
13
+ };
7
14
  export type RenderDefaults = {
8
15
  jpegQuality: number;
9
16
  scale: number;
10
17
  logLevel: LogLevel;
11
18
  codec: Codec;
19
+ crf: number | null;
12
20
  concurrency: number;
13
21
  minConcurrency: number;
14
22
  muted: boolean;
@@ -47,7 +55,9 @@ export type RenderDefaults = {
47
55
  chromeMode: ChromeMode;
48
56
  publicLicenseKey: string | null;
49
57
  outputLocation: string | null;
58
+ allowHtmlInCanvas: boolean;
50
59
  sampleRate: number;
60
+ configFileRenderDefaults: ConfigFileRenderDefaults | null;
51
61
  };
52
62
  declare global {
53
63
  interface Window {
@@ -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;
@@ -30,7 +30,8 @@ export type StudioHtmlOptions = {
30
30
  logLevel: LogLevel;
31
31
  mode: 'dev' | 'bundle';
32
32
  bundleScriptUrl?: string;
33
+ bundleScriptType?: 'classic' | 'module';
33
34
  readOnlyStudio?: boolean;
34
35
  studioRuntimeConfig?: StudioRuntimeConfig;
35
36
  };
36
- 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, experimentalKeepAudioContextAlive, sampleRate, logLevel, mode, bundleScriptUrl, readOnlyStudio, studioRuntimeConfig, }: StudioHtmlOptions) => string;
37
+ 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, experimentalKeepAudioContextAlive, sampleRate, logLevel, mode, bundleScriptUrl, bundleScriptType, 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, fileSystemPlatform, gitSource, projectName, installedDependencies, packageManager, audioLatencyHint, experimentalKeepAudioContextAlive, 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, experimentalKeepAudioContextAlive, sampleRate, logLevel, mode, bundleScriptUrl, bundleScriptType, readOnlyStudio, studioRuntimeConfig, }) => {
6
6
  const scriptUrl = bundleScriptUrl !== null && bundleScriptUrl !== void 0 ? bundleScriptUrl : `${publicPath}bundle.js`;
7
7
  const isRelativeBundle = mode === 'bundle' && publicPath === './';
8
8
  const staticBaseValue = isRelativeBundle
@@ -89,7 +89,7 @@ const studioHtml = ({ publicPath, editorName, inputProps, envVariables, staticHa
89
89
  <div id="menuportal-3"></div>
90
90
  <div id="menuportal-4"></div>
91
91
  <div id="menuportal-5"></div>
92
- <script src="${scriptUrl}"></script>
92
+ <script${bundleScriptType === 'module' ? ' type="module"' : ''} src="${scriptUrl}"></script>
93
93
  </body>
94
94
  </html>
95
95
  `.trim();
@@ -1,4 +1,16 @@
1
- import type { BuiltInEditor, DefaultCodingAgent } from '@remotion/renderer';
1
+ import type { BuiltInEditor, DefaultCodingAgent, LogLevel } from '@remotion/renderer';
2
+ export type ConfigFileStudioSettings = {
3
+ readonly askAIEnabled: boolean | null;
4
+ readonly audioLatencyHint: AudioContextLatencyCategory | null;
5
+ readonly beepOnFinish: boolean | null;
6
+ readonly enableCrossSiteIsolation: boolean | null;
7
+ readonly interactivityEnabled: boolean | null;
8
+ readonly keyboardShortcutsEnabled: boolean | null;
9
+ readonly logLevel: LogLevel | null;
10
+ readonly maxTimelineTracks: number | null;
11
+ readonly numberOfSharedAudioTags: number | null;
12
+ readonly rspack: boolean | null;
13
+ };
2
14
  export type StudioRuntimeConfig = {
3
15
  readonly maxTimelineTracks: number | null;
4
16
  readonly askAIEnabled: boolean;
@@ -8,4 +20,5 @@ export type StudioRuntimeConfig = {
8
20
  readonly defaultCodingAgent: DefaultCodingAgent | null;
9
21
  readonly defaultEditor: BuiltInEditor | 'custom' | null;
10
22
  readonly publicLicenseKey: string | null;
23
+ readonly configFileStudioSettings: ConfigFileStudioSettings | null;
11
24
  };
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.513",
6
+ "version": "4.0.515",
7
7
  "description": "Internal package for shared objects between the Studio backend and frontend",
8
8
  "main": "dist",
9
9
  "module": "dist/esm/index.mjs",
@@ -21,12 +21,12 @@
21
21
  "url": "https://github.com/remotion-dev/remotion/issues"
22
22
  },
23
23
  "dependencies": {
24
- "@remotion/studio-protocol": "4.0.513",
25
- "remotion": "4.0.513"
24
+ "@remotion/studio-protocol": "4.0.515",
25
+ "remotion": "4.0.515"
26
26
  },
27
27
  "devDependencies": {
28
- "@remotion/renderer": "4.0.513",
29
- "@remotion/eslint-config-internal": "4.0.513",
28
+ "@remotion/renderer": "4.0.515",
29
+ "@remotion/eslint-config-internal": "4.0.515",
30
30
  "eslint": "9.19.0",
31
31
  "@typescript/native-preview": "7.0.0-dev.20260217.1"
32
32
  },