@remotion/studio-shared 4.0.520 → 4.0.522
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.
- package/dist/api-requests.d.ts +5 -0
- package/dist/codemods.d.ts +21 -0
- package/dist/define-plugin-definitions.d.ts +3 -1
- package/dist/define-plugin-definitions.js +2 -1
- package/dist/element-drag-data.d.ts +1 -3
- package/dist/element-drag-data.js +2 -11
- package/dist/esm/index.mjs +5 -1
- package/dist/esm/keyframe-interpolation-function.mjs +2 -0
- package/dist/index.d.ts +2 -2
- package/dist/keyframe-clipboard-data.d.ts +1 -0
- package/dist/keyframe-clipboard-data.js +1 -0
- package/dist/keyframe-interpolation-function.js +2 -0
- package/dist/optimistic-update-for-code-values.d.ts +7 -0
- package/dist/optimistic-update-for-code-values.js +30 -0
- package/dist/optimistic-update-for-effect-code-values.d.ts +8 -0
- package/dist/optimistic-update-for-effect-code-values.js +43 -0
- package/dist/package-info.js +1 -1
- package/dist/package-manager.d.ts +1 -1
- package/dist/schema-field-info.d.ts +1 -0
- package/dist/schema-field-info.js +1 -0
- package/dist/shape-drag-data.d.ts +22 -0
- package/dist/shape-drag-data.js +90 -0
- package/package.json +4 -4
package/dist/api-requests.d.ts
CHANGED
|
@@ -883,6 +883,7 @@ export type ProjectInfoRequest = {};
|
|
|
883
883
|
export type ProjectInfoResponse = {
|
|
884
884
|
projectInfo: ProjectInfo;
|
|
885
885
|
};
|
|
886
|
+
export type ShutdownStudioResponse = {};
|
|
886
887
|
export type RestartStudioRequest = {};
|
|
887
888
|
export type RestartStudioResponse = {};
|
|
888
889
|
export type ConfigValue = string | number | boolean | null | ConfigValue[] | {
|
|
@@ -1023,6 +1024,10 @@ export type ApiRoutes = {
|
|
|
1023
1024
|
'/api/delete-static-file': ReqAndRes<DeleteStaticFileRequest, DeleteStaticFileResponse>;
|
|
1024
1025
|
'/api/rename-static-file': ReqAndRes<RenameStaticFileRequest, RenameStaticFileResponse>;
|
|
1025
1026
|
'/api/copy-render-output-to-asset': ReqAndRes<CopyRenderOutputToAssetRequest, CopyRenderOutputToAssetResponse>;
|
|
1027
|
+
'/api/upgrade-remotion': ReqAndRes<{
|
|
1028
|
+
version: string;
|
|
1029
|
+
}, {}>;
|
|
1030
|
+
'/api/shutdown-studio': ReqAndRes<{}, ShutdownStudioResponse>;
|
|
1026
1031
|
'/api/restart-studio': ReqAndRes<RestartStudioRequest, RestartStudioResponse>;
|
|
1027
1032
|
'/api/update-config': ReqAndRes<UpdateConfigRequest, UpdateConfigResponse>;
|
|
1028
1033
|
'/api/default-editor-info': ReqAndRes<GetDefaultEditorInfoRequest, GetDefaultEditorInfoResponse>;
|
package/dist/codemods.d.ts
CHANGED
|
@@ -10,6 +10,14 @@ export type ApplyVisualControlCodemod = {
|
|
|
10
10
|
type: 'apply-visual-control';
|
|
11
11
|
changes: VisualControlChange[];
|
|
12
12
|
};
|
|
13
|
+
export type CompositionOrFolder = {
|
|
14
|
+
type: 'composition';
|
|
15
|
+
compositionId: string;
|
|
16
|
+
} | {
|
|
17
|
+
type: 'folder';
|
|
18
|
+
folderName: string;
|
|
19
|
+
parentName: string | null;
|
|
20
|
+
};
|
|
13
21
|
export type RecastCodemod = {
|
|
14
22
|
type: 'new-composition';
|
|
15
23
|
newId: string;
|
|
@@ -56,6 +64,19 @@ export type RecastCodemod = {
|
|
|
56
64
|
idToMove: string;
|
|
57
65
|
folderName: string | null;
|
|
58
66
|
parentName: string | null;
|
|
67
|
+
} | {
|
|
68
|
+
type: 'move-composition-or-folder';
|
|
69
|
+
source: CompositionOrFolder;
|
|
70
|
+
destination: {
|
|
71
|
+
type: 'root';
|
|
72
|
+
} | {
|
|
73
|
+
type: 'folder';
|
|
74
|
+
folderName: string;
|
|
75
|
+
parentName: string | null;
|
|
76
|
+
} | {
|
|
77
|
+
type: 'before' | 'after';
|
|
78
|
+
target: CompositionOrFolder;
|
|
79
|
+
};
|
|
59
80
|
} | {
|
|
60
81
|
type: 'rename-folder';
|
|
61
82
|
folderName: string;
|
|
@@ -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;
|
|
@@ -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: ({
|
|
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 = ({
|
|
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 {
|
|
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,
|
package/dist/esm/index.mjs
CHANGED
|
@@ -1502,6 +1502,7 @@ var KEYFRAME_FIELD_TYPE_SUPPORT = {
|
|
|
1502
1502
|
color: true,
|
|
1503
1503
|
enum: true,
|
|
1504
1504
|
"font-family": false,
|
|
1505
|
+
"font-weight": false,
|
|
1505
1506
|
hidden: true,
|
|
1506
1507
|
number: true,
|
|
1507
1508
|
"rotation-css": true,
|
|
@@ -1520,6 +1521,7 @@ var KEYFRAME_FIELD_TYPE_INTERPOLATION = {
|
|
|
1520
1521
|
color: "interpolateColors",
|
|
1521
1522
|
enum: "interpolate",
|
|
1522
1523
|
"font-family": "unsupported",
|
|
1524
|
+
"font-weight": "unsupported",
|
|
1523
1525
|
hidden: "infer",
|
|
1524
1526
|
number: "infer",
|
|
1525
1527
|
"rotation-css": "interpolate",
|
|
@@ -1784,6 +1786,7 @@ var KEYFRAME_CLIPBOARD_FIELD_TYPE_SUPPORT = {
|
|
|
1784
1786
|
color: true,
|
|
1785
1787
|
enum: false,
|
|
1786
1788
|
"font-family": false,
|
|
1789
|
+
"font-weight": false,
|
|
1787
1790
|
hidden: false,
|
|
1788
1791
|
number: true,
|
|
1789
1792
|
"rotation-css": true,
|
|
@@ -2360,7 +2363,7 @@ var extraPackages = [
|
|
|
2360
2363
|
},
|
|
2361
2364
|
{
|
|
2362
2365
|
name: "zod",
|
|
2363
|
-
version: "4.4
|
|
2366
|
+
version: "4.5.4",
|
|
2364
2367
|
description: "TypeScript-first schema validation",
|
|
2365
2368
|
docsUrl: "https://zod.dev"
|
|
2366
2369
|
}
|
|
@@ -3036,6 +3039,7 @@ var TIMELINE_SCHEMA_FIELD_TYPE_SUPPORT = {
|
|
|
3036
3039
|
color: true,
|
|
3037
3040
|
enum: true,
|
|
3038
3041
|
"font-family": true,
|
|
3042
|
+
"font-weight": true,
|
|
3039
3043
|
hidden: false,
|
|
3040
3044
|
number: true,
|
|
3041
3045
|
"rotation-css": true,
|
|
@@ -11,6 +11,7 @@ var KEYFRAME_FIELD_TYPE_SUPPORT = {
|
|
|
11
11
|
color: true,
|
|
12
12
|
enum: true,
|
|
13
13
|
"font-family": false,
|
|
14
|
+
"font-weight": false,
|
|
14
15
|
hidden: true,
|
|
15
16
|
number: true,
|
|
16
17
|
"rotation-css": true,
|
|
@@ -29,6 +30,7 @@ var KEYFRAME_FIELD_TYPE_INTERPOLATION = {
|
|
|
29
30
|
color: "interpolateColors",
|
|
30
31
|
enum: "interpolate",
|
|
31
32
|
"font-family": "unsupported",
|
|
33
|
+
"font-weight": "unsupported",
|
|
32
34
|
hidden: "infer",
|
|
33
35
|
number: "infer",
|
|
34
36
|
"rotation-css": "interpolate",
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
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, ComponentProp, ConvertFigmaClipboardToSvgRequest, ConvertFigmaClipboardToSvgResponse, CopyRenderOutputToAssetRequest, CopyRenderOutputToAssetResponse, CopyStillToClipboardRequest, DeleteEffectKeyframe, DeleteEffectRequest, DeleteEffectRequestItem, DeleteEffectResponse, DeleteJsxNodeRequest, DeleteJsxNodeRequestItem, DeleteJsxNodeResponse, DeleteKeyframesRequest, DeleteKeyframesResponse, DeleteSequenceKeyframe, DeleteStaticFileRequest, DeleteStaticFileResponse, DownloadRemoteAssetRequest, DownloadRemoteAssetResponse, DuplicateEffectRequest, DuplicateEffectRequestItem, DuplicateEffectResponse, DuplicateJsxNodeRequest, DuplicateJsxNodeRequestItem, DuplicateJsxNodeResponse, EditorPickerId, EffectDefinition, ElementInstallDestination, ElementInstallExpectedFileState, ElementInstallRequest, ElementInstallSource, FindInFileRequest, FindInFileResponse, GetDefaultCodingAgentInfoRequest, GetDefaultCodingAgentInfoResponse, GetDefaultEditorInfoRequest, GetDefaultEditorInfoResponse, GetRemotionSkillsInfoRequest, GetRemotionSkillsInfoResponse, GetReleaseNotesRequest, GetReleaseNotesResponse, GoogleFontSourceEdit, InsertElementFileConflict, InsertElementRequest, InsertElementResponse, InsertJsxElementRequest, InsertJsxElementResponse, InsertableCompositionElement, InsertableCompositionElementPosition, InstallableElement, 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';
|
|
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, ComponentProp, ConvertFigmaClipboardToSvgRequest, ConvertFigmaClipboardToSvgResponse, CopyRenderOutputToAssetRequest, CopyRenderOutputToAssetResponse, CopyStillToClipboardRequest, DeleteEffectKeyframe, DeleteEffectRequest, DeleteEffectRequestItem, DeleteEffectResponse, DeleteJsxNodeRequest, DeleteJsxNodeRequestItem, DeleteJsxNodeResponse, DeleteKeyframesRequest, DeleteKeyframesResponse, DeleteSequenceKeyframe, DeleteStaticFileRequest, DeleteStaticFileResponse, DownloadRemoteAssetRequest, DownloadRemoteAssetResponse, DuplicateEffectRequest, DuplicateEffectRequestItem, DuplicateEffectResponse, DuplicateJsxNodeRequest, DuplicateJsxNodeRequestItem, DuplicateJsxNodeResponse, EditorPickerId, EffectDefinition, ElementInstallDestination, ElementInstallExpectedFileState, ElementInstallRequest, ElementInstallSource, FindInFileRequest, FindInFileResponse, GetDefaultCodingAgentInfoRequest, GetDefaultCodingAgentInfoResponse, GetDefaultEditorInfoRequest, GetDefaultEditorInfoResponse, GetRemotionSkillsInfoRequest, GetRemotionSkillsInfoResponse, GetReleaseNotesRequest, GetReleaseNotesResponse, GoogleFontSourceEdit, InsertElementFileConflict, InsertElementRequest, InsertElementResponse, InsertJsxElementRequest, InsertJsxElementResponse, InsertableCompositionElement, InsertableCompositionElementPosition, InstallableElement, 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, ShutdownStudioResponse, 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
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';
|
|
9
|
-
export type { ApplyVisualControlCodemod, RecastCodemod } from './codemods';
|
|
9
|
+
export type { ApplyVisualControlCodemod, CompositionOrFolder, RecastCodemod, } from './codemods';
|
|
10
10
|
export { REACT_REFRESH_FINISHED_EVENT } from './react-refresh-event';
|
|
11
11
|
export { hasSequenceTimingTraits } from './has-sequence-timing-traits';
|
|
12
12
|
export { getConfigFileChangeMessage, type ConfigFileChangeType, } from './config-file-change';
|
|
@@ -15,6 +15,7 @@ const KEYFRAME_FIELD_TYPE_SUPPORT = {
|
|
|
15
15
|
color: true,
|
|
16
16
|
enum: true,
|
|
17
17
|
'font-family': false,
|
|
18
|
+
'font-weight': false,
|
|
18
19
|
hidden: true,
|
|
19
20
|
number: true,
|
|
20
21
|
'rotation-css': true,
|
|
@@ -33,6 +34,7 @@ const KEYFRAME_FIELD_TYPE_INTERPOLATION = {
|
|
|
33
34
|
color: 'interpolateColors',
|
|
34
35
|
enum: 'interpolate',
|
|
35
36
|
'font-family': 'unsupported',
|
|
37
|
+
'font-weight': 'unsupported',
|
|
36
38
|
hidden: 'infer',
|
|
37
39
|
number: 'infer',
|
|
38
40
|
'rotation-css': 'interpolate',
|
|
@@ -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;
|
package/dist/package-info.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export type PackageManager = 'npm' | 'yarn' | 'pnpm' | 'bun';
|
|
1
|
+
export type PackageManager = 'npm' | 'yarn' | 'pnpm' | 'bun' | 'nub';
|
|
@@ -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;
|
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.
|
|
6
|
+
"version": "4.0.522",
|
|
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,11 +21,11 @@
|
|
|
21
21
|
"url": "https://github.com/remotion-dev/remotion/issues"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"remotion": "4.0.
|
|
24
|
+
"remotion": "4.0.522"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@remotion/renderer": "4.0.
|
|
28
|
-
"@remotion/eslint-config-internal": "4.0.
|
|
27
|
+
"@remotion/renderer": "4.0.522",
|
|
28
|
+
"@remotion/eslint-config-internal": "4.0.522",
|
|
29
29
|
"eslint": "9.19.0",
|
|
30
30
|
"@typescript/native-preview": "7.0.0-dev.20260217.1"
|
|
31
31
|
},
|