@remotion/studio-shared 4.0.514 → 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.
- package/dist/browser-studio-operations.d.ts +23 -3
- package/dist/config-method-lifecycles.d.ts +1 -0
- package/dist/config-method-lifecycles.js +1 -0
- package/dist/define-plugin-definitions.d.ts +3 -1
- package/dist/define-plugin-definitions.js +2 -1
- package/dist/effect-catalog.js +14 -0
- package/dist/element-drag-data.d.ts +1 -3
- package/dist/element-drag-data.js +2 -11
- package/dist/esm/index.mjs +17 -1
- package/dist/esm/studio-html.mjs +2 -1
- package/dist/index.d.ts +1 -1
- 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/shape-drag-data.d.ts +22 -0
- package/dist/shape-drag-data.js +90 -0
- package/dist/studio-html.d.ts +2 -1
- package/dist/studio-html.js +2 -2
- package/package.json +5 -5
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ElementDragData } from '@remotion/studio-protocol';
|
|
2
|
-
import type { AddEffectKeyframeRequest, AddEffectKeyframeResponse, AddKeyframesRequest, AddKeyframesResponse, AddSequenceKeyframeRequest, AddSequenceKeyframeResponse, ApplyCodemodRequest, ApplyCodemodResponse, BatchUpdateKeyframeSettingsRequest, BatchUpdateKeyframeSettingsResponse, CompositionComponentInfoRequest, CompositionComponentInfoResponse, DeleteJsxNodeRequest, DeleteJsxNodeResponse, DeleteKeyframesRequest, DeleteKeyframesResponse, DeleteStaticFileRequest, DeleteStaticFileResponse, FindInFileRequest, FindInFileResponse, InsertJsxElementRequest, InsertJsxElementResponse, InsertElementRequest, InsertElementResponse, MoveKeyframesRequest, MoveKeyframesResponse, PrepareElementInstallRequest, PrepareElementInstallResponse, RedoResponse, RenameStaticFileRequest, RenameStaticFileResponse, ReorderSequenceRequest, ReorderSequenceResponse, SaveSequencePropsRequest, SaveSequencePropsResponse, SimpleDiff, SplitJsxSequenceRequest, SplitJsxSequenceResponse, SplitVideoFromAudioRequest, SplitVideoFromAudioResponse, SubscribeToDefaultPropsRequest, SubscribeToDefaultPropsResponse, SubscribeToSequencePropsRequest, SubscribeToSequencePropsResponse, UndoResponse, UnsubscribeFromDefaultPropsRequest, UnsubscribeFromSequencePropsRequest, UpdateDefaultPropsRequest, UpdateDefaultPropsResponse, UpdateEffectKeyframeSettingsRequest, UpdateEffectKeyframeSettingsResponse, UpdateSequenceKeyframeSettingsRequest, UpdateSequenceKeyframeSettingsResponse } from './api-requests';
|
|
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
3
|
import type { RecastCodemod } from './codemods';
|
|
4
4
|
import type { EventSourceEvent } from './event-source-event';
|
|
5
5
|
export type WriteStaticFileRequest = {
|
|
@@ -30,6 +30,25 @@ export type BrowserStudioKeyframeOperations = {
|
|
|
30
30
|
updateEffectKeyframeSettings: (request: UpdateEffectKeyframeSettingsRequest) => Promise<UpdateEffectKeyframeSettingsResponse>;
|
|
31
31
|
updateSequenceKeyframeSettings: (request: UpdateSequenceKeyframeSettingsRequest) => Promise<UpdateSequenceKeyframeSettingsResponse>;
|
|
32
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
|
+
};
|
|
33
52
|
export type BrowserStudioOperations = {
|
|
34
53
|
consumeInitialElement: () => {
|
|
35
54
|
element: ElementDragData['element'];
|
|
@@ -43,6 +62,7 @@ export type BrowserStudioOperations = {
|
|
|
43
62
|
fileName: string;
|
|
44
63
|
}>;
|
|
45
64
|
duplicateComposition: (request: DuplicateCompositionRequest) => Promise<DuplicateCompositionResponse>;
|
|
65
|
+
effects: BrowserStudioEffectOperations;
|
|
46
66
|
findInFile: (request: FindInFileRequest) => Promise<FindInFileResponse>;
|
|
47
67
|
getFileSource: (fileName: string) => Promise<string | null>;
|
|
48
68
|
getCompositionFile: (compositionId: string) => string | null;
|
|
@@ -50,8 +70,8 @@ export type BrowserStudioOperations = {
|
|
|
50
70
|
insertSolid: (request: InsertJsxElementRequest) => Promise<InsertJsxElementResponse>;
|
|
51
71
|
insertElement: (request: InsertElementRequest) => Promise<InsertElementResponse>;
|
|
52
72
|
insertJsxElement: (request: InsertJsxElementRequest) => Promise<InsertJsxElementResponse>;
|
|
53
|
-
|
|
54
|
-
|
|
73
|
+
keyframes: BrowserStudioKeyframeOperations;
|
|
74
|
+
packageInstallation: BrowserStudioPackageInstallationOperations;
|
|
55
75
|
prepareElementInstall: (request: PrepareElementInstallRequest) => Promise<PrepareElementInstallResponse>;
|
|
56
76
|
redo: () => Promise<RedoResponse>;
|
|
57
77
|
renameStaticFile: (request: RenameStaticFileRequest) => Promise<RenameStaticFileResponse>;
|
|
@@ -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;
|
package/dist/effect-catalog.js
CHANGED
|
@@ -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: ({
|
|
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
|
@@ -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",
|
|
@@ -3206,6 +3221,7 @@ var studioHtml = ({
|
|
|
3206
3221
|
logLevel,
|
|
3207
3222
|
mode,
|
|
3208
3223
|
bundleScriptUrl,
|
|
3224
|
+
bundleScriptType,
|
|
3209
3225
|
readOnlyStudio,
|
|
3210
3226
|
studioRuntimeConfig
|
|
3211
3227
|
}) => {
|
|
@@ -3273,7 +3289,7 @@ var studioHtml = ({
|
|
|
3273
3289
|
<div id="menuportal-3"></div>
|
|
3274
3290
|
<div id="menuportal-4"></div>
|
|
3275
3291
|
<div id="menuportal-5"></div>
|
|
3276
|
-
<script src="${scriptUrl}"></script>
|
|
3292
|
+
<script${bundleScriptType === "module" ? ' type="module"' : ""} src="${scriptUrl}"></script>
|
|
3277
3293
|
</body>
|
|
3278
3294
|
</html>
|
|
3279
3295
|
`.trim();
|
package/dist/esm/studio-html.mjs
CHANGED
|
@@ -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
|
@@ -2,7 +2,7 @@ export { splitAnsi, stripAnsi } from './ansi';
|
|
|
2
2
|
export type { TerminalId } from './terminal';
|
|
3
3
|
export type { GitClientId } from './git-client';
|
|
4
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, BrowserStudioOperations, DuplicateCompositionRequest, DuplicateCompositionResponse, } from './browser-studio-operations';
|
|
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';
|
|
@@ -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;
|
|
@@ -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/dist/studio-html.d.ts
CHANGED
|
@@ -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;
|
package/dist/studio-html.js
CHANGED
|
@@ -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();
|
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.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.
|
|
25
|
-
"remotion": "4.0.
|
|
24
|
+
"@remotion/studio-protocol": "4.0.515",
|
|
25
|
+
"remotion": "4.0.515"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
|
-
"@remotion/renderer": "4.0.
|
|
29
|
-
"@remotion/eslint-config-internal": "4.0.
|
|
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
|
},
|