@remotion/studio-shared 4.0.506 → 4.0.508

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist/api-requests.d.ts +58 -24
  2. package/dist/config-method-lifecycles.d.ts +94 -0
  3. package/dist/config-method-lifecycles.js +97 -0
  4. package/dist/define-plugin-definitions.d.ts +1 -3
  5. package/dist/define-plugin-definitions.js +1 -2
  6. package/dist/easing-clipboard-data.js +1 -0
  7. package/dist/effect-catalog.js +69 -0
  8. package/dist/effect-clipboard-data.js +1 -0
  9. package/dist/element-drag-data.d.ts +3 -1
  10. package/dist/element-drag-data.js +11 -2
  11. package/dist/esm/index.mjs +181 -2
  12. package/dist/esm/keyframe-easing-presets.mjs +7 -0
  13. package/dist/event-source-event.d.ts +5 -0
  14. package/dist/index.d.ts +6 -2
  15. package/dist/index.js +7 -2
  16. package/dist/keyframe-easing-presets.d.ts +2 -1
  17. package/dist/keyframe-easing-presets.js +7 -1
  18. package/dist/package-info.d.ts +2 -2
  19. package/dist/package-info.js +4 -0
  20. package/dist/react-refresh-event.d.ts +1 -0
  21. package/dist/react-refresh-event.js +4 -0
  22. package/dist/render-job.d.ts +3 -0
  23. package/dist/sequence-node-path-mutation.d.ts +13 -0
  24. package/dist/sequence-node-path-mutation.js +2 -0
  25. package/dist/studio-runtime-config.d.ts +4 -0
  26. package/dist/terminal.d.ts +1 -0
  27. package/dist/terminal.js +2 -0
  28. package/package.json +5 -5
  29. package/dist/optimistic-update-for-code-values.d.ts +0 -7
  30. package/dist/optimistic-update-for-code-values.js +0 -30
  31. package/dist/optimistic-update-for-effect-code-values.d.ts +0 -8
  32. package/dist/optimistic-update-for-effect-code-values.js +0 -43
  33. package/dist/shape-drag-data.d.ts +0 -22
  34. package/dist/shape-drag-data.js +0 -90
@@ -7,8 +7,10 @@ import type { EffectClipboardParam, EffectClipboardPasteType, EffectClipboardSna
7
7
  import type { PackageManager } from './package-manager';
8
8
  import type { ProjectInfo } from './project-info';
9
9
  import type { CompletedClientRender, RequiredChromiumOptions } from './render-job';
10
+ import type { SequenceNodePathMutation } from './sequence-node-path-mutation';
10
11
  import type { SymbolicatedStackFrame } from './stack-types';
11
12
  import type { EnumPath } from './stringify-default-props';
13
+ import type { TerminalId } from './terminal';
12
14
  type KeyframeEasing = Extract<CanUpdateSequencePropStatus, {
13
15
  status: 'keyframed';
14
16
  }>['easing'][number];
@@ -22,6 +24,20 @@ export type OpenInEditorRequest = {
22
24
  export type OpenInEditorResponse = {
23
25
  success: boolean;
24
26
  };
27
+ export type OpenInCodingAgentRequest = {
28
+ codingAgentId: DefaultCodingAgent;
29
+ prompt: string | null;
30
+ };
31
+ export type OpenInCodingAgentResponse = {
32
+ success: boolean;
33
+ };
34
+ export type OpenInTerminalRequest = {
35
+ directory: string;
36
+ terminalId: TerminalId;
37
+ };
38
+ export type OpenInTerminalResponse = {
39
+ success: boolean;
40
+ };
25
41
  export type FindInFileRequest = {
26
42
  fileName: string;
27
43
  lineNumber: number;
@@ -60,6 +76,7 @@ type AddRenderRequestDynamicFields = {
60
76
  scale: number;
61
77
  logLevel: LogLevel;
62
78
  chromeMode: ChromeMode;
79
+ licenseKey: string | null;
63
80
  } | {
64
81
  type: 'sequence';
65
82
  imageFormat: VideoImageFormat;
@@ -104,6 +121,7 @@ type AddRenderRequestDynamicFields = {
104
121
  hardwareAcceleration: HardwareAccelerationOption;
105
122
  chromeMode: ChromeMode;
106
123
  sampleRate: number;
124
+ licenseKey: string | null;
107
125
  };
108
126
  export type CancelRenderRequest = {
109
127
  jobId: string;
@@ -186,6 +204,13 @@ export type RenameStaticFileRequest = {
186
204
  export type RenameStaticFileResponse = {
187
205
  success: boolean;
188
206
  };
207
+ export type CopyRenderOutputToAssetRequest = {
208
+ outputPath: string;
209
+ assetPath: string;
210
+ };
211
+ export type CopyRenderOutputToAssetResponse = {
212
+ created: boolean;
213
+ };
189
214
  export type CanUpdateDefaultPropsResponse = {
190
215
  canUpdate: true;
191
216
  currentDefaultProps: Record<string, unknown>;
@@ -393,6 +418,7 @@ export type ReorderSequenceRequest = {
393
418
  };
394
419
  export type ReorderSequenceResponse = {
395
420
  success: true;
421
+ nodePathMutation: SequenceNodePathMutation;
396
422
  } | {
397
423
  success: false;
398
424
  reason: string;
@@ -563,6 +589,7 @@ export type DeleteJsxNodeRequest = {
563
589
  };
564
590
  export type DeleteJsxNodeResponse = {
565
591
  success: true;
592
+ nodePathMutation: SequenceNodePathMutation;
566
593
  } | {
567
594
  success: false;
568
595
  reason: string;
@@ -574,6 +601,7 @@ export type DuplicateJsxNodeRequest = {
574
601
  };
575
602
  export type DuplicateJsxNodeResponse = {
576
603
  success: true;
604
+ nodePathMutation: SequenceNodePathMutation;
577
605
  } | {
578
606
  success: false;
579
607
  reason: string;
@@ -586,6 +614,7 @@ export type SplitJsxSequenceRequest = {
586
614
  };
587
615
  export type SplitJsxSequenceResponse = {
588
616
  success: true;
617
+ nodePathMutation: SequenceNodePathMutation;
589
618
  } | {
590
619
  success: false;
591
620
  reason: string;
@@ -640,6 +669,7 @@ export type InsertJsxElementRequest = {
640
669
  };
641
670
  export type InsertJsxElementResponse = {
642
671
  success: true;
672
+ nodePathMutation: SequenceNodePathMutation;
643
673
  } | {
644
674
  success: false;
645
675
  reason: string;
@@ -693,6 +723,7 @@ export type InsertElementFileConflict = {
693
723
  };
694
724
  export type InsertElementResponse = {
695
725
  success: true;
726
+ nodePathMutation: SequenceNodePathMutation;
696
727
  } | {
697
728
  success: false;
698
729
  type: 'file-conflict';
@@ -756,10 +787,22 @@ export type ProjectInfoResponse = {
756
787
  };
757
788
  export type RestartStudioRequest = {};
758
789
  export type RestartStudioResponse = {};
759
- export type UpdatePublicLicenseRequest = {
760
- publicLicenseKey: string;
790
+ export type ConfigValue = string | number | boolean | null | ConfigValue[] | {
791
+ [key: string]: ConfigValue;
792
+ };
793
+ export type ConfigUpdate = {
794
+ setter: string;
795
+ type: 'delete';
796
+ } | {
797
+ setter: string;
798
+ type: 'set';
799
+ value: ConfigValue;
800
+ };
801
+ export type UpdateConfigRequest = {
802
+ clientId: string;
803
+ updates: ConfigUpdate[];
761
804
  };
762
- export type UpdatePublicLicenseResponse = {
805
+ export type UpdateConfigResponse = {
763
806
  success: true;
764
807
  } | {
765
808
  success: false;
@@ -772,33 +815,21 @@ export type GetDefaultEditorInfoResponse = {
772
815
  installedEditors: {
773
816
  id: EditorPickerId;
774
817
  name: string;
818
+ nameWithType: string;
775
819
  }[];
776
820
  };
777
- export type UpdateDefaultEditorRequest = {
778
- defaultEditor: EditorPickerId | null;
779
- };
780
- export type UpdateDefaultEditorResponse = {
781
- success: true;
782
- } | {
783
- success: false;
784
- reason: string;
785
- };
786
821
  export type GetDefaultCodingAgentInfoRequest = {};
787
822
  export type GetDefaultCodingAgentInfoResponse = {
788
823
  defaultCodingAgent: DefaultCodingAgent | null;
789
824
  installedCodingAgents: {
790
825
  id: DefaultCodingAgent;
791
826
  name: string;
827
+ nameWithType: string;
828
+ }[];
829
+ installedTerminals: {
830
+ id: TerminalId;
831
+ name: string;
792
832
  }[];
793
- };
794
- export type UpdateDefaultCodingAgentRequest = {
795
- defaultCodingAgent: DefaultCodingAgent | null;
796
- };
797
- export type UpdateDefaultCodingAgentResponse = {
798
- success: true;
799
- } | {
800
- success: false;
801
- reason: string;
802
833
  };
803
834
  export type PackageInstallSpec = {
804
835
  readonly name: string;
@@ -811,6 +842,7 @@ export type InstallPackageResponse = {};
811
842
  export type UndoRequest = {};
812
843
  export type UndoResponse = {
813
844
  success: true;
845
+ nodePathMutation: SequenceNodePathMutation | null;
814
846
  } | {
815
847
  success: false;
816
848
  reason: string;
@@ -818,6 +850,7 @@ export type UndoResponse = {
818
850
  export type RedoRequest = {};
819
851
  export type RedoResponse = {
820
852
  success: true;
853
+ nodePathMutation: SequenceNodePathMutation | null;
821
854
  } | {
822
855
  success: false;
823
856
  reason: string;
@@ -837,10 +870,11 @@ export type ApiRoutes = {
837
870
  '/api/subscribe-to-file-existence': ReqAndRes<SubscribeToFileExistenceRequest, SubscribeToFileExistenceResponse>;
838
871
  '/api/remove-render': ReqAndRes<RemoveRenderRequest, undefined>;
839
872
  '/api/open-in-editor': ReqAndRes<OpenInEditorRequest, OpenInEditorResponse>;
873
+ '/api/open-in-coding-agent': ReqAndRes<OpenInCodingAgentRequest, OpenInCodingAgentResponse>;
840
874
  '/api/default-coding-agent-info': ReqAndRes<GetDefaultCodingAgentInfoRequest, GetDefaultCodingAgentInfoResponse>;
841
- '/api/update-default-coding-agent': ReqAndRes<UpdateDefaultCodingAgentRequest, UpdateDefaultCodingAgentResponse>;
842
875
  '/api/find-in-file': ReqAndRes<FindInFileRequest, FindInFileResponse>;
843
876
  '/api/open-in-file-explorer': ReqAndRes<OpenInFileExplorerRequest, void>;
877
+ '/api/open-in-terminal': ReqAndRes<OpenInTerminalRequest, OpenInTerminalResponse>;
844
878
  '/api/register-client-render': ReqAndRes<CompletedClientRender, void>;
845
879
  '/api/unregister-client-render': ReqAndRes<{
846
880
  id: string;
@@ -882,10 +916,10 @@ export type ApiRoutes = {
882
916
  '/api/project-info': ReqAndRes<ProjectInfoRequest, ProjectInfoResponse>;
883
917
  '/api/delete-static-file': ReqAndRes<DeleteStaticFileRequest, DeleteStaticFileResponse>;
884
918
  '/api/rename-static-file': ReqAndRes<RenameStaticFileRequest, RenameStaticFileResponse>;
919
+ '/api/copy-render-output-to-asset': ReqAndRes<CopyRenderOutputToAssetRequest, CopyRenderOutputToAssetResponse>;
885
920
  '/api/restart-studio': ReqAndRes<RestartStudioRequest, RestartStudioResponse>;
886
- '/api/update-public-license': ReqAndRes<UpdatePublicLicenseRequest, UpdatePublicLicenseResponse>;
921
+ '/api/update-config': ReqAndRes<UpdateConfigRequest, UpdateConfigResponse>;
887
922
  '/api/default-editor-info': ReqAndRes<GetDefaultEditorInfoRequest, GetDefaultEditorInfoResponse>;
888
- '/api/update-default-editor': ReqAndRes<UpdateDefaultEditorRequest, UpdateDefaultEditorResponse>;
889
923
  '/api/install-package': ReqAndRes<InstallPackageRequest, InstallPackageResponse>;
890
924
  '/api/undo': ReqAndRes<UndoRequest, UndoResponse>;
891
925
  '/api/redo': ReqAndRes<RedoRequest, RedoResponse>;
@@ -0,0 +1,94 @@
1
+ export declare const configMethodLifecycles: {
2
+ readonly overrideBundlerConfig: "restart";
3
+ readonly overrideDuration: "runtime";
4
+ readonly overrideFfmpegCommand: "runtime";
5
+ readonly overrideFps: "runtime";
6
+ readonly overrideHeight: "runtime";
7
+ readonly overrideRspackConfig: "restart";
8
+ readonly overrideWebpackConfig: "restart";
9
+ readonly overrideWidth: "runtime";
10
+ readonly setAllowHtmlInCanvasEnabled: "runtime";
11
+ readonly setAskAIEnabled: "runtime";
12
+ readonly setAudioBitrate: "runtime";
13
+ readonly setAudioCodec: "runtime";
14
+ readonly setAudioLatencyHint: "reload";
15
+ readonly setBeepOnFinish: "runtime";
16
+ readonly setBenchmarkConcurrencies: "runtime";
17
+ readonly setBenchmarkRuns: "runtime";
18
+ readonly setBinariesDirectory: "restart";
19
+ readonly setBrowserExecutable: "runtime";
20
+ readonly setBufferStateDelayInMilliseconds: "runtime";
21
+ readonly setBundleOutDir: "runtime";
22
+ readonly setCachingEnabled: "runtime";
23
+ readonly setChromeMode: "runtime";
24
+ readonly setChromiumDarkMode: "runtime";
25
+ readonly setChromiumDisableWebSecurity: "runtime";
26
+ readonly setChromiumHeadlessMode: "runtime";
27
+ readonly setChromiumIgnoreCertificateErrors: "runtime";
28
+ readonly setChromiumMultiProcessOnLinux: "runtime";
29
+ readonly setChromiumOpenGlRenderer: "runtime";
30
+ readonly setChromiumUserAgent: "runtime";
31
+ readonly setCodec: "runtime";
32
+ readonly setColorSpace: "runtime";
33
+ readonly setConcurrency: "runtime";
34
+ readonly setCrf: "runtime";
35
+ readonly setDefaultCodingAgent: "runtime";
36
+ readonly setDefaultEditor: "runtime";
37
+ readonly setDelayRenderTimeoutInMilliseconds: "runtime";
38
+ readonly setDeleteAfter: "runtime";
39
+ readonly setDisallowParallelEncoding: "runtime";
40
+ readonly setDotEnvLocation: "restart";
41
+ readonly setEnableCrossSiteIsolation: "restart";
42
+ readonly setEnableFolderExpiry: "runtime";
43
+ readonly setEncodingBufferSize: "runtime";
44
+ readonly setEncodingMaxRate: "runtime";
45
+ readonly setEnforceAudioTrack: "runtime";
46
+ readonly setEntryPoint: "restart";
47
+ readonly setEveryNthFrame: "runtime";
48
+ readonly setExperimentalRspackEnabled: "restart";
49
+ readonly setForSeamlessAacConcatenation: "runtime";
50
+ readonly setForceNewStudioEnabled: "restart";
51
+ readonly setFrameRange: "runtime";
52
+ readonly setGopSize: "runtime";
53
+ readonly setHardwareAcceleration: "runtime";
54
+ readonly setIPv4: "restart";
55
+ readonly setImageFormat: "runtime";
56
+ readonly setImageSequence: "runtime";
57
+ readonly setImageSequencePattern: "runtime";
58
+ readonly setInteractivityEnabled: "runtime";
59
+ readonly setJpegQuality: "runtime";
60
+ readonly setKeyboardShortcutsEnabled: "runtime";
61
+ readonly setLambdaInsights: "runtime";
62
+ readonly setLevel: "restart";
63
+ readonly setLogLevel: "restart";
64
+ readonly setMaxTimelineTracks: "runtime";
65
+ readonly setMetadata: "runtime";
66
+ readonly setMuted: "runtime";
67
+ readonly setNumberOfGifLoops: "runtime";
68
+ readonly setNumberOfSharedAudioTags: "reload";
69
+ readonly setOffthreadVideoCacheSizeInBytes: "runtime";
70
+ readonly setOutputLocation: "runtime";
71
+ readonly setOverwriteOutput: "runtime";
72
+ readonly setPixelFormat: "runtime";
73
+ readonly setPort: "restart";
74
+ readonly setPreferLosslessAudio: "runtime";
75
+ readonly setPreviewSampleRate: "reload";
76
+ readonly setProResProfile: "runtime";
77
+ readonly setPublicDir: "restart";
78
+ readonly setPublicLicenseKey: "runtime";
79
+ readonly setPublicPath: "runtime";
80
+ readonly setQuality: "runtime";
81
+ readonly setRendererPort: "restart";
82
+ readonly setRepro: "runtime";
83
+ readonly setRspack: "restart";
84
+ readonly setSampleRate: "runtime";
85
+ readonly setScale: "runtime";
86
+ readonly setShouldOpenBrowser: "restart";
87
+ readonly setStillImageFormat: "runtime";
88
+ readonly setStudioPort: "restart";
89
+ readonly setTimeoutInMilliseconds: "runtime";
90
+ readonly setVideoBitrate: "runtime";
91
+ readonly setVideoImageFormat: "runtime";
92
+ readonly setWebpackPollingInMilliseconds: "restart";
93
+ readonly setX264Preset: "runtime";
94
+ };
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.configMethodLifecycles = void 0;
4
+ exports.configMethodLifecycles = {
5
+ overrideBundlerConfig: 'restart',
6
+ overrideDuration: 'runtime',
7
+ overrideFfmpegCommand: 'runtime',
8
+ overrideFps: 'runtime',
9
+ overrideHeight: 'runtime',
10
+ overrideRspackConfig: 'restart',
11
+ overrideWebpackConfig: 'restart',
12
+ overrideWidth: 'runtime',
13
+ setAllowHtmlInCanvasEnabled: 'runtime',
14
+ setAskAIEnabled: 'runtime',
15
+ setAudioBitrate: 'runtime',
16
+ setAudioCodec: 'runtime',
17
+ setAudioLatencyHint: 'reload',
18
+ setBeepOnFinish: 'runtime',
19
+ setBenchmarkConcurrencies: 'runtime',
20
+ setBenchmarkRuns: 'runtime',
21
+ setBinariesDirectory: 'restart',
22
+ setBrowserExecutable: 'runtime',
23
+ setBufferStateDelayInMilliseconds: 'runtime',
24
+ setBundleOutDir: 'runtime',
25
+ setCachingEnabled: 'runtime',
26
+ setChromeMode: 'runtime',
27
+ setChromiumDarkMode: 'runtime',
28
+ setChromiumDisableWebSecurity: 'runtime',
29
+ setChromiumHeadlessMode: 'runtime',
30
+ setChromiumIgnoreCertificateErrors: 'runtime',
31
+ setChromiumMultiProcessOnLinux: 'runtime',
32
+ setChromiumOpenGlRenderer: 'runtime',
33
+ setChromiumUserAgent: 'runtime',
34
+ setCodec: 'runtime',
35
+ setColorSpace: 'runtime',
36
+ setConcurrency: 'runtime',
37
+ setCrf: 'runtime',
38
+ setDefaultCodingAgent: 'runtime',
39
+ setDefaultEditor: 'runtime',
40
+ setDelayRenderTimeoutInMilliseconds: 'runtime',
41
+ setDeleteAfter: 'runtime',
42
+ setDisallowParallelEncoding: 'runtime',
43
+ setDotEnvLocation: 'restart',
44
+ setEnableCrossSiteIsolation: 'restart',
45
+ setEnableFolderExpiry: 'runtime',
46
+ setEncodingBufferSize: 'runtime',
47
+ setEncodingMaxRate: 'runtime',
48
+ setEnforceAudioTrack: 'runtime',
49
+ setEntryPoint: 'restart',
50
+ setEveryNthFrame: 'runtime',
51
+ setExperimentalRspackEnabled: 'restart',
52
+ setForSeamlessAacConcatenation: 'runtime',
53
+ setForceNewStudioEnabled: 'restart',
54
+ setFrameRange: 'runtime',
55
+ setGopSize: 'runtime',
56
+ setHardwareAcceleration: 'runtime',
57
+ setIPv4: 'restart',
58
+ setImageFormat: 'runtime',
59
+ setImageSequence: 'runtime',
60
+ setImageSequencePattern: 'runtime',
61
+ setInteractivityEnabled: 'runtime',
62
+ setJpegQuality: 'runtime',
63
+ setKeyboardShortcutsEnabled: 'runtime',
64
+ setLambdaInsights: 'runtime',
65
+ setLevel: 'restart',
66
+ setLogLevel: 'restart',
67
+ setMaxTimelineTracks: 'runtime',
68
+ setMetadata: 'runtime',
69
+ setMuted: 'runtime',
70
+ setNumberOfGifLoops: 'runtime',
71
+ setNumberOfSharedAudioTags: 'reload',
72
+ setOffthreadVideoCacheSizeInBytes: 'runtime',
73
+ setOutputLocation: 'runtime',
74
+ setOverwriteOutput: 'runtime',
75
+ setPixelFormat: 'runtime',
76
+ setPort: 'restart',
77
+ setPreferLosslessAudio: 'runtime',
78
+ setPreviewSampleRate: 'reload',
79
+ setProResProfile: 'runtime',
80
+ setPublicDir: 'restart',
81
+ setPublicLicenseKey: 'runtime',
82
+ setPublicPath: 'runtime',
83
+ setQuality: 'runtime',
84
+ setRendererPort: 'restart',
85
+ setRepro: 'runtime',
86
+ setRspack: 'restart',
87
+ setSampleRate: 'runtime',
88
+ setScale: 'runtime',
89
+ setShouldOpenBrowser: 'restart',
90
+ setStillImageFormat: 'runtime',
91
+ setStudioPort: 'restart',
92
+ setTimeoutInMilliseconds: 'runtime',
93
+ setVideoBitrate: 'runtime',
94
+ setVideoImageFormat: 'runtime',
95
+ setWebpackPollingInMilliseconds: 'restart',
96
+ setX264Preset: 'runtime',
97
+ };
@@ -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;
@@ -10,6 +10,7 @@ const isFiniteNumber = (value) => {
10
10
  const isKeyframeEasing = (value) => {
11
11
  return (isRecord(value) &&
12
12
  (value.type === 'linear' ||
13
+ value.type === 'step1' ||
13
14
  (value.type === 'bezier' &&
14
15
  isFiniteNumber(value.x1) &&
15
16
  isFiniteNumber(value.y1) &&
@@ -89,6 +89,17 @@ exports.EFFECT_CATALOG = [
89
89
  config: {},
90
90
  },
91
91
  },
92
+ {
93
+ id: 'effects-exposure',
94
+ category: 'Color',
95
+ label: 'exposure()',
96
+ description: 'Stop-based exposure adjustment',
97
+ effect: {
98
+ name: 'exposure',
99
+ importPath: '@remotion/effects/exposure',
100
+ config: {},
101
+ },
102
+ },
92
103
  {
93
104
  id: 'effects-grayscale',
94
105
  category: 'Color',
@@ -122,6 +133,17 @@ exports.EFFECT_CATALOG = [
122
133
  config: {},
123
134
  },
124
135
  },
136
+ {
137
+ id: 'effects-levels',
138
+ category: 'Color',
139
+ label: 'levels()',
140
+ description: 'Black point, white point, and gamma',
141
+ effect: {
142
+ name: 'levels',
143
+ importPath: '@remotion/effects/levels',
144
+ config: {},
145
+ },
146
+ },
125
147
  {
126
148
  id: 'effects-saturation',
127
149
  category: 'Color',
@@ -133,6 +155,17 @@ exports.EFFECT_CATALOG = [
133
155
  config: {},
134
156
  },
135
157
  },
158
+ {
159
+ id: 'effects-shadows-highlights',
160
+ category: 'Color',
161
+ label: 'shadowsHighlights()',
162
+ description: 'Recover dark and bright tonal regions',
163
+ effect: {
164
+ name: 'shadowsHighlights',
165
+ importPath: '@remotion/effects/shadows-highlights',
166
+ config: {},
167
+ },
168
+ },
136
169
  {
137
170
  id: 'effects-tint',
138
171
  category: 'Color',
@@ -146,6 +179,28 @@ exports.EFFECT_CATALOG = [
146
179
  },
147
180
  },
148
181
  },
182
+ {
183
+ id: 'effects-white-balance',
184
+ category: 'Color',
185
+ label: 'whiteBalance()',
186
+ description: 'Temperature and tint correction',
187
+ effect: {
188
+ name: 'whiteBalance',
189
+ importPath: '@remotion/effects/white-balance',
190
+ config: {},
191
+ },
192
+ },
193
+ {
194
+ id: 'effects-vibrance',
195
+ category: 'Color',
196
+ label: 'vibrance()',
197
+ description: 'Selective saturation adjustment',
198
+ effect: {
199
+ name: 'vibrance',
200
+ importPath: '@remotion/effects/vibrance',
201
+ config: {},
202
+ },
203
+ },
149
204
  {
150
205
  id: 'effects-linear-gradient',
151
206
  category: 'Color',
@@ -214,6 +269,20 @@ exports.EFFECT_CATALOG = [
214
269
  config: {},
215
270
  },
216
271
  },
272
+ {
273
+ id: 'effects-region-blur',
274
+ category: 'Blur & Shadow',
275
+ label: 'regionBlur()',
276
+ description: 'Blur a rectangular or rounded region',
277
+ effect: {
278
+ name: 'regionBlur',
279
+ importPath: '@remotion/effects/region-blur',
280
+ config: {
281
+ topLeft: [0.28, 0.18],
282
+ bottomRight: [0.72, 0.82],
283
+ },
284
+ },
285
+ },
217
286
  {
218
287
  id: 'effects-zoom-blur',
219
288
  category: 'Blur & Shadow',
@@ -13,6 +13,7 @@ const isFiniteNumber = (value) => {
13
13
  const isEasing = (value) => {
14
14
  return (isRecord(value) &&
15
15
  (value.type === 'linear' ||
16
+ value.type === 'step1' ||
16
17
  (value.type === 'bezier' &&
17
18
  isFiniteNumber(value.x1) &&
18
19
  isFiniteNumber(value.y1) &&
@@ -4,6 +4,7 @@ export type ElementDragData = {
4
4
  type: 'remotion-element';
5
5
  version: 1;
6
6
  element: {
7
+ dependencies: string[];
7
8
  slug: string;
8
9
  displayName: string;
9
10
  sourceCode: string;
@@ -13,7 +14,8 @@ export type ElementDragData = {
13
14
  export declare const isLowercaseElementFileName: (value: unknown) => value is string;
14
15
  export declare const makeElementFileNameFromSlug: (slug: string) => string | null;
15
16
  export declare const getElementComponentNameFromSourceCode: (sourceCode: string) => string | null;
16
- export declare const makeElementDragData: ({ dimensions, displayName, slug, sourceCode, }: {
17
+ export declare const makeElementDragData: ({ dependencies, dimensions, displayName, slug, sourceCode, }: {
18
+ dependencies: string[];
17
19
  slug: string;
18
20
  displayName: string;
19
21
  sourceCode: string;
@@ -2,6 +2,7 @@
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");
5
6
  const drag_mime_types_1 = require("./drag-mime-types");
6
7
  Object.defineProperty(exports, "ELEMENT_DRAG_MIME_TYPE", { enumerable: true, get: function () { return drag_mime_types_1.ELEMENT_DRAG_MIME_TYPE; } });
7
8
  const isRecord = (value) => {
@@ -48,6 +49,11 @@ const isSourceCode = (value) => {
48
49
  value.trim().length > 0 &&
49
50
  value.length < 200000);
50
51
  };
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
+ };
51
57
  const isDimensions = (value) => {
52
58
  if (!isRecord(value)) {
53
59
  return false;
@@ -69,11 +75,12 @@ const getElementComponentNameFromSourceCode = (sourceCode) => {
69
75
  return (0, component_drag_data_1.isComponentIdentifier)(componentName) ? componentName : null;
70
76
  };
71
77
  exports.getElementComponentNameFromSourceCode = getElementComponentNameFromSourceCode;
72
- const makeElementDragData = ({ dimensions, displayName, slug, sourceCode, }) => {
78
+ const makeElementDragData = ({ dependencies, dimensions, displayName, slug, sourceCode, }) => {
73
79
  return {
74
80
  type: 'remotion-element',
75
81
  version: 1,
76
82
  element: {
83
+ dependencies: Array.from(new Set(dependencies)),
77
84
  slug,
78
85
  displayName,
79
86
  sourceCode,
@@ -94,18 +101,20 @@ const parseElementDragData = (value) => {
94
101
  if (!isRecord(parsed.element)) {
95
102
  return null;
96
103
  }
97
- const { dimensions, displayName, slug, sourceCode } = parsed.element;
104
+ const { dependencies, dimensions, displayName, slug, sourceCode } = parsed.element;
98
105
  if (!isSlug(slug) ||
99
106
  !isDisplayName(displayName) ||
100
107
  !isSourceCode(sourceCode) ||
101
108
  (0, exports.getElementComponentNameFromSourceCode)(sourceCode) === null ||
102
109
  (0, exports.makeElementFileNameFromSlug)(slug) === null ||
110
+ (dependencies !== undefined && !isDependencies(dependencies)) ||
103
111
  (dimensions !== undefined &&
104
112
  dimensions !== null &&
105
113
  !isDimensions(dimensions))) {
106
114
  return null;
107
115
  }
108
116
  return (0, exports.makeElementDragData)({
117
+ dependencies: dependencies !== null && dependencies !== void 0 ? dependencies : [],
109
118
  slug,
110
119
  displayName,
111
120
  sourceCode,