@remotion/studio-shared 4.0.501 → 4.0.503

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
- import type { ComponentProp, ElementDragData } from '@remotion/drag-and-drop';
2
- import type { AudioCodec, ChromeMode, Codec, ColorSpace, LogLevel, PixelFormat, StillImageFormat, VideoImageFormat, X264Preset } from '@remotion/renderer';
1
+ import type { AudioCodec, BuiltInEditor, ChromeMode, Codec, ColorSpace, LogLevel, PixelFormat, StillImageFormat, VideoImageFormat, X264Preset } from '@remotion/renderer';
3
2
  import type { HardwareAccelerationOption } from '@remotion/renderer/client';
3
+ import type { ComponentProp, ElementDragData } from '@remotion/studio-protocol';
4
4
  import type { _InternalTypes, CannotUpdateSequenceReason, CanUpdateEffectPropsResponse, CanUpdateSequencePropsResponseFalse, CanUpdateSequencePropsResponseTrue, CanUpdateSequencePropStatus, ExtrapolateType, InteractivitySchema, InterpolateOutputOption, JsxComponentIdentity, SequenceNodePath, SequencePropsSubscriptionKey, VideoConfigValues } from 'remotion';
5
5
  import type { RecastCodemod, VisualControlChange } from './codemods';
6
6
  import type { EffectClipboardParam, EffectClipboardPasteType, EffectClipboardSnapshot } from './effect-clipboard-data';
@@ -16,6 +16,7 @@ export type OpenInFileExplorerRequest = {
16
16
  directory: string;
17
17
  };
18
18
  export type OpenInEditorRequest = {
19
+ editorId: EditorPickerId | null;
19
20
  stack: SymbolicatedStackFrame;
20
21
  };
21
22
  export type OpenInEditorResponse = {
@@ -654,10 +655,33 @@ export type ConvertFigmaClipboardToSvgResponse = {
654
655
  success: false;
655
656
  reason: string;
656
657
  };
658
+ export type ElementInstallExpectedFileState = {
659
+ exists: false;
660
+ } | {
661
+ exists: true;
662
+ sourceHash: string;
663
+ };
664
+ export type PrepareElementInstallRequest = {
665
+ compositionFile: string;
666
+ compositionId: string;
667
+ element: ElementDragData['element'];
668
+ };
669
+ export type PrepareElementInstallResponse = {
670
+ success: true;
671
+ plan: {
672
+ filePath: string;
673
+ expectedFileState: ElementInstallExpectedFileState;
674
+ };
675
+ } | {
676
+ success: false;
677
+ reason: string;
678
+ stack: string;
679
+ };
657
680
  export type InsertElementRequest = {
658
681
  compositionFile: string;
659
682
  compositionId: string;
660
683
  element: ElementDragData['element'];
684
+ expectedFileState: ElementInstallExpectedFileState | null;
661
685
  from: number | null;
662
686
  position: InsertableCompositionElementPosition | null;
663
687
  overwriteExisting: boolean;
@@ -679,6 +703,12 @@ export type InsertElementResponse = {
679
703
  reason: string;
680
704
  stack: string;
681
705
  };
706
+ export type ElementInstallSource = {
707
+ type: 'studio-protocol';
708
+ origin: string;
709
+ } | {
710
+ type: 'drag-and-drop';
711
+ };
682
712
  export type ElementInstallRequest = {
683
713
  id: string;
684
714
  clientId: string;
@@ -686,7 +716,9 @@ export type ElementInstallRequest = {
686
716
  compositionFile: string;
687
717
  compositionId: string;
688
718
  element: ElementDragData['element'];
719
+ from: number | null;
689
720
  position: InsertableCompositionElementPosition | null;
721
+ source: ElementInstallSource;
690
722
  };
691
723
  export type UpdateElementInstallTargetRequest = {
692
724
  requestId: string | null;
@@ -713,6 +745,8 @@ export type UpdateAvailableResponse = {
713
745
  currentVersion: string;
714
746
  latestVersion: string;
715
747
  updateAvailable: boolean;
748
+ skillsUpdateAvailable: boolean;
749
+ remotionUpgradeSkillAvailable: boolean;
716
750
  timedOut: boolean;
717
751
  packageManager: PackageManager | 'unknown';
718
752
  };
@@ -731,6 +765,24 @@ export type UpdatePublicLicenseResponse = {
731
765
  success: false;
732
766
  reason: string;
733
767
  };
768
+ export type GetDefaultEditorInfoRequest = {};
769
+ export type EditorPickerId = BuiltInEditor | 'custom';
770
+ export type GetDefaultEditorInfoResponse = {
771
+ defaultEditor: EditorPickerId | null;
772
+ installedEditors: {
773
+ id: EditorPickerId;
774
+ name: string;
775
+ }[];
776
+ };
777
+ export type UpdateDefaultEditorRequest = {
778
+ defaultEditor: EditorPickerId | null;
779
+ };
780
+ export type UpdateDefaultEditorResponse = {
781
+ success: true;
782
+ } | {
783
+ success: false;
784
+ reason: string;
785
+ };
734
786
  export type InstallPackageRequest = {
735
787
  packageNames: string[];
736
788
  };
@@ -799,6 +851,7 @@ export type ApiRoutes = {
799
851
  '/api/insert-jsx-element': ReqAndRes<InsertJsxElementRequest, InsertJsxElementResponse>;
800
852
  '/api/convert-figma-clipboard-to-svg': ReqAndRes<ConvertFigmaClipboardToSvgRequest, ConvertFigmaClipboardToSvgResponse>;
801
853
  '/api/insert-element': ReqAndRes<InsertElementRequest, InsertElementResponse>;
854
+ '/api/prepare-element-install': ReqAndRes<PrepareElementInstallRequest, PrepareElementInstallResponse>;
802
855
  '/api/update-element-install-target': ReqAndRes<UpdateElementInstallTargetRequest, UpdateElementInstallTargetResponse>;
803
856
  '/api/download-remote-asset': ReqAndRes<DownloadRemoteAssetRequest, DownloadRemoteAssetResponse>;
804
857
  '/api/update-available': ReqAndRes<UpdateAvailableRequest, UpdateAvailableResponse>;
@@ -808,6 +861,8 @@ export type ApiRoutes = {
808
861
  '/api/rename-static-file': ReqAndRes<RenameStaticFileRequest, RenameStaticFileResponse>;
809
862
  '/api/restart-studio': ReqAndRes<RestartStudioRequest, RestartStudioResponse>;
810
863
  '/api/update-public-license': ReqAndRes<UpdatePublicLicenseRequest, UpdatePublicLicenseResponse>;
864
+ '/api/default-editor-info': ReqAndRes<GetDefaultEditorInfoRequest, GetDefaultEditorInfoResponse>;
865
+ '/api/update-default-editor': ReqAndRes<UpdateDefaultEditorRequest, UpdateDefaultEditorResponse>;
811
866
  '/api/install-package': ReqAndRes<InstallPackageRequest, InstallPackageResponse>;
812
867
  '/api/undo': ReqAndRes<UndoRequest, UndoResponse>;
813
868
  '/api/redo': ReqAndRes<RedoRequest, RedoResponse>;
@@ -1,4 +1,4 @@
1
- import type { CompositionComponentInfoRequest, CompositionComponentInfoResponse, DeleteStaticFileRequest, DeleteStaticFileResponse, FindInFileRequest, FindInFileResponse, InsertJsxElementRequest, InsertJsxElementResponse, RedoResponse, RenameStaticFileRequest, RenameStaticFileResponse, UndoResponse } from './api-requests';
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';
2
2
  import type { EventSourceEvent } from './event-source-event';
3
3
  export type WriteStaticFileRequest = {
4
4
  contents: string | ArrayBuffer;
@@ -17,8 +17,13 @@ export type BrowserStudioOperations = {
17
17
  insertSolid: (request: InsertJsxElementRequest) => Promise<InsertJsxElementResponse>;
18
18
  redo: () => Promise<RedoResponse>;
19
19
  renameStaticFile: (request: RenameStaticFileRequest) => Promise<RenameStaticFileResponse>;
20
+ saveSequenceProps: (request: SaveSequencePropsRequest) => Promise<SaveSequencePropsResponse>;
21
+ subscribeToDefaultProps: (request: SubscribeToDefaultPropsRequest) => Promise<SubscribeToDefaultPropsResponse>;
22
+ subscribeToSequenceProps: (request: SubscribeToSequencePropsRequest) => Promise<SubscribeToSequencePropsResponse>;
20
23
  subscribeToEvent: (listener: (event: EventSourceEvent) => void) => () => void;
21
24
  undo: () => Promise<UndoResponse>;
25
+ unsubscribeFromDefaultProps: (request: UnsubscribeFromDefaultPropsRequest) => Promise<undefined>;
26
+ unsubscribeFromSequenceProps: (request: UnsubscribeFromSequencePropsRequest) => Promise<undefined>;
22
27
  writeStaticFile: (request: WriteStaticFileRequest) => Promise<void>;
23
28
  };
24
29
  declare global {
@@ -1,3 +1,3 @@
1
- import type { CompositionDragData } from '@remotion/drag-and-drop';
1
+ import type { CompositionDragData } from '@remotion/studio-protocol';
2
2
  import type { SymbolicatedStackFrame } from './stack-types';
3
3
  export declare const compositionDragDataToSymbolicatedStack: (dragData: CompositionDragData) => SymbolicatedStackFrame | null;
@@ -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;
@@ -1,4 +1,4 @@
1
- import type { EffectDragData } from '@remotion/drag-and-drop';
1
+ import type { EffectDragData } from '@remotion/studio-protocol';
2
2
  export type EffectCatalogItem = {
3
3
  readonly id: string;
4
4
  readonly category: string;
@@ -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,