@remotion/studio 4.0.493 → 4.0.494
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/components/Canvas.js +3 -0
- package/dist/components/InitialCompositionLoader.d.ts +1 -1
- package/dist/components/InitialCompositionLoader.js +6 -1
- package/dist/components/Timeline/Timeline.js +1 -0
- package/dist/components/Timeline/TimelineClipboardKeybindings.js +3 -0
- package/dist/components/Timeline/TimelineDeleteKeybindings.js +2 -0
- package/dist/components/Timeline/TimelineKeyframeControls.js +1 -0
- package/dist/components/Timeline/TimelineSequence.d.ts +1 -0
- package/dist/components/Timeline/TimelineSequence.js +42 -6
- package/dist/components/Timeline/TimelineSequenceItem.js +14 -2
- package/dist/components/Timeline/TimelineTrack.js +2 -1
- package/dist/components/Timeline/call-delete-keyframe.d.ts +1 -0
- package/dist/components/Timeline/call-delete-keyframe.js +4 -0
- package/dist/components/Timeline/delete-selected-keyframe.d.ts +4 -2
- package/dist/components/Timeline/delete-selected-keyframe.js +48 -5
- package/dist/components/Timeline/delete-selected-timeline-item.d.ts +3 -1
- package/dist/components/Timeline/delete-selected-timeline-item.js +3 -1
- package/dist/components/import-assets.d.ts +25 -3
- package/dist/components/import-assets.js +54 -15
- package/dist/esm/{chunk-mndqr3zx.js → chunk-tdncqycp.js} +702 -529
- package/dist/esm/internals.mjs +702 -529
- package/dist/esm/previewEntry.mjs +701 -528
- package/dist/esm/renderEntry.mjs +1 -1
- package/dist/helpers/get-sequence-double-click-action.d.ts +6 -0
- package/dist/helpers/get-sequence-double-click-action.js +10 -1
- package/dist/helpers/inject-css.js +0 -2
- package/package.json +11 -11
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.insertElement = exports.insertComposition = exports.insertComponent = exports.insertExistingAssets = exports.insertRemoteAudio = exports.importRemoteAsset = exports.importAssets = exports.pickFilesToImport = exports.getComponentDimensions = exports.getCompositionPositionForDrop = exports.getElementPositionForDrop = exports.getAssetElementFromPath = exports.getAssetElement = void 0;
|
|
3
|
+
exports.insertElement = exports.insertComposition = exports.insertComponent = exports.insertExistingAssets = exports.insertRemoteAudio = exports.importRemoteAsset = exports.importAssets = exports.pickFilesToImport = exports.getComponentDimensions = exports.getAssetPositionForDrop = exports.getCompositionPositionForDrop = exports.getElementPositionForDrop = exports.getAssetElementForDroppedFile = exports.getAssetElementFromPath = exports.getAssetElement = void 0;
|
|
4
4
|
const media_utils_1 = require("@remotion/media-utils");
|
|
5
5
|
const studio_shared_1 = require("@remotion/studio-shared");
|
|
6
6
|
const remotion_1 = require("remotion");
|
|
@@ -11,6 +11,16 @@ const install_required_package_1 = require("../helpers/install-required-package"
|
|
|
11
11
|
const call_api_1 = require("./call-api");
|
|
12
12
|
const NotificationCenter_1 = require("./Notifications/NotificationCenter");
|
|
13
13
|
const getAssetElement = ({ fileType, src, }) => {
|
|
14
|
+
if (fileType.type === 'webp' && fileType.animated) {
|
|
15
|
+
return {
|
|
16
|
+
type: 'asset',
|
|
17
|
+
assetType: 'animated-image',
|
|
18
|
+
src,
|
|
19
|
+
srcType: 'static',
|
|
20
|
+
dimensions: fileType.dimensions,
|
|
21
|
+
position: null,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
14
24
|
if (fileType.type === 'png' ||
|
|
15
25
|
fileType.type === 'jpeg' ||
|
|
16
26
|
fileType.type === 'webp' ||
|
|
@@ -82,7 +92,7 @@ const getAssetElementFromPath = (assetPath) => {
|
|
|
82
92
|
if (!extension || extension === assetPath.toLowerCase()) {
|
|
83
93
|
return null;
|
|
84
94
|
}
|
|
85
|
-
if (['png', 'jpg', 'jpeg', 'webp', 'bmp'].includes(extension)) {
|
|
95
|
+
if (['png', 'jpg', 'jpeg', 'webp', 'bmp', 'svg'].includes(extension)) {
|
|
86
96
|
return {
|
|
87
97
|
type: 'asset',
|
|
88
98
|
assetType: 'image',
|
|
@@ -135,6 +145,17 @@ const getAssetElementFromPath = (assetPath) => {
|
|
|
135
145
|
return null;
|
|
136
146
|
};
|
|
137
147
|
exports.getAssetElementFromPath = getAssetElementFromPath;
|
|
148
|
+
const getAssetElementForDroppedFile = ({ fileType, src, }) => {
|
|
149
|
+
const detectedElement = (0, exports.getAssetElement)({ fileType, src });
|
|
150
|
+
if (detectedElement !== null) {
|
|
151
|
+
return detectedElement;
|
|
152
|
+
}
|
|
153
|
+
if (fileType.type !== 'unknown' || !src.toLowerCase().endsWith('.svg')) {
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
return (0, exports.getAssetElementFromPath)(src);
|
|
157
|
+
};
|
|
158
|
+
exports.getAssetElementForDroppedFile = getAssetElementForDroppedFile;
|
|
138
159
|
const getAssetLabel = (element) => {
|
|
139
160
|
if (element.type !== 'asset') {
|
|
140
161
|
throw new Error('Expected asset element');
|
|
@@ -194,6 +215,16 @@ const getCompositionPositionForDrop = ({ compositionDimensions, destinationDimen
|
|
|
194
215
|
});
|
|
195
216
|
};
|
|
196
217
|
exports.getCompositionPositionForDrop = getCompositionPositionForDrop;
|
|
218
|
+
const getAssetPositionForDrop = ({ assetDimensions, destinationDimensions, dropPosition, }) => {
|
|
219
|
+
if (assetDimensions !== null &&
|
|
220
|
+
destinationDimensions !== null &&
|
|
221
|
+
assetDimensions.width === destinationDimensions.width &&
|
|
222
|
+
assetDimensions.height === destinationDimensions.height) {
|
|
223
|
+
return null;
|
|
224
|
+
}
|
|
225
|
+
return getCenteredPosition({ dimensions: assetDimensions, dropPosition });
|
|
226
|
+
};
|
|
227
|
+
exports.getAssetPositionForDrop = getAssetPositionForDrop;
|
|
197
228
|
const getComponentPropNumber = (props, name) => {
|
|
198
229
|
const prop = props.find((p) => p.name === name);
|
|
199
230
|
return typeof (prop === null || prop === void 0 ? void 0 : prop.value) === 'number' ? prop.value : null;
|
|
@@ -237,6 +268,10 @@ const getVideoDimensions = async (src) => {
|
|
|
237
268
|
return { width: metadata.width, height: metadata.height };
|
|
238
269
|
};
|
|
239
270
|
const getFileDimensions = async ({ file, fileType, }) => {
|
|
271
|
+
if (fileType.type === 'unknown' && file.name.toLowerCase().endsWith('.svg')) {
|
|
272
|
+
const objectUrl = URL.createObjectURL(file);
|
|
273
|
+
return getImageDimensions({ revokeObjectUrl: true, src: objectUrl });
|
|
274
|
+
}
|
|
240
275
|
if (fileType.type === 'wav' ||
|
|
241
276
|
fileType.type === 'mp3' ||
|
|
242
277
|
fileType.type === 'aac' ||
|
|
@@ -274,7 +309,7 @@ const getStaticAssetDimensions = (assetPath) => {
|
|
|
274
309
|
const extension = (_a = assetPath.split('.').pop()) === null || _a === void 0 ? void 0 : _a.toLowerCase();
|
|
275
310
|
const src = (0, remotion_1.staticFile)(assetPath);
|
|
276
311
|
if (extension &&
|
|
277
|
-
['png', 'jpg', 'jpeg', 'webp', 'bmp', 'gif', 'apng'].includes(extension)) {
|
|
312
|
+
['png', 'jpg', 'jpeg', 'webp', 'bmp', 'gif', 'apng', 'svg'].includes(extension)) {
|
|
278
313
|
return getImageDimensions({ revokeObjectUrl: false, src });
|
|
279
314
|
}
|
|
280
315
|
if (extension &&
|
|
@@ -302,7 +337,7 @@ const getStaticAssetDimensionsOrNull = async (assetPath) => {
|
|
|
302
337
|
const getStaticAssetFileType = async (assetPath) => {
|
|
303
338
|
var _a;
|
|
304
339
|
const extension = (_a = assetPath.split('.').pop()) === null || _a === void 0 ? void 0 : _a.toLowerCase();
|
|
305
|
-
if (extension !== 'png' && extension !== 'apng') {
|
|
340
|
+
if (extension !== 'png' && extension !== 'apng' && extension !== 'webp') {
|
|
306
341
|
return null;
|
|
307
342
|
}
|
|
308
343
|
try {
|
|
@@ -388,7 +423,7 @@ const insertAssetElement = async ({ compositionFile, compositionId, element, })
|
|
|
388
423
|
const downloadRemoteAsset = (url) => {
|
|
389
424
|
return (0, call_api_1.callApi)('/api/download-remote-asset', { url });
|
|
390
425
|
};
|
|
391
|
-
const importAssets = async ({ compositionFile, compositionId, dropPosition, files, }) => {
|
|
426
|
+
const importAssets = async ({ compositionFile, compositionId, destinationDimensions, dropPosition, files, }) => {
|
|
392
427
|
var _a;
|
|
393
428
|
if (files.length === 0) {
|
|
394
429
|
return;
|
|
@@ -418,7 +453,7 @@ const importAssets = async ({ compositionFile, compositionId, dropPosition, file
|
|
|
418
453
|
for (const file of files) {
|
|
419
454
|
const contents = await file.arrayBuffer();
|
|
420
455
|
const fileType = (0, studio_shared_1.detectFileType)(new Uint8Array(contents));
|
|
421
|
-
const element = (0, exports.
|
|
456
|
+
const element = (0, exports.getAssetElementForDroppedFile)({
|
|
422
457
|
fileType,
|
|
423
458
|
src: file.name,
|
|
424
459
|
});
|
|
@@ -436,14 +471,16 @@ const importAssets = async ({ compositionFile, compositionId, dropPosition, file
|
|
|
436
471
|
addedStaticFiles.push(file.name);
|
|
437
472
|
}
|
|
438
473
|
const dimensions = await getFileDimensionsOrNull({ file, fileType });
|
|
474
|
+
const resolvedDimensions = (_a = element.dimensions) !== null && _a !== void 0 ? _a : dimensions;
|
|
439
475
|
const inserted = await insertAssetElement({
|
|
440
476
|
compositionFile,
|
|
441
477
|
compositionId,
|
|
442
478
|
element: {
|
|
443
479
|
...element,
|
|
444
|
-
dimensions:
|
|
445
|
-
position:
|
|
446
|
-
|
|
480
|
+
dimensions: resolvedDimensions,
|
|
481
|
+
position: (0, exports.getAssetPositionForDrop)({
|
|
482
|
+
assetDimensions: resolvedDimensions,
|
|
483
|
+
destinationDimensions,
|
|
447
484
|
dropPosition,
|
|
448
485
|
}),
|
|
449
486
|
},
|
|
@@ -463,7 +500,7 @@ const importAssets = async ({ compositionFile, compositionId, dropPosition, file
|
|
|
463
500
|
}
|
|
464
501
|
};
|
|
465
502
|
exports.importAssets = importAssets;
|
|
466
|
-
const importRemoteAsset = async ({ compositionFile, compositionId, dropPosition, url, }) => {
|
|
503
|
+
const importRemoteAsset = async ({ compositionFile, compositionId, destinationDimensions, dropPosition, url, }) => {
|
|
467
504
|
try {
|
|
468
505
|
const { assetPath, created, element } = await downloadRemoteAsset(url);
|
|
469
506
|
if (created) {
|
|
@@ -478,8 +515,9 @@ const importRemoteAsset = async ({ compositionFile, compositionId, dropPosition,
|
|
|
478
515
|
compositionId,
|
|
479
516
|
element: {
|
|
480
517
|
...element,
|
|
481
|
-
position:
|
|
482
|
-
|
|
518
|
+
position: (0, exports.getAssetPositionForDrop)({
|
|
519
|
+
assetDimensions: element.dimensions,
|
|
520
|
+
destinationDimensions,
|
|
483
521
|
dropPosition,
|
|
484
522
|
}),
|
|
485
523
|
},
|
|
@@ -523,7 +561,7 @@ const insertRemoteAudio = async ({ compositionFile, compositionId, url, }) => {
|
|
|
523
561
|
}
|
|
524
562
|
};
|
|
525
563
|
exports.insertRemoteAudio = insertRemoteAudio;
|
|
526
|
-
const insertExistingAssets = async ({ assetPaths, compositionFile, compositionId, dropPosition, }) => {
|
|
564
|
+
const insertExistingAssets = async ({ assetPaths, compositionFile, compositionId, destinationDimensions, dropPosition, }) => {
|
|
527
565
|
var _a;
|
|
528
566
|
if (assetPaths.length === 0) {
|
|
529
567
|
return;
|
|
@@ -544,8 +582,9 @@ const insertExistingAssets = async ({ assetPaths, compositionFile, compositionId
|
|
|
544
582
|
element: {
|
|
545
583
|
...element,
|
|
546
584
|
dimensions,
|
|
547
|
-
position:
|
|
548
|
-
dimensions,
|
|
585
|
+
position: (0, exports.getAssetPositionForDrop)({
|
|
586
|
+
assetDimensions: dimensions,
|
|
587
|
+
destinationDimensions,
|
|
549
588
|
dropPosition,
|
|
550
589
|
}),
|
|
551
590
|
},
|