@remotion/studio-shared 4.0.515 → 4.0.516

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.
@@ -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>;
@@ -524,6 +524,56 @@ var detectFileType = (data) => {
524
524
  }
525
525
  return { type: "unknown" };
526
526
  };
527
+ // src/remote-asset.ts
528
+ var maxRemoteAssetSize = 50 * 1024 * 1024;
529
+ var remoteAssetDownloadTimeout = 15000;
530
+ var remoteAssetAcceptHeader = "image/png,image/apng,image/jpeg,image/webp,image/bmp,image/gif";
531
+ var extensionsForFileType = {
532
+ png: ["png"],
533
+ apng: ["png", "apng"],
534
+ jpeg: ["jpg", "jpeg"],
535
+ webp: ["webp"],
536
+ bmp: ["bmp"],
537
+ gif: ["gif"]
538
+ };
539
+ var getRemoteAssetFilename = ({
540
+ fileType,
541
+ url
542
+ }) => {
543
+ const encodedBasename = url.pathname.slice(url.pathname.lastIndexOf("/") + 1);
544
+ let basename;
545
+ try {
546
+ basename = decodeURIComponent(encodedBasename);
547
+ } catch {
548
+ basename = encodedBasename;
549
+ }
550
+ const sanitized = Array.from(basename).map((character) => {
551
+ const charCode = character.charCodeAt(0);
552
+ return charCode <= 31 || '<>:"/\\|?*'.includes(character) ? "-" : character;
553
+ }).join("").trim().replace(/^[. ]+|[. ]+$/g, "");
554
+ const filenameWithoutFallback = sanitized === "" ? "image" : sanitized;
555
+ const extensions = extensionsForFileType[fileType.type];
556
+ const lastDot = filenameWithoutFallback.lastIndexOf(".");
557
+ const extension = lastDot > 0 ? filenameWithoutFallback.slice(lastDot + 1).toLowerCase() : "";
558
+ if (extensions.includes(extension)) {
559
+ return filenameWithoutFallback;
560
+ }
561
+ const withoutExtension = extension ? filenameWithoutFallback.slice(0, -(extension.length + 1)) : filenameWithoutFallback;
562
+ const safeName = withoutExtension === "" ? "image" : withoutExtension;
563
+ return `${safeName}.${extensions[0]}`;
564
+ };
565
+ var getRemoteAssetElement = ({
566
+ assetPath,
567
+ fileType
568
+ }) => ({
569
+ type: "asset",
570
+ assetType: fileType.type === "gif" ? "gif" : fileType.type === "apng" || fileType.type === "webp" && fileType.animated ? "animated-image" : "image",
571
+ src: assetPath,
572
+ srcType: "static",
573
+ dimensions: fileType.dimensions,
574
+ durationInFrames: null,
575
+ position: null
576
+ });
527
577
  // src/easing-clipboard-data.ts
528
578
  var isRecord2 = (value) => {
529
579
  return typeof value === "object" && value !== null && !Array.isArray(value);
@@ -3179,6 +3229,7 @@ var stringifyDefaultProps = ({
3179
3229
  // src/studio-entry-points.ts
3180
3230
  var getStudioEntryPoints = ({
3181
3231
  fastRefreshRuntime,
3232
+ reactScan,
3182
3233
  environmentSetup,
3183
3234
  sequenceStackTraces,
3184
3235
  userDefinedComponent,
@@ -3186,6 +3237,7 @@ var getStudioEntryPoints = ({
3186
3237
  studioRenderEntry
3187
3238
  }) => [
3188
3239
  fastRefreshRuntime,
3240
+ reactScan,
3189
3241
  environmentSetup,
3190
3242
  sequenceStackTraces,
3191
3243
  userDefinedComponent,
@@ -3977,6 +4029,8 @@ export {
3977
4029
  stringifySequenceExpandedRowKey,
3978
4030
  stringifyDefaultProps,
3979
4031
  splitAnsi,
4032
+ remoteAssetDownloadTimeout,
4033
+ remoteAssetAcceptHeader,
3980
4034
  parseSpringEasingConfig,
3981
4035
  parseSequencePropClipboardDataResult,
3982
4036
  parseSequencePropClipboardData,
@@ -4003,6 +4057,7 @@ export {
4003
4057
  optimisticAddSequenceKeyframe,
4004
4058
  optimisticAddEffectKeyframe,
4005
4059
  moveKeyframesInPropStatus,
4060
+ maxRemoteAssetSize,
4006
4061
  keyframeInterpolationFunctions,
4007
4062
  isValidPackageName,
4008
4063
  isUrl,
@@ -4020,6 +4075,8 @@ export {
4020
4075
  getSchemaFieldGroup,
4021
4076
  getRequiredPackageForInsertableElement,
4022
4077
  getRequiredPackageForEffectImportPath,
4078
+ getRemoteAssetFilename,
4079
+ getRemoteAssetElement,
4023
4080
  getProjectName,
4024
4081
  getPolyKeyframeEasing,
4025
4082
  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';
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.isInteractivitySchemaFieldKeyframable = exports.getKeyframeInterpolationFunctionForSchemaField = exports.isSchemaFieldHoldOnly = exports.getKeyframeInterpolationFunction = exports.canEditEasingForInterpolationFunction = 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.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 = 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; } });
@@ -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,
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.515",
6
+ "version": "4.0.516",
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.515",
25
- "remotion": "4.0.515"
24
+ "@remotion/studio-protocol": "4.0.516",
25
+ "remotion": "4.0.516"
26
26
  },
27
27
  "devDependencies": {
28
- "@remotion/renderer": "4.0.515",
29
- "@remotion/eslint-config-internal": "4.0.515",
28
+ "@remotion/renderer": "4.0.516",
29
+ "@remotion/eslint-config-internal": "4.0.516",
30
30
  "eslint": "9.19.0",
31
31
  "@typescript/native-preview": "7.0.0-dev.20260217.1"
32
32
  },