@remotion/studio-shared 4.0.515 → 4.0.517
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/browser-studio-operations.d.ts +3 -1
- package/dist/config-method-lifecycles.d.ts +1 -0
- package/dist/config-method-lifecycles.js +1 -0
- package/dist/define-plugin-definitions.d.ts +1 -3
- package/dist/define-plugin-definitions.js +1 -2
- package/dist/element-drag-data.d.ts +3 -1
- package/dist/element-drag-data.js +11 -2
- package/dist/esm/index.mjs +66 -0
- package/dist/esm/studio-entry-points.mjs +2 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +8 -2
- package/dist/package-info.d.ts +2 -2
- package/dist/package-info.js +8 -0
- package/dist/remote-asset.d.ts +13 -0
- package/dist/remote-asset.js +62 -0
- package/dist/studio-entry-points.d.ts +2 -1
- package/dist/studio-entry-points.js +2 -1
- package/dist/studio-runtime-config.d.ts +5 -0
- package/package.json +5 -5
- package/dist/optimistic-update-for-code-values.d.ts +0 -7
- package/dist/optimistic-update-for-code-values.js +0 -30
- package/dist/optimistic-update-for-effect-code-values.d.ts +0 -8
- package/dist/optimistic-update-for-effect-code-values.js +0 -43
- package/dist/shape-drag-data.d.ts +0 -22
- package/dist/shape-drag-data.js +0 -90
package/dist/api-requests.d.ts
CHANGED
|
@@ -817,6 +817,11 @@ export type GetRemotionSkillsInfoRequest = {};
|
|
|
817
817
|
export type GetRemotionSkillsInfoResponse = {
|
|
818
818
|
remotionUpgradeSkillAvailable: boolean;
|
|
819
819
|
remotionInteractivitySkillAvailable: boolean;
|
|
820
|
+
skills: {
|
|
821
|
+
name: string;
|
|
822
|
+
installedInProject: boolean;
|
|
823
|
+
installedGlobally: boolean;
|
|
824
|
+
}[];
|
|
820
825
|
};
|
|
821
826
|
export type ProjectInfoRequest = {};
|
|
822
827
|
export type ProjectInfoResponse = {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ElementDragData } from '@remotion/studio-protocol';
|
|
2
|
-
import type { AddEffectKeyframeRequest, AddEffectKeyframeResponse, AddEffectRequest, AddEffectResponse, AddKeyframesRequest, AddKeyframesResponse, AddSequenceKeyframeRequest, AddSequenceKeyframeResponse, ApplyCodemodRequest, ApplyCodemodResponse, BatchUpdateKeyframeSettingsRequest, BatchUpdateKeyframeSettingsResponse, CompositionComponentInfoRequest, CompositionComponentInfoResponse, DeleteJsxNodeRequest, DeleteJsxNodeResponse, DeleteKeyframesRequest, DeleteKeyframesResponse, DeleteEffectRequest, DeleteEffectResponse, DeleteStaticFileRequest, DeleteStaticFileResponse, FindInFileRequest, FindInFileResponse, DuplicateEffectRequest, DuplicateEffectResponse, InsertJsxElementRequest, InsertJsxElementResponse, InsertElementRequest, InsertElementResponse, InstallPackageRequest, MoveKeyframesRequest, MoveKeyframesResponse, PasteEffectsRequest, PasteEffectsResponse, PrepareElementInstallRequest, PrepareElementInstallResponse, RedoResponse, RenameStaticFileRequest, RenameStaticFileResponse, ReorderEffectRequest, ReorderEffectResponse, ReorderSequenceRequest, ReorderSequenceResponse, SaveSequencePropsRequest, SaveSequencePropsResponse, SaveEffectPropsRequest, SaveEffectPropsResponse, SaveMultipleEffectPropsRequest, SaveMultipleEffectPropsResponse, SimpleDiff, SplitJsxSequenceRequest, SplitJsxSequenceResponse, SplitVideoFromAudioRequest, SplitVideoFromAudioResponse, SubscribeToDefaultPropsRequest, SubscribeToDefaultPropsResponse, SubscribeToSequencePropsRequest, SubscribeToSequencePropsResponse, UndoResponse, UnsubscribeFromDefaultPropsRequest, UnsubscribeFromSequencePropsRequest, UpdateDefaultPropsRequest, UpdateDefaultPropsResponse, UpdateEffectKeyframeSettingsRequest, UpdateEffectKeyframeSettingsResponse, UpdateSequenceKeyframeSettingsRequest, UpdateSequenceKeyframeSettingsResponse } from './api-requests';
|
|
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, DownloadRemoteAssetRequest, DownloadRemoteAssetResponse, FindInFileRequest, FindInFileResponse, DuplicateEffectRequest, DuplicateEffectResponse, DuplicateJsxNodeRequest, DuplicateJsxNodeResponse, 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 = {
|
|
@@ -61,7 +61,9 @@ export type BrowserStudioOperations = {
|
|
|
61
61
|
data: Uint8Array;
|
|
62
62
|
fileName: string;
|
|
63
63
|
}>;
|
|
64
|
+
downloadRemoteAsset: (request: DownloadRemoteAssetRequest) => Promise<DownloadRemoteAssetResponse>;
|
|
64
65
|
duplicateComposition: (request: DuplicateCompositionRequest) => Promise<DuplicateCompositionResponse>;
|
|
66
|
+
duplicateJsxNode: (request: DuplicateJsxNodeRequest) => Promise<DuplicateJsxNodeResponse>;
|
|
65
67
|
effects: BrowserStudioEffectOperations;
|
|
66
68
|
findInFile: (request: FindInFileRequest) => Promise<FindInFileResponse>;
|
|
67
69
|
getFileSource: (fileName: string) => Promise<string | null>;
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.configMethodLifecycles = void 0;
|
|
4
4
|
exports.configMethodLifecycles = {
|
|
5
|
+
addElementLibrary: 'runtime',
|
|
5
6
|
overrideBundlerConfig: 'restart',
|
|
6
7
|
overrideDuration: 'runtime',
|
|
7
8
|
overrideFfmpegCommand: 'runtime',
|
|
@@ -1,15 +1,13 @@
|
|
|
1
|
-
export declare const getDefinePluginDefinitions: ({ maxTimelineTracks, askAIEnabled, interactivityEnabled, keyboardShortcutsEnabled, bufferStateDelayInMilliseconds,
|
|
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,
|
|
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;
|
|
@@ -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,
|
package/dist/esm/index.mjs
CHANGED
|
@@ -122,6 +122,7 @@ var getConfigFileChangeMessage = (changeType) => {
|
|
|
122
122
|
};
|
|
123
123
|
// src/config-method-lifecycles.ts
|
|
124
124
|
var configMethodLifecycles = {
|
|
125
|
+
addElementLibrary: "runtime",
|
|
125
126
|
overrideBundlerConfig: "restart",
|
|
126
127
|
overrideDuration: "runtime",
|
|
127
128
|
overrideFfmpegCommand: "runtime",
|
|
@@ -524,6 +525,56 @@ var detectFileType = (data) => {
|
|
|
524
525
|
}
|
|
525
526
|
return { type: "unknown" };
|
|
526
527
|
};
|
|
528
|
+
// src/remote-asset.ts
|
|
529
|
+
var maxRemoteAssetSize = 50 * 1024 * 1024;
|
|
530
|
+
var remoteAssetDownloadTimeout = 15000;
|
|
531
|
+
var remoteAssetAcceptHeader = "image/png,image/apng,image/jpeg,image/webp,image/bmp,image/gif";
|
|
532
|
+
var extensionsForFileType = {
|
|
533
|
+
png: ["png"],
|
|
534
|
+
apng: ["png", "apng"],
|
|
535
|
+
jpeg: ["jpg", "jpeg"],
|
|
536
|
+
webp: ["webp"],
|
|
537
|
+
bmp: ["bmp"],
|
|
538
|
+
gif: ["gif"]
|
|
539
|
+
};
|
|
540
|
+
var getRemoteAssetFilename = ({
|
|
541
|
+
fileType,
|
|
542
|
+
url
|
|
543
|
+
}) => {
|
|
544
|
+
const encodedBasename = url.pathname.slice(url.pathname.lastIndexOf("/") + 1);
|
|
545
|
+
let basename;
|
|
546
|
+
try {
|
|
547
|
+
basename = decodeURIComponent(encodedBasename);
|
|
548
|
+
} catch {
|
|
549
|
+
basename = encodedBasename;
|
|
550
|
+
}
|
|
551
|
+
const sanitized = Array.from(basename).map((character) => {
|
|
552
|
+
const charCode = character.charCodeAt(0);
|
|
553
|
+
return charCode <= 31 || '<>:"/\\|?*'.includes(character) ? "-" : character;
|
|
554
|
+
}).join("").trim().replace(/^[. ]+|[. ]+$/g, "");
|
|
555
|
+
const filenameWithoutFallback = sanitized === "" ? "image" : sanitized;
|
|
556
|
+
const extensions = extensionsForFileType[fileType.type];
|
|
557
|
+
const lastDot = filenameWithoutFallback.lastIndexOf(".");
|
|
558
|
+
const extension = lastDot > 0 ? filenameWithoutFallback.slice(lastDot + 1).toLowerCase() : "";
|
|
559
|
+
if (extensions.includes(extension)) {
|
|
560
|
+
return filenameWithoutFallback;
|
|
561
|
+
}
|
|
562
|
+
const withoutExtension = extension ? filenameWithoutFallback.slice(0, -(extension.length + 1)) : filenameWithoutFallback;
|
|
563
|
+
const safeName = withoutExtension === "" ? "image" : withoutExtension;
|
|
564
|
+
return `${safeName}.${extensions[0]}`;
|
|
565
|
+
};
|
|
566
|
+
var getRemoteAssetElement = ({
|
|
567
|
+
assetPath,
|
|
568
|
+
fileType
|
|
569
|
+
}) => ({
|
|
570
|
+
type: "asset",
|
|
571
|
+
assetType: fileType.type === "gif" ? "gif" : fileType.type === "apng" || fileType.type === "webp" && fileType.animated ? "animated-image" : "image",
|
|
572
|
+
src: assetPath,
|
|
573
|
+
srcType: "static",
|
|
574
|
+
dimensions: fileType.dimensions,
|
|
575
|
+
durationInFrames: null,
|
|
576
|
+
position: null
|
|
577
|
+
});
|
|
527
578
|
// src/easing-clipboard-data.ts
|
|
528
579
|
var isRecord2 = (value) => {
|
|
529
580
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
@@ -2193,6 +2244,7 @@ var allPackages = [
|
|
|
2193
2244
|
"brand",
|
|
2194
2245
|
"bundler",
|
|
2195
2246
|
"browser-studio",
|
|
2247
|
+
"canvas",
|
|
2196
2248
|
"claude-code-plugin",
|
|
2197
2249
|
"cli",
|
|
2198
2250
|
"cloudrun",
|
|
@@ -2220,6 +2272,7 @@ var allPackages = [
|
|
|
2220
2272
|
"fonts",
|
|
2221
2273
|
"gif",
|
|
2222
2274
|
"google-fonts",
|
|
2275
|
+
"gsap",
|
|
2223
2276
|
"install-whisper-cpp",
|
|
2224
2277
|
"it-tests",
|
|
2225
2278
|
"react18-tests",
|
|
@@ -2337,11 +2390,13 @@ var descriptions = {
|
|
|
2337
2390
|
lambda: "Render Remotion videos on AWS Lambda",
|
|
2338
2391
|
bundler: "Bundle Remotion compositions using Webpack",
|
|
2339
2392
|
"browser-studio": "Run Remotion Studio in the browser",
|
|
2393
|
+
canvas: "Headless primitives for Remotion authoring interfaces",
|
|
2340
2394
|
"studio-codemods": "Shared codemods for Remotion Studio",
|
|
2341
2395
|
"studio-server": "Run a Remotion Studio with a server backend",
|
|
2342
2396
|
"install-whisper-cpp": "Helpers for installing and using Whisper.cpp",
|
|
2343
2397
|
"whisper-web": "Helpers for using Whisper.cpp in browser using WASM",
|
|
2344
2398
|
"google-fonts": "Use Google Fonts in Remotion",
|
|
2399
|
+
gsap: "Use GSAP timelines in Remotion",
|
|
2345
2400
|
mcp: "Remotion's Model Context Protocol",
|
|
2346
2401
|
"media-utils": "Utilities for working with media files",
|
|
2347
2402
|
lottie: "Include Lottie animations in Remotion",
|
|
@@ -2439,6 +2494,7 @@ var installableMap = {
|
|
|
2439
2494
|
brand: false,
|
|
2440
2495
|
bundler: false,
|
|
2441
2496
|
"browser-studio": false,
|
|
2497
|
+
canvas: false,
|
|
2442
2498
|
cli: false,
|
|
2443
2499
|
cloudrun: true,
|
|
2444
2500
|
"claude-code-plugin": false,
|
|
@@ -2468,6 +2524,7 @@ var installableMap = {
|
|
|
2468
2524
|
fonts: true,
|
|
2469
2525
|
gif: true,
|
|
2470
2526
|
"google-fonts": true,
|
|
2527
|
+
gsap: true,
|
|
2471
2528
|
"install-whisper-cpp": true,
|
|
2472
2529
|
"whisper-web": true,
|
|
2473
2530
|
"it-tests": false,
|
|
@@ -2561,6 +2618,7 @@ var apiDocs = {
|
|
|
2561
2618
|
lambda: "https://www.remotion.dev/docs/lambda",
|
|
2562
2619
|
bundler: "https://www.remotion.dev/docs/bundler",
|
|
2563
2620
|
"browser-studio": null,
|
|
2621
|
+
canvas: null,
|
|
2564
2622
|
"studio-codemods": null,
|
|
2565
2623
|
"lambda-client": null,
|
|
2566
2624
|
"serverless-client": null,
|
|
@@ -2568,6 +2626,7 @@ var apiDocs = {
|
|
|
2568
2626
|
"install-whisper-cpp": "https://www.remotion.dev/docs/install-whisper-cpp",
|
|
2569
2627
|
"whisper-web": "https://www.remotion.dev/docs/whisper-web",
|
|
2570
2628
|
"google-fonts": "https://www.remotion.dev/docs/google-fonts",
|
|
2629
|
+
gsap: "https://www.remotion.dev/docs/gsap",
|
|
2571
2630
|
"media-utils": "https://www.remotion.dev/docs/media-utils",
|
|
2572
2631
|
lottie: "https://www.remotion.dev/docs/lottie",
|
|
2573
2632
|
licensing: "https://www.remotion.dev/docs/licensing",
|
|
@@ -3179,6 +3238,7 @@ var stringifyDefaultProps = ({
|
|
|
3179
3238
|
// src/studio-entry-points.ts
|
|
3180
3239
|
var getStudioEntryPoints = ({
|
|
3181
3240
|
fastRefreshRuntime,
|
|
3241
|
+
reactScan,
|
|
3182
3242
|
environmentSetup,
|
|
3183
3243
|
sequenceStackTraces,
|
|
3184
3244
|
userDefinedComponent,
|
|
@@ -3186,6 +3246,7 @@ var getStudioEntryPoints = ({
|
|
|
3186
3246
|
studioRenderEntry
|
|
3187
3247
|
}) => [
|
|
3188
3248
|
fastRefreshRuntime,
|
|
3249
|
+
reactScan,
|
|
3189
3250
|
environmentSetup,
|
|
3190
3251
|
sequenceStackTraces,
|
|
3191
3252
|
userDefinedComponent,
|
|
@@ -3977,6 +4038,8 @@ export {
|
|
|
3977
4038
|
stringifySequenceExpandedRowKey,
|
|
3978
4039
|
stringifyDefaultProps,
|
|
3979
4040
|
splitAnsi,
|
|
4041
|
+
remoteAssetDownloadTimeout,
|
|
4042
|
+
remoteAssetAcceptHeader,
|
|
3980
4043
|
parseSpringEasingConfig,
|
|
3981
4044
|
parseSequencePropClipboardDataResult,
|
|
3982
4045
|
parseSequencePropClipboardData,
|
|
@@ -4003,6 +4066,7 @@ export {
|
|
|
4003
4066
|
optimisticAddSequenceKeyframe,
|
|
4004
4067
|
optimisticAddEffectKeyframe,
|
|
4005
4068
|
moveKeyframesInPropStatus,
|
|
4069
|
+
maxRemoteAssetSize,
|
|
4006
4070
|
keyframeInterpolationFunctions,
|
|
4007
4071
|
isValidPackageName,
|
|
4008
4072
|
isUrl,
|
|
@@ -4020,6 +4084,8 @@ export {
|
|
|
4020
4084
|
getSchemaFieldGroup,
|
|
4021
4085
|
getRequiredPackageForInsertableElement,
|
|
4022
4086
|
getRequiredPackageForEffectImportPath,
|
|
4087
|
+
getRemoteAssetFilename,
|
|
4088
|
+
getRemoteAssetElement,
|
|
4023
4089
|
getProjectName,
|
|
4024
4090
|
getPolyKeyframeEasing,
|
|
4025
4091
|
getOutKeyframeEasing,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// src/studio-entry-points.ts
|
|
2
2
|
var getStudioEntryPoints = ({
|
|
3
3
|
fastRefreshRuntime,
|
|
4
|
+
reactScan,
|
|
4
5
|
environmentSetup,
|
|
5
6
|
sequenceStackTraces,
|
|
6
7
|
userDefinedComponent,
|
|
@@ -8,6 +9,7 @@ var getStudioEntryPoints = ({
|
|
|
8
9
|
studioRenderEntry
|
|
9
10
|
}) => [
|
|
10
11
|
fastRefreshRuntime,
|
|
12
|
+
reactScan,
|
|
11
13
|
environmentSetup,
|
|
12
14
|
sequenceStackTraces,
|
|
13
15
|
userDefinedComponent,
|
package/dist/index.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ export { getConfigFileChangeMessage, type ConfigFileChangeType, } from './config
|
|
|
14
14
|
export { configMethodLifecycles } from './config-method-lifecycles';
|
|
15
15
|
export { DEFAULT_BUFFER_STATE_DELAY_IN_MILLISECONDS } from './default-buffer-state-delay-in-milliseconds';
|
|
16
16
|
export { detectFileType, isImageFileType, type FileDimensions, type FileType, type ImageFileType, } from './detect-file-type';
|
|
17
|
+
export { getRemoteAssetElement, getRemoteAssetFilename, maxRemoteAssetSize, remoteAssetAcceptHeader, remoteAssetDownloadTimeout, } from './remote-asset';
|
|
17
18
|
export { parseEasingClipboardData, parseEasingClipboardDataResult, type EasingClipboardData, type EasingClipboardDataParseResult, } from './easing-clipboard-data';
|
|
18
19
|
export { EFFECT_CATALOG, getEffectCatalogCategories, getEffectDocumentationLink, getEffectDocumentationPath, getEffectPreviewAlt, getEffectPreviewSource, type EffectCatalogCategory, type EffectCatalogItem, } from './effect-catalog';
|
|
19
20
|
export { parseEffectClipboardData, parseEffectClipboardDataResult, parseEffectPropClipboardData, parseEffectPropClipboardDataResult, type EffectClipboardClamping, type EffectClipboardData, type EffectClipboardDataParseResult, type EffectClipboardEasing, type EffectClipboardExtrapolateType, type EffectClipboardInterpolationFunction, type EffectClipboardKeyframe, type EffectClipboardKeyframedParam, type EffectClipboardParam, type EffectClipboardPasteType, type EffectClipboardSnapshot, type EffectClipboardStaticParam, type EffectPropClipboardData, type EffectPropClipboardDataParseResult, } from './effect-clipboard-data';
|
|
@@ -44,7 +45,7 @@ export { ScriptLine, SomeStackFrame, StackFrame, SymbolicatedStackFrame, } from
|
|
|
44
45
|
export { EnumPath, stringifyDefaultProps } from './stringify-default-props';
|
|
45
46
|
export { getStudioEntryPoints, type StudioEntryPointPaths, } from './studio-entry-points';
|
|
46
47
|
export { studioHtml, type StudioHtmlOptions } from './studio-html';
|
|
47
|
-
export type { ConfigFileStudioSettings, StudioRuntimeConfig, } from './studio-runtime-config';
|
|
48
|
+
export type { ConfigFileStudioSettings, StudioElementLibrary, StudioRuntimeConfig, } from './studio-runtime-config';
|
|
48
49
|
export { BORDER_RADIUS_LONGHAND_KEYS, BORDER_RADIUS_SHORTHAND_KEY, getStylePropertyLonghandKeys, } from './style-property-relations';
|
|
49
50
|
export type { VisualControlChange } from './codemods';
|
|
50
51
|
export { optimisticAddEffectKeyframe, optimisticAddSequenceKeyframe, } from './optimistic-add-keyframe';
|
package/dist/index.js
CHANGED
|
@@ -14,8 +14,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.
|
|
18
|
-
exports.isUrl = exports.stringifySequenceSubscriptionKey = exports.stringifySequenceExpandedRowKey = exports.optimisticUpdateSequenceKeyframeSettings = exports.optimisticUpdateEffectKeyframeSettings = exports.optimisticUpdateForPropStatuses = exports.optimisticUpdateForEffectPropStatuses = exports.optimisticMoveSequenceKeyframes = exports.optimisticMoveEffectKeyframes = exports.moveKeyframesInPropStatus = exports.canMoveKeyframesWithoutCollisions = exports.optimisticDeleteSequenceKeyframes = exports.optimisticDeleteSequenceKeyframe = exports.optimisticDeleteEffectKeyframes = exports.optimisticDeleteEffectKeyframe = exports.optimisticAddSequenceKeyframe = exports.optimisticAddEffectKeyframe = exports.getStylePropertyLonghandKeys = exports.BORDER_RADIUS_SHORTHAND_KEY = exports.BORDER_RADIUS_LONGHAND_KEYS = exports.studioHtml = exports.getStudioEntryPoints = exports.stringifyDefaultProps = exports.getSchemaFieldGroup = exports.getFieldsToShow = exports.getEffectFieldsToShow = exports.SCHEMA_FIELD_ROW_HEIGHT = exports.SCHEMA_FIELD_GROUPS = exports.isValidPackageName = exports.getRequiredPackageForInsertableElement = exports.getRequiredPackageForEffectImportPath = exports.parseSpringEasingConfig = exports.DEFAULT_SPRING_EASING = exports.packages = exports.installableMap = exports.extraPackages = exports.descriptions = exports.apiDocs = exports.DEFAULT_TIMELINE_TRACKS = exports.keyframeInterpolationFunctions = exports.isSchemaFieldKeyframable = exports.isKeyframeInterpolationFunction = void 0;
|
|
17
|
+
exports.getPolyKeyframeEasing = exports.getOutKeyframeEasing = exports.getBackKeyframeEasing = exports.QUAD_KEYFRAME_EASING = exports.LINEAR_KEYFRAME_EASING = exports.KEYFRAME_EASING_PRESETS = exports.HOLD_KEYFRAME_EASING = exports.EASE_KEYFRAME_EASING = exports.CUBIC_KEYFRAME_EASING = exports.parseKeyframeClipboardDataResult = exports.parseKeyframeClipboardData = exports.isKeyframeClipboardFieldType = exports.hotMiddlewareOptions = exports.getProjectName = exports.getLocationFromBuildError = exports.getDefaultOutLocation = exports.getAssetSchemaKeys = exports.getAllSchemaKeys = exports.formatBytes = exports.parseSequencePropClipboardDataResult = exports.parseSequencePropClipboardData = exports.parseEffectPropClipboardDataResult = exports.parseEffectPropClipboardData = exports.parseEffectClipboardDataResult = exports.parseEffectClipboardData = exports.getEffectPreviewSource = exports.getEffectPreviewAlt = exports.getEffectDocumentationPath = exports.getEffectDocumentationLink = exports.getEffectCatalogCategories = exports.EFFECT_CATALOG = exports.parseEasingClipboardDataResult = exports.parseEasingClipboardData = exports.remoteAssetDownloadTimeout = exports.remoteAssetAcceptHeader = exports.maxRemoteAssetSize = exports.getRemoteAssetFilename = exports.getRemoteAssetElement = exports.isImageFileType = exports.detectFileType = exports.DEFAULT_BUFFER_STATE_DELAY_IN_MILLISECONDS = exports.configMethodLifecycles = exports.getConfigFileChangeMessage = exports.hasSequenceTimingTraits = exports.REACT_REFRESH_FINISHED_EVENT = exports.compositionDragDataToSymbolicatedStack = exports.parseCanvasCaptureData = exports.CANVAS_CAPTURE_METADATA_TAG = exports.stripAnsi = exports.splitAnsi = void 0;
|
|
18
|
+
exports.isUrl = exports.stringifySequenceSubscriptionKey = exports.stringifySequenceExpandedRowKey = exports.optimisticUpdateSequenceKeyframeSettings = exports.optimisticUpdateEffectKeyframeSettings = exports.optimisticUpdateForPropStatuses = exports.optimisticUpdateForEffectPropStatuses = exports.optimisticMoveSequenceKeyframes = exports.optimisticMoveEffectKeyframes = exports.moveKeyframesInPropStatus = exports.canMoveKeyframesWithoutCollisions = exports.optimisticDeleteSequenceKeyframes = exports.optimisticDeleteSequenceKeyframe = exports.optimisticDeleteEffectKeyframes = exports.optimisticDeleteEffectKeyframe = exports.optimisticAddSequenceKeyframe = exports.optimisticAddEffectKeyframe = exports.getStylePropertyLonghandKeys = exports.BORDER_RADIUS_SHORTHAND_KEY = exports.BORDER_RADIUS_LONGHAND_KEYS = exports.studioHtml = exports.getStudioEntryPoints = exports.stringifyDefaultProps = exports.getSchemaFieldGroup = exports.getFieldsToShow = exports.getEffectFieldsToShow = exports.SCHEMA_FIELD_ROW_HEIGHT = exports.SCHEMA_FIELD_GROUPS = exports.isValidPackageName = exports.getRequiredPackageForInsertableElement = exports.getRequiredPackageForEffectImportPath = exports.parseSpringEasingConfig = exports.DEFAULT_SPRING_EASING = exports.packages = exports.installableMap = exports.extraPackages = exports.descriptions = exports.apiDocs = exports.DEFAULT_TIMELINE_TRACKS = exports.keyframeInterpolationFunctions = exports.isSchemaFieldKeyframable = exports.isKeyframeInterpolationFunction = exports.isInteractivitySchemaFieldKeyframable = exports.getKeyframeInterpolationFunctionForSchemaField = exports.isSchemaFieldHoldOnly = exports.getKeyframeInterpolationFunction = exports.canEditEasingForInterpolationFunction = void 0;
|
|
19
19
|
const ansi_1 = require("./ansi");
|
|
20
20
|
Object.defineProperty(exports, "splitAnsi", { enumerable: true, get: function () { return ansi_1.splitAnsi; } });
|
|
21
21
|
Object.defineProperty(exports, "stripAnsi", { enumerable: true, get: function () { return ansi_1.stripAnsi; } });
|
|
@@ -38,6 +38,12 @@ Object.defineProperty(exports, "DEFAULT_BUFFER_STATE_DELAY_IN_MILLISECONDS", { e
|
|
|
38
38
|
const detect_file_type_1 = require("./detect-file-type");
|
|
39
39
|
Object.defineProperty(exports, "detectFileType", { enumerable: true, get: function () { return detect_file_type_1.detectFileType; } });
|
|
40
40
|
Object.defineProperty(exports, "isImageFileType", { enumerable: true, get: function () { return detect_file_type_1.isImageFileType; } });
|
|
41
|
+
const remote_asset_1 = require("./remote-asset");
|
|
42
|
+
Object.defineProperty(exports, "getRemoteAssetElement", { enumerable: true, get: function () { return remote_asset_1.getRemoteAssetElement; } });
|
|
43
|
+
Object.defineProperty(exports, "getRemoteAssetFilename", { enumerable: true, get: function () { return remote_asset_1.getRemoteAssetFilename; } });
|
|
44
|
+
Object.defineProperty(exports, "maxRemoteAssetSize", { enumerable: true, get: function () { return remote_asset_1.maxRemoteAssetSize; } });
|
|
45
|
+
Object.defineProperty(exports, "remoteAssetAcceptHeader", { enumerable: true, get: function () { return remote_asset_1.remoteAssetAcceptHeader; } });
|
|
46
|
+
Object.defineProperty(exports, "remoteAssetDownloadTimeout", { enumerable: true, get: function () { return remote_asset_1.remoteAssetDownloadTimeout; } });
|
|
41
47
|
const easing_clipboard_data_1 = require("./easing-clipboard-data");
|
|
42
48
|
Object.defineProperty(exports, "parseEasingClipboardData", { enumerable: true, get: function () { return easing_clipboard_data_1.parseEasingClipboardData; } });
|
|
43
49
|
Object.defineProperty(exports, "parseEasingClipboardDataResult", { enumerable: true, get: function () { return easing_clipboard_data_1.parseEasingClipboardDataResult; } });
|
package/dist/package-info.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
declare const allPackages: readonly ["svg-3d-engine", "animation-utils", "animated-emoji", "astro-example", "babel-loader", "bugs", "brand", "bundler", "browser-studio", "claude-code-plugin", "cli", "cloudrun", "codex-plugin", "kimi-code-plugin", "compositor-darwin-arm64", "compositor-darwin-x64", "compositor-linux-arm64-gnu", "compositor-linux-arm64-musl", "compositor-linux-x64-gnu", "compositor-linux-x64-musl", "compositor-win32-x64-msvc", "core", "create-video", "discord-poster", "docusaurus-plugin", "docs", "enable-scss", "eslint-config", "eslint-config-flat", "eslint-config-internal", "eslint-plugin", "example-without-zod", "example", "fonts", "gif", "google-fonts", "install-whisper-cpp", "it-tests", "react18-tests", "lambda-go-example", "lambda-go", "lambda-php", "lambda-ruby", "lambda-python", "lambda", "lambda-client", "layout-utils", "rounded-text-box", "licensing", "lottie", "mcp", "media-utils", "motion-blur", "noise", "paths", "player-a11y", "player-example", "player", "preload", "renderer", "rive", "shapes", "skia", "promo-pages", "streaming", "serverless", "serverless-client", "skills", "skills-evals", "studio-codemods", "studio-server", "studio-shared", "studio", "tailwind", "tailwind-v4", "timeline-utils", "test-utils", "three", "transitions", "media-parser", "zod-types", "zod-types-v3", "webcodecs", "convert", "captions", "openai-whisper", "elevenlabs", "compositor", "example-videos", "whisper-web", "media", "remotion-media", "web-renderer", "design", "studio-protocol", "light-leaks", "mac-cursors", "maptiler", "rough-notation", "starburst", "vercel", "sfx", "effects"];
|
|
1
|
+
declare const allPackages: readonly ["svg-3d-engine", "animation-utils", "animated-emoji", "astro-example", "babel-loader", "bugs", "brand", "bundler", "browser-studio", "canvas", "claude-code-plugin", "cli", "cloudrun", "codex-plugin", "kimi-code-plugin", "compositor-darwin-arm64", "compositor-darwin-x64", "compositor-linux-arm64-gnu", "compositor-linux-arm64-musl", "compositor-linux-x64-gnu", "compositor-linux-x64-musl", "compositor-win32-x64-msvc", "core", "create-video", "discord-poster", "docusaurus-plugin", "docs", "enable-scss", "eslint-config", "eslint-config-flat", "eslint-config-internal", "eslint-plugin", "example-without-zod", "example", "fonts", "gif", "google-fonts", "gsap", "install-whisper-cpp", "it-tests", "react18-tests", "lambda-go-example", "lambda-go", "lambda-php", "lambda-ruby", "lambda-python", "lambda", "lambda-client", "layout-utils", "rounded-text-box", "licensing", "lottie", "mcp", "media-utils", "motion-blur", "noise", "paths", "player-a11y", "player-example", "player", "preload", "renderer", "rive", "shapes", "skia", "promo-pages", "streaming", "serverless", "serverless-client", "skills", "skills-evals", "studio-codemods", "studio-server", "studio-shared", "studio", "tailwind", "tailwind-v4", "timeline-utils", "test-utils", "three", "transitions", "media-parser", "zod-types", "zod-types-v3", "webcodecs", "convert", "captions", "openai-whisper", "elevenlabs", "compositor", "example-videos", "whisper-web", "media", "remotion-media", "web-renderer", "design", "studio-protocol", "light-leaks", "mac-cursors", "maptiler", "rough-notation", "starburst", "vercel", "sfx", "effects"];
|
|
2
2
|
export type Pkgs = (typeof allPackages)[number];
|
|
3
|
-
export declare const packages: ("animated-emoji" | "animation-utils" | "astro-example" | "babel-loader" | "brand" | "browser-studio" | "bugs" | "bundler" | "captions" | "claude-code-plugin" | "cli" | "cloudrun" | "codex-plugin" | "compositor" | "compositor-darwin-arm64" | "compositor-darwin-x64" | "compositor-linux-arm64-gnu" | "compositor-linux-arm64-musl" | "compositor-linux-x64-gnu" | "compositor-linux-x64-musl" | "compositor-win32-x64-msvc" | "convert" | "core" | "create-video" | "design" | "discord-poster" | "docs" | "docusaurus-plugin" | "effects" | "elevenlabs" | "enable-scss" | "eslint-config" | "eslint-config-flat" | "eslint-config-internal" | "eslint-plugin" | "example" | "example-videos" | "example-without-zod" | "fonts" | "gif" | "google-fonts" | "install-whisper-cpp" | "it-tests" | "kimi-code-plugin" | "lambda" | "lambda-client" | "lambda-go" | "lambda-go-example" | "lambda-php" | "lambda-python" | "lambda-ruby" | "layout-utils" | "licensing" | "light-leaks" | "lottie" | "mac-cursors" | "maptiler" | "mcp" | "media" | "media-parser" | "media-utils" | "motion-blur" | "noise" | "openai-whisper" | "paths" | "player" | "player-a11y" | "player-example" | "preload" | "promo-pages" | "react18-tests" | "remotion-media" | "renderer" | "rive" | "rough-notation" | "rounded-text-box" | "serverless" | "serverless-client" | "sfx" | "shapes" | "skia" | "skills" | "skills-evals" | "starburst" | "streaming" | "studio" | "studio-codemods" | "studio-protocol" | "studio-server" | "studio-shared" | "svg-3d-engine" | "tailwind" | "tailwind-v4" | "test-utils" | "three" | "timeline-utils" | "transitions" | "vercel" | "web-renderer" | "webcodecs" | "whisper-web" | "zod-types" | "zod-types-v3")[];
|
|
3
|
+
export declare const packages: ("animated-emoji" | "animation-utils" | "astro-example" | "babel-loader" | "brand" | "browser-studio" | "bugs" | "bundler" | "canvas" | "captions" | "claude-code-plugin" | "cli" | "cloudrun" | "codex-plugin" | "compositor" | "compositor-darwin-arm64" | "compositor-darwin-x64" | "compositor-linux-arm64-gnu" | "compositor-linux-arm64-musl" | "compositor-linux-x64-gnu" | "compositor-linux-x64-musl" | "compositor-win32-x64-msvc" | "convert" | "core" | "create-video" | "design" | "discord-poster" | "docs" | "docusaurus-plugin" | "effects" | "elevenlabs" | "enable-scss" | "eslint-config" | "eslint-config-flat" | "eslint-config-internal" | "eslint-plugin" | "example" | "example-videos" | "example-without-zod" | "fonts" | "gif" | "google-fonts" | "gsap" | "install-whisper-cpp" | "it-tests" | "kimi-code-plugin" | "lambda" | "lambda-client" | "lambda-go" | "lambda-go-example" | "lambda-php" | "lambda-python" | "lambda-ruby" | "layout-utils" | "licensing" | "light-leaks" | "lottie" | "mac-cursors" | "maptiler" | "mcp" | "media" | "media-parser" | "media-utils" | "motion-blur" | "noise" | "openai-whisper" | "paths" | "player" | "player-a11y" | "player-example" | "preload" | "promo-pages" | "react18-tests" | "remotion-media" | "renderer" | "rive" | "rough-notation" | "rounded-text-box" | "serverless" | "serverless-client" | "sfx" | "shapes" | "skia" | "skills" | "skills-evals" | "starburst" | "streaming" | "studio" | "studio-codemods" | "studio-protocol" | "studio-server" | "studio-shared" | "svg-3d-engine" | "tailwind" | "tailwind-v4" | "test-utils" | "three" | "timeline-utils" | "transitions" | "vercel" | "web-renderer" | "webcodecs" | "whisper-web" | "zod-types" | "zod-types-v3")[];
|
|
4
4
|
export type ExtraPackage = {
|
|
5
5
|
name: string;
|
|
6
6
|
version: string;
|
package/dist/package-info.js
CHANGED
|
@@ -13,6 +13,7 @@ const allPackages = [
|
|
|
13
13
|
'brand',
|
|
14
14
|
'bundler',
|
|
15
15
|
'browser-studio',
|
|
16
|
+
'canvas',
|
|
16
17
|
'claude-code-plugin',
|
|
17
18
|
'cli',
|
|
18
19
|
'cloudrun',
|
|
@@ -40,6 +41,7 @@ const allPackages = [
|
|
|
40
41
|
'fonts',
|
|
41
42
|
'gif',
|
|
42
43
|
'google-fonts',
|
|
44
|
+
'gsap',
|
|
43
45
|
'install-whisper-cpp',
|
|
44
46
|
'it-tests',
|
|
45
47
|
'react18-tests',
|
|
@@ -157,11 +159,13 @@ exports.descriptions = {
|
|
|
157
159
|
lambda: 'Render Remotion videos on AWS Lambda',
|
|
158
160
|
bundler: 'Bundle Remotion compositions using Webpack',
|
|
159
161
|
'browser-studio': 'Run Remotion Studio in the browser',
|
|
162
|
+
canvas: 'Headless primitives for Remotion authoring interfaces',
|
|
160
163
|
'studio-codemods': 'Shared codemods for Remotion Studio',
|
|
161
164
|
'studio-server': 'Run a Remotion Studio with a server backend',
|
|
162
165
|
'install-whisper-cpp': 'Helpers for installing and using Whisper.cpp',
|
|
163
166
|
'whisper-web': 'Helpers for using Whisper.cpp in browser using WASM',
|
|
164
167
|
'google-fonts': 'Use Google Fonts in Remotion',
|
|
168
|
+
gsap: 'Use GSAP timelines in Remotion',
|
|
165
169
|
mcp: "Remotion's Model Context Protocol",
|
|
166
170
|
'media-utils': 'Utilities for working with media files',
|
|
167
171
|
lottie: 'Include Lottie animations in Remotion',
|
|
@@ -259,6 +263,7 @@ exports.installableMap = {
|
|
|
259
263
|
brand: false,
|
|
260
264
|
bundler: false,
|
|
261
265
|
'browser-studio': false,
|
|
266
|
+
canvas: false,
|
|
262
267
|
cli: false,
|
|
263
268
|
cloudrun: true,
|
|
264
269
|
'claude-code-plugin': false,
|
|
@@ -288,6 +293,7 @@ exports.installableMap = {
|
|
|
288
293
|
fonts: true,
|
|
289
294
|
gif: true,
|
|
290
295
|
'google-fonts': true,
|
|
296
|
+
gsap: true,
|
|
291
297
|
'install-whisper-cpp': true,
|
|
292
298
|
'whisper-web': true,
|
|
293
299
|
'it-tests': false,
|
|
@@ -381,6 +387,7 @@ exports.apiDocs = {
|
|
|
381
387
|
lambda: 'https://www.remotion.dev/docs/lambda',
|
|
382
388
|
bundler: 'https://www.remotion.dev/docs/bundler',
|
|
383
389
|
'browser-studio': null,
|
|
390
|
+
canvas: null,
|
|
384
391
|
'studio-codemods': null,
|
|
385
392
|
'lambda-client': null,
|
|
386
393
|
'serverless-client': null,
|
|
@@ -388,6 +395,7 @@ exports.apiDocs = {
|
|
|
388
395
|
'install-whisper-cpp': 'https://www.remotion.dev/docs/install-whisper-cpp',
|
|
389
396
|
'whisper-web': 'https://www.remotion.dev/docs/whisper-web',
|
|
390
397
|
'google-fonts': 'https://www.remotion.dev/docs/google-fonts',
|
|
398
|
+
gsap: 'https://www.remotion.dev/docs/gsap',
|
|
391
399
|
'media-utils': 'https://www.remotion.dev/docs/media-utils',
|
|
392
400
|
lottie: 'https://www.remotion.dev/docs/lottie',
|
|
393
401
|
licensing: 'https://www.remotion.dev/docs/licensing',
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { InsertableCompositionElement } from './api-requests';
|
|
2
|
+
import type { ImageFileType } from './detect-file-type';
|
|
3
|
+
export declare const maxRemoteAssetSize: number;
|
|
4
|
+
export declare const remoteAssetDownloadTimeout = 15000;
|
|
5
|
+
export declare const remoteAssetAcceptHeader = "image/png,image/apng,image/jpeg,image/webp,image/bmp,image/gif";
|
|
6
|
+
export declare const getRemoteAssetFilename: ({ fileType, url, }: {
|
|
7
|
+
fileType: ImageFileType;
|
|
8
|
+
url: URL;
|
|
9
|
+
}) => string;
|
|
10
|
+
export declare const getRemoteAssetElement: ({ assetPath, fileType, }: {
|
|
11
|
+
assetPath: string;
|
|
12
|
+
fileType: ImageFileType;
|
|
13
|
+
}) => InsertableCompositionElement;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getRemoteAssetElement = exports.getRemoteAssetFilename = exports.remoteAssetAcceptHeader = exports.remoteAssetDownloadTimeout = exports.maxRemoteAssetSize = void 0;
|
|
4
|
+
exports.maxRemoteAssetSize = 50 * 1024 * 1024;
|
|
5
|
+
exports.remoteAssetDownloadTimeout = 15000;
|
|
6
|
+
exports.remoteAssetAcceptHeader = 'image/png,image/apng,image/jpeg,image/webp,image/bmp,image/gif';
|
|
7
|
+
const extensionsForFileType = {
|
|
8
|
+
png: ['png'],
|
|
9
|
+
apng: ['png', 'apng'],
|
|
10
|
+
jpeg: ['jpg', 'jpeg'],
|
|
11
|
+
webp: ['webp'],
|
|
12
|
+
bmp: ['bmp'],
|
|
13
|
+
gif: ['gif'],
|
|
14
|
+
};
|
|
15
|
+
const getRemoteAssetFilename = ({ fileType, url, }) => {
|
|
16
|
+
const encodedBasename = url.pathname.slice(url.pathname.lastIndexOf('/') + 1);
|
|
17
|
+
let basename;
|
|
18
|
+
try {
|
|
19
|
+
basename = decodeURIComponent(encodedBasename);
|
|
20
|
+
}
|
|
21
|
+
catch (_a) {
|
|
22
|
+
basename = encodedBasename;
|
|
23
|
+
}
|
|
24
|
+
const sanitized = Array.from(basename)
|
|
25
|
+
.map((character) => {
|
|
26
|
+
const charCode = character.charCodeAt(0);
|
|
27
|
+
return charCode <= 31 || '<>:"/\\|?*'.includes(character)
|
|
28
|
+
? '-'
|
|
29
|
+
: character;
|
|
30
|
+
})
|
|
31
|
+
.join('')
|
|
32
|
+
.trim()
|
|
33
|
+
.replace(/^[. ]+|[. ]+$/g, '');
|
|
34
|
+
const filenameWithoutFallback = sanitized === '' ? 'image' : sanitized;
|
|
35
|
+
const extensions = extensionsForFileType[fileType.type];
|
|
36
|
+
const lastDot = filenameWithoutFallback.lastIndexOf('.');
|
|
37
|
+
const extension = lastDot > 0 ? filenameWithoutFallback.slice(lastDot + 1).toLowerCase() : '';
|
|
38
|
+
if (extensions.includes(extension)) {
|
|
39
|
+
return filenameWithoutFallback;
|
|
40
|
+
}
|
|
41
|
+
const withoutExtension = extension
|
|
42
|
+
? filenameWithoutFallback.slice(0, -(extension.length + 1))
|
|
43
|
+
: filenameWithoutFallback;
|
|
44
|
+
const safeName = withoutExtension === '' ? 'image' : withoutExtension;
|
|
45
|
+
return `${safeName}.${extensions[0]}`;
|
|
46
|
+
};
|
|
47
|
+
exports.getRemoteAssetFilename = getRemoteAssetFilename;
|
|
48
|
+
const getRemoteAssetElement = ({ assetPath, fileType, }) => ({
|
|
49
|
+
type: 'asset',
|
|
50
|
+
assetType: fileType.type === 'gif'
|
|
51
|
+
? 'gif'
|
|
52
|
+
: fileType.type === 'apng' ||
|
|
53
|
+
(fileType.type === 'webp' && fileType.animated)
|
|
54
|
+
? 'animated-image'
|
|
55
|
+
: 'image',
|
|
56
|
+
src: assetPath,
|
|
57
|
+
srcType: 'static',
|
|
58
|
+
dimensions: fileType.dimensions,
|
|
59
|
+
durationInFrames: null,
|
|
60
|
+
position: null,
|
|
61
|
+
});
|
|
62
|
+
exports.getRemoteAssetElement = getRemoteAssetElement;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
export type StudioEntryPointPaths = {
|
|
2
2
|
fastRefreshRuntime: string | null;
|
|
3
|
+
reactScan: string | null;
|
|
3
4
|
environmentSetup: string;
|
|
4
5
|
sequenceStackTraces: string | null;
|
|
5
6
|
userDefinedComponent: string;
|
|
6
7
|
reactShim: string;
|
|
7
8
|
studioRenderEntry: string;
|
|
8
9
|
};
|
|
9
|
-
export declare const getStudioEntryPoints: ({ fastRefreshRuntime, environmentSetup, sequenceStackTraces, userDefinedComponent, reactShim, studioRenderEntry, }: StudioEntryPointPaths) => [string, ...string[]];
|
|
10
|
+
export declare const getStudioEntryPoints: ({ fastRefreshRuntime, reactScan, environmentSetup, sequenceStackTraces, userDefinedComponent, reactShim, studioRenderEntry, }: StudioEntryPointPaths) => [string, ...string[]];
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getStudioEntryPoints = void 0;
|
|
4
|
-
const getStudioEntryPoints = ({ fastRefreshRuntime, environmentSetup, sequenceStackTraces, userDefinedComponent, reactShim, studioRenderEntry, }) => [
|
|
4
|
+
const getStudioEntryPoints = ({ fastRefreshRuntime, reactScan, environmentSetup, sequenceStackTraces, userDefinedComponent, reactShim, studioRenderEntry, }) => [
|
|
5
5
|
// Fast Refresh must come first because setup-environment imports ReactDOM.
|
|
6
6
|
// If ReactDOM is imported before Fast Refresh, Fast Refresh does not work.
|
|
7
7
|
fastRefreshRuntime,
|
|
8
|
+
reactScan,
|
|
8
9
|
environmentSetup,
|
|
9
10
|
sequenceStackTraces,
|
|
10
11
|
userDefinedComponent,
|
|
@@ -11,9 +11,14 @@ export type ConfigFileStudioSettings = {
|
|
|
11
11
|
readonly numberOfSharedAudioTags: number | null;
|
|
12
12
|
readonly rspack: boolean | null;
|
|
13
13
|
};
|
|
14
|
+
export type StudioElementLibrary = {
|
|
15
|
+
readonly displayName: string | null;
|
|
16
|
+
readonly url: string;
|
|
17
|
+
};
|
|
14
18
|
export type StudioRuntimeConfig = {
|
|
15
19
|
readonly maxTimelineTracks: number | null;
|
|
16
20
|
readonly askAIEnabled: boolean;
|
|
21
|
+
readonly elementLibraries?: readonly StudioElementLibrary[];
|
|
17
22
|
readonly interactivityEnabled: boolean;
|
|
18
23
|
readonly keyboardShortcutsEnabled: boolean;
|
|
19
24
|
readonly bufferStateDelayInMilliseconds: number | null;
|
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.517",
|
|
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.517",
|
|
25
|
+
"remotion": "4.0.517"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
|
-
"@remotion/renderer": "4.0.
|
|
29
|
-
"@remotion/eslint-config-internal": "4.0.
|
|
28
|
+
"@remotion/renderer": "4.0.517",
|
|
29
|
+
"@remotion/eslint-config-internal": "4.0.517",
|
|
30
30
|
"eslint": "9.19.0",
|
|
31
31
|
"@typescript/native-preview": "7.0.0-dev.20260217.1"
|
|
32
32
|
},
|
|
@@ -1,7 +0,0 @@
|
|
|
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;
|
|
@@ -1,30 +0,0 @@
|
|
|
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;
|
|
@@ -1,8 +0,0 @@
|
|
|
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;
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.optimisticUpdateForEffectCodeValues = void 0;
|
|
4
|
-
const no_react_1 = require("remotion/no-react");
|
|
5
|
-
const optimisticUpdateForEffectCodeValues = ({ previous, effectIndex, fieldKey, value, schema, }) => {
|
|
6
|
-
var _a;
|
|
7
|
-
if (!previous.canUpdate) {
|
|
8
|
-
return previous;
|
|
9
|
-
}
|
|
10
|
-
const targetIndex = previous.effects.findIndex((e) => e.effectIndex === effectIndex);
|
|
11
|
-
if (targetIndex === -1) {
|
|
12
|
-
return previous;
|
|
13
|
-
}
|
|
14
|
-
const target = previous.effects[targetIndex];
|
|
15
|
-
if (!target.canUpdate) {
|
|
16
|
-
return previous;
|
|
17
|
-
}
|
|
18
|
-
const props = {
|
|
19
|
-
...target.props,
|
|
20
|
-
[fieldKey]: { status: 'static', codeValue: value },
|
|
21
|
-
};
|
|
22
|
-
if (((_a = schema[fieldKey]) === null || _a === void 0 ? void 0 : _a.type) === 'enum') {
|
|
23
|
-
const propsToDelete = no_react_1.NoReactInternals.findPropsToDelete({
|
|
24
|
-
schema,
|
|
25
|
-
key: fieldKey,
|
|
26
|
-
value,
|
|
27
|
-
});
|
|
28
|
-
for (const propToDelete of propsToDelete) {
|
|
29
|
-
delete props[propToDelete];
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
const updatedEffect = {
|
|
33
|
-
...target,
|
|
34
|
-
props,
|
|
35
|
-
};
|
|
36
|
-
const effects = [...previous.effects];
|
|
37
|
-
effects[targetIndex] = updatedEffect;
|
|
38
|
-
return {
|
|
39
|
-
...previous,
|
|
40
|
-
effects,
|
|
41
|
-
};
|
|
42
|
-
};
|
|
43
|
-
exports.optimisticUpdateForEffectCodeValues = optimisticUpdateForEffectCodeValues;
|
|
@@ -1,22 +0,0 @@
|
|
|
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;
|
package/dist/shape-drag-data.js
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
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;
|