@remotion/studio-shared 4.0.478 → 4.0.481

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/index.d.ts CHANGED
@@ -4,10 +4,12 @@ export { ASSET_DRAG_MIME_TYPE, makeAssetDragData, parseAssetDragData, type Asset
4
4
  export type { ApplyVisualControlCodemod, RecastCodemod } from './codemods';
5
5
  export { COMPONENT_DRAG_MIME_TYPE, areComponentProps, isComponentIdentifier, isComponentImportPath, makeComponentDragData, parseComponentDragData, type ComponentDimensions, type ComponentDragData, type ComponentProp, } from './component-drag-data';
6
6
  export { DEFAULT_BUFFER_STATE_DELAY_IN_MILLISECONDS } from './default-buffer-state-delay-in-milliseconds';
7
- export { KEYFRAME_EASING_PRESETS, type KeyframeEasingPreset, } from './keyframe-easing-presets';
7
+ export { KEYFRAME_EASING_PRESETS, LINEAR_KEYFRAME_EASING, type KeyframeEasing, type KeyframeEasingPreset, } from './keyframe-easing-presets';
8
8
  export { detectFileType, isImageFileType, type FileDimensions, type FileType, type ImageFileType, } from './detect-file-type';
9
+ export { parseEasingClipboardData, parseEasingClipboardDataResult, type EasingClipboardData, type EasingClipboardDataParseResult, } from './easing-clipboard-data';
9
10
  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';
10
11
  export { EFFECT_DRAG_MIME_TYPE, parseEffectDragData, type EffectDragData, } from './effect-drag-data';
12
+ export { EFFECT_CATALOG, getEffectCatalogCategories, getEffectDocumentationLink, getEffectDocumentationPath, getEffectPreviewAlt, getEffectPreviewSource, makeEffectDragDataFromCatalogItem, type EffectCatalogCategory, type EffectCatalogItem, } from './effect-catalog';
11
13
  export { EventSourceEvent } from './event-source-event';
12
14
  export { formatBytes } from './format-bytes';
13
15
  export { getAllSchemaKeys } from './get-all-keys';
@@ -16,7 +18,8 @@ export { ErrorLocation, getLocationFromBuildError, } from './get-location-from-b
16
18
  export { getProjectName } from './get-project-name';
17
19
  export type { GitSource } from './git-source';
18
20
  export { HotMiddlewareMessage, HotMiddlewareOptions, ModuleMap, hotMiddlewareOptions, } from './hot-middleware';
19
- export { getKeyframeInterpolationFunction, getKeyframeInterpolationFunctionForSchemaField, isKeyframeInterpolationFunction, isSchemaFieldKeyframable, isSequenceFieldSchemaKeyframable, keyframeInterpolationFunctions, type KeyframeInterpolationFunction, } from './keyframe-interpolation-function';
21
+ export { getKeyframeInterpolationFunction, getKeyframeInterpolationFunctionForSchemaField, isKeyframeInterpolationFunction, isSchemaFieldKeyframable, isInteractivitySchemaFieldKeyframable, keyframeInterpolationFunctions, type KeyframeInterpolationFunction, } from './keyframe-interpolation-function';
22
+ export { DEFAULT_SPRING_EASING, parseSpringEasingConfig, type SpringKeyframeEasing, } from './parse-spring-easing-config';
20
23
  export { DEFAULT_TIMELINE_TRACKS } from './max-timeline-tracks';
21
24
  export { Pkgs, apiDocs, descriptions, extraPackages, installableMap, packages, type ExtraPackage, } from './package-info';
22
25
  export { PackageManager } from './package-manager';
@@ -26,7 +29,7 @@ export { AggregateRenderProgress, ArtifactProgress, BrowserDownloadState, Browse
26
29
  export type { CompletedClientRender } from './render-job';
27
30
  export { getRequiredPackageForEffectImportPath, getRequiredPackageForInsertableElement, } from './required-package';
28
31
  export { SCHEMA_FIELD_ROW_HEIGHT, getEffectFieldsToShow, getFieldsToShow, } from './schema-field-info';
29
- export type { AnySchemaFieldInfo, DragOverrides, EffectSchemaFieldInfo, PropStatuses, SchemaFieldInfo, SequenceControls, SequenceSchemaFieldInfo, } from './schema-field-info';
32
+ export type { AnySchemaFieldInfo, DragOverrides, EffectSchemaFieldInfo, PropStatuses, SchemaFieldInfo, SequenceControls, InteractivitySchemaFieldInfo, } from './schema-field-info';
30
33
  export { SFX_DRAG_MIME_TYPE, parseSfxDragData, type SfxDragData, } from './sfx-drag-data';
31
34
  export { ScriptLine, SomeStackFrame, StackFrame, SymbolicatedStackFrame, } from './stack-types';
32
35
  export { EnumPath, stringifyDefaultProps } from './stringify-default-props';
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.optimisticDeleteEffectKeyframe = exports.optimisticAddSequenceKeyframe = exports.optimisticAddEffectKeyframe = exports.stringifyDefaultProps = exports.parseSfxDragData = exports.SFX_DRAG_MIME_TYPE = exports.getFieldsToShow = exports.getEffectFieldsToShow = exports.SCHEMA_FIELD_ROW_HEIGHT = exports.getRequiredPackageForInsertableElement = exports.getRequiredPackageForEffectImportPath = exports.packages = exports.installableMap = exports.extraPackages = exports.descriptions = exports.apiDocs = exports.DEFAULT_TIMELINE_TRACKS = exports.keyframeInterpolationFunctions = exports.isSequenceFieldSchemaKeyframable = exports.isSchemaFieldKeyframable = exports.isKeyframeInterpolationFunction = exports.getKeyframeInterpolationFunctionForSchemaField = exports.getKeyframeInterpolationFunction = exports.hotMiddlewareOptions = exports.getProjectName = exports.getLocationFromBuildError = exports.getDefaultOutLocation = exports.getAllSchemaKeys = exports.formatBytes = exports.parseEffectDragData = exports.EFFECT_DRAG_MIME_TYPE = exports.parseEffectPropClipboardDataResult = exports.parseEffectPropClipboardData = exports.parseEffectClipboardDataResult = exports.parseEffectClipboardData = exports.isImageFileType = exports.detectFileType = exports.KEYFRAME_EASING_PRESETS = exports.DEFAULT_BUFFER_STATE_DELAY_IN_MILLISECONDS = exports.parseComponentDragData = exports.makeComponentDragData = exports.isComponentImportPath = exports.isComponentIdentifier = exports.areComponentProps = exports.COMPONENT_DRAG_MIME_TYPE = exports.parseAssetDragData = exports.makeAssetDragData = exports.ASSET_DRAG_MIME_TYPE = 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 = void 0;
17
+ exports.installableMap = exports.extraPackages = exports.descriptions = exports.apiDocs = exports.DEFAULT_TIMELINE_TRACKS = exports.parseSpringEasingConfig = exports.DEFAULT_SPRING_EASING = exports.keyframeInterpolationFunctions = exports.isInteractivitySchemaFieldKeyframable = exports.isSchemaFieldKeyframable = exports.isKeyframeInterpolationFunction = exports.getKeyframeInterpolationFunctionForSchemaField = exports.getKeyframeInterpolationFunction = exports.hotMiddlewareOptions = exports.getProjectName = exports.getLocationFromBuildError = exports.getDefaultOutLocation = exports.getAllSchemaKeys = exports.formatBytes = exports.makeEffectDragDataFromCatalogItem = exports.getEffectPreviewSource = exports.getEffectPreviewAlt = exports.getEffectDocumentationPath = exports.getEffectDocumentationLink = exports.getEffectCatalogCategories = exports.EFFECT_CATALOG = exports.parseEffectDragData = exports.EFFECT_DRAG_MIME_TYPE = exports.parseEffectPropClipboardDataResult = exports.parseEffectPropClipboardData = exports.parseEffectClipboardDataResult = exports.parseEffectClipboardData = exports.parseEasingClipboardDataResult = exports.parseEasingClipboardData = exports.isImageFileType = exports.detectFileType = exports.LINEAR_KEYFRAME_EASING = exports.KEYFRAME_EASING_PRESETS = exports.DEFAULT_BUFFER_STATE_DELAY_IN_MILLISECONDS = exports.parseComponentDragData = exports.makeComponentDragData = exports.isComponentImportPath = exports.isComponentIdentifier = exports.areComponentProps = exports.COMPONENT_DRAG_MIME_TYPE = exports.parseAssetDragData = exports.makeAssetDragData = exports.ASSET_DRAG_MIME_TYPE = 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.stringifyDefaultProps = exports.parseSfxDragData = exports.SFX_DRAG_MIME_TYPE = exports.getFieldsToShow = exports.getEffectFieldsToShow = exports.SCHEMA_FIELD_ROW_HEIGHT = exports.getRequiredPackageForInsertableElement = exports.getRequiredPackageForEffectImportPath = exports.packages = 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; } });
@@ -35,9 +35,13 @@ const default_buffer_state_delay_in_milliseconds_1 = require("./default-buffer-s
35
35
  Object.defineProperty(exports, "DEFAULT_BUFFER_STATE_DELAY_IN_MILLISECONDS", { enumerable: true, get: function () { return default_buffer_state_delay_in_milliseconds_1.DEFAULT_BUFFER_STATE_DELAY_IN_MILLISECONDS; } });
36
36
  const keyframe_easing_presets_1 = require("./keyframe-easing-presets");
37
37
  Object.defineProperty(exports, "KEYFRAME_EASING_PRESETS", { enumerable: true, get: function () { return keyframe_easing_presets_1.KEYFRAME_EASING_PRESETS; } });
38
+ Object.defineProperty(exports, "LINEAR_KEYFRAME_EASING", { enumerable: true, get: function () { return keyframe_easing_presets_1.LINEAR_KEYFRAME_EASING; } });
38
39
  const detect_file_type_1 = require("./detect-file-type");
39
40
  Object.defineProperty(exports, "detectFileType", { enumerable: true, get: function () { return detect_file_type_1.detectFileType; } });
40
41
  Object.defineProperty(exports, "isImageFileType", { enumerable: true, get: function () { return detect_file_type_1.isImageFileType; } });
42
+ const easing_clipboard_data_1 = require("./easing-clipboard-data");
43
+ Object.defineProperty(exports, "parseEasingClipboardData", { enumerable: true, get: function () { return easing_clipboard_data_1.parseEasingClipboardData; } });
44
+ Object.defineProperty(exports, "parseEasingClipboardDataResult", { enumerable: true, get: function () { return easing_clipboard_data_1.parseEasingClipboardDataResult; } });
41
45
  const effect_clipboard_data_1 = require("./effect-clipboard-data");
42
46
  Object.defineProperty(exports, "parseEffectClipboardData", { enumerable: true, get: function () { return effect_clipboard_data_1.parseEffectClipboardData; } });
43
47
  Object.defineProperty(exports, "parseEffectClipboardDataResult", { enumerable: true, get: function () { return effect_clipboard_data_1.parseEffectClipboardDataResult; } });
@@ -46,6 +50,14 @@ Object.defineProperty(exports, "parseEffectPropClipboardDataResult", { enumerabl
46
50
  const effect_drag_data_1 = require("./effect-drag-data");
47
51
  Object.defineProperty(exports, "EFFECT_DRAG_MIME_TYPE", { enumerable: true, get: function () { return effect_drag_data_1.EFFECT_DRAG_MIME_TYPE; } });
48
52
  Object.defineProperty(exports, "parseEffectDragData", { enumerable: true, get: function () { return effect_drag_data_1.parseEffectDragData; } });
53
+ const effect_catalog_1 = require("./effect-catalog");
54
+ Object.defineProperty(exports, "EFFECT_CATALOG", { enumerable: true, get: function () { return effect_catalog_1.EFFECT_CATALOG; } });
55
+ Object.defineProperty(exports, "getEffectCatalogCategories", { enumerable: true, get: function () { return effect_catalog_1.getEffectCatalogCategories; } });
56
+ Object.defineProperty(exports, "getEffectDocumentationLink", { enumerable: true, get: function () { return effect_catalog_1.getEffectDocumentationLink; } });
57
+ Object.defineProperty(exports, "getEffectDocumentationPath", { enumerable: true, get: function () { return effect_catalog_1.getEffectDocumentationPath; } });
58
+ Object.defineProperty(exports, "getEffectPreviewAlt", { enumerable: true, get: function () { return effect_catalog_1.getEffectPreviewAlt; } });
59
+ Object.defineProperty(exports, "getEffectPreviewSource", { enumerable: true, get: function () { return effect_catalog_1.getEffectPreviewSource; } });
60
+ Object.defineProperty(exports, "makeEffectDragDataFromCatalogItem", { enumerable: true, get: function () { return effect_catalog_1.makeEffectDragDataFromCatalogItem; } });
49
61
  const format_bytes_1 = require("./format-bytes");
50
62
  Object.defineProperty(exports, "formatBytes", { enumerable: true, get: function () { return format_bytes_1.formatBytes; } });
51
63
  const get_all_keys_1 = require("./get-all-keys");
@@ -63,8 +75,11 @@ Object.defineProperty(exports, "getKeyframeInterpolationFunction", { enumerable:
63
75
  Object.defineProperty(exports, "getKeyframeInterpolationFunctionForSchemaField", { enumerable: true, get: function () { return keyframe_interpolation_function_1.getKeyframeInterpolationFunctionForSchemaField; } });
64
76
  Object.defineProperty(exports, "isKeyframeInterpolationFunction", { enumerable: true, get: function () { return keyframe_interpolation_function_1.isKeyframeInterpolationFunction; } });
65
77
  Object.defineProperty(exports, "isSchemaFieldKeyframable", { enumerable: true, get: function () { return keyframe_interpolation_function_1.isSchemaFieldKeyframable; } });
66
- Object.defineProperty(exports, "isSequenceFieldSchemaKeyframable", { enumerable: true, get: function () { return keyframe_interpolation_function_1.isSequenceFieldSchemaKeyframable; } });
78
+ Object.defineProperty(exports, "isInteractivitySchemaFieldKeyframable", { enumerable: true, get: function () { return keyframe_interpolation_function_1.isInteractivitySchemaFieldKeyframable; } });
67
79
  Object.defineProperty(exports, "keyframeInterpolationFunctions", { enumerable: true, get: function () { return keyframe_interpolation_function_1.keyframeInterpolationFunctions; } });
80
+ const parse_spring_easing_config_1 = require("./parse-spring-easing-config");
81
+ Object.defineProperty(exports, "DEFAULT_SPRING_EASING", { enumerable: true, get: function () { return parse_spring_easing_config_1.DEFAULT_SPRING_EASING; } });
82
+ Object.defineProperty(exports, "parseSpringEasingConfig", { enumerable: true, get: function () { return parse_spring_easing_config_1.parseSpringEasingConfig; } });
68
83
  const max_timeline_tracks_1 = require("./max-timeline-tracks");
69
84
  Object.defineProperty(exports, "DEFAULT_TIMELINE_TRACKS", { enumerable: true, get: function () { return max_timeline_tracks_1.DEFAULT_TIMELINE_TRACKS; } });
70
85
  const package_info_1 = require("./package-info");
@@ -1,7 +1,9 @@
1
- export type KeyframeEasing = 'linear' | [number, number, number, number];
1
+ import type { CanUpdateSequencePropStatusEasing } from 'remotion';
2
+ export type KeyframeEasing = CanUpdateSequencePropStatusEasing;
2
3
  export type KeyframeEasingPreset = {
3
- readonly id: 'ease-in' | 'ease-out' | 'ease-in-out';
4
+ readonly id: 'ease-in' | 'ease-out' | 'ease-in-out' | 'spring' | 'bouncy-spring';
4
5
  readonly label: string;
5
6
  readonly easing: KeyframeEasing;
6
7
  };
8
+ export declare const LINEAR_KEYFRAME_EASING: KeyframeEasing;
7
9
  export declare const KEYFRAME_EASING_PRESETS: KeyframeEasingPreset[];
@@ -1,8 +1,43 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.KEYFRAME_EASING_PRESETS = void 0;
3
+ exports.KEYFRAME_EASING_PRESETS = exports.LINEAR_KEYFRAME_EASING = void 0;
4
+ exports.LINEAR_KEYFRAME_EASING = { type: 'linear' };
4
5
  exports.KEYFRAME_EASING_PRESETS = [
5
- { id: 'ease-in', label: 'Ease in', easing: [0.42, 0, 1, 1] },
6
- { id: 'ease-out', label: 'Ease out', easing: [0, 0, 0.58, 1] },
7
- { id: 'ease-in-out', label: 'Ease in-out', easing: [0.42, 0, 0.58, 1] },
6
+ {
7
+ id: 'ease-in',
8
+ label: 'Ease in',
9
+ easing: { type: 'bezier', x1: 0.42, y1: 0, x2: 1, y2: 1 },
10
+ },
11
+ {
12
+ id: 'ease-out',
13
+ label: 'Ease out',
14
+ easing: { type: 'bezier', x1: 0, y1: 0, x2: 0.58, y2: 1 },
15
+ },
16
+ {
17
+ id: 'ease-in-out',
18
+ label: 'Ease in-out',
19
+ easing: { type: 'bezier', x1: 0.42, y1: 0, x2: 0.58, y2: 1 },
20
+ },
21
+ {
22
+ id: 'spring',
23
+ label: 'Spring',
24
+ easing: {
25
+ type: 'spring',
26
+ damping: 10,
27
+ mass: 1,
28
+ overshootClamping: false,
29
+ stiffness: 100,
30
+ },
31
+ },
32
+ {
33
+ id: 'bouncy-spring',
34
+ label: 'Bouncy spring',
35
+ easing: {
36
+ type: 'spring',
37
+ damping: 5,
38
+ mass: 1,
39
+ overshootClamping: false,
40
+ stiffness: 120,
41
+ },
42
+ },
8
43
  ];
@@ -1,18 +1,18 @@
1
- import type { SequenceFieldSchema, SequenceSchema } from 'remotion';
1
+ import type { InteractivitySchemaField, InteractivitySchema } from 'remotion';
2
2
  export declare const keyframeInterpolationFunctions: readonly ["interpolate", "interpolateColors"];
3
3
  export type KeyframeInterpolationFunction = (typeof keyframeInterpolationFunctions)[number];
4
4
  export declare const isKeyframeInterpolationFunction: (name: string) => name is "interpolate" | "interpolateColors";
5
- export declare const isSequenceFieldSchemaKeyframable: (field: SequenceFieldSchema | undefined) => boolean;
5
+ export declare const isInteractivitySchemaFieldKeyframable: (field: InteractivitySchemaField | undefined) => boolean;
6
6
  export declare const isSchemaFieldKeyframable: ({ schema, key, }: {
7
- schema: SequenceSchema | null;
7
+ schema: InteractivitySchema | null;
8
8
  key: string;
9
9
  }) => boolean;
10
10
  export declare const getKeyframeInterpolationFunctionForSchemaField: ({ schema, key, }: {
11
- schema: SequenceSchema | null;
11
+ schema: InteractivitySchema | null;
12
12
  key: string;
13
13
  }) => "interpolate" | "interpolateColors" | null;
14
14
  export declare const getKeyframeInterpolationFunction: ({ schema, key, staticValue, newValue, }: {
15
- schema: SequenceSchema | null;
15
+ schema: InteractivitySchema | null;
16
16
  key: string;
17
17
  staticValue: unknown;
18
18
  newValue: unknown;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getKeyframeInterpolationFunction = exports.getKeyframeInterpolationFunctionForSchemaField = exports.isSchemaFieldKeyframable = exports.isSequenceFieldSchemaKeyframable = exports.isKeyframeInterpolationFunction = exports.keyframeInterpolationFunctions = void 0;
3
+ exports.getKeyframeInterpolationFunction = exports.getKeyframeInterpolationFunctionForSchemaField = exports.isSchemaFieldKeyframable = exports.isInteractivitySchemaFieldKeyframable = exports.isKeyframeInterpolationFunction = exports.keyframeInterpolationFunctions = void 0;
4
4
  exports.keyframeInterpolationFunctions = [
5
5
  'interpolate',
6
6
  'interpolateColors',
@@ -9,7 +9,7 @@ const isKeyframeInterpolationFunction = (name) => {
9
9
  return exports.keyframeInterpolationFunctions.includes(name);
10
10
  };
11
11
  exports.isKeyframeInterpolationFunction = isKeyframeInterpolationFunction;
12
- const isSequenceFieldSchemaKeyframable = (field) => {
12
+ const isInteractivitySchemaFieldKeyframable = (field) => {
13
13
  if (!field) {
14
14
  return true;
15
15
  }
@@ -18,7 +18,7 @@ const isSequenceFieldSchemaKeyframable = (field) => {
18
18
  }
19
19
  return field.keyframable !== false;
20
20
  };
21
- exports.isSequenceFieldSchemaKeyframable = isSequenceFieldSchemaKeyframable;
21
+ exports.isInteractivitySchemaFieldKeyframable = isInteractivitySchemaFieldKeyframable;
22
22
  const findFieldInSchema = (schema, key) => {
23
23
  if (key in schema) {
24
24
  return schema[key];
@@ -38,7 +38,7 @@ const findFieldInSchema = (schema, key) => {
38
38
  };
39
39
  const isSchemaFieldKeyframable = ({ schema, key, }) => {
40
40
  const field = schema ? findFieldInSchema(schema, key) : undefined;
41
- return (0, exports.isSequenceFieldSchemaKeyframable)(field);
41
+ return (0, exports.isInteractivitySchemaFieldKeyframable)(field);
42
42
  };
43
43
  exports.isSchemaFieldKeyframable = isSchemaFieldKeyframable;
44
44
  const getKeyframeInterpolationFunctionForSchemaField = ({ schema, key, }) => {
@@ -1,10 +1,10 @@
1
- import { type CanUpdateSequencePropsResponse, type SequenceSchema } from 'remotion';
1
+ import { type CanUpdateSequencePropsResponse, type InteractivitySchema } from 'remotion';
2
2
  export declare const optimisticAddSequenceKeyframe: ({ previous, fieldKey, frame, value, schema, }: {
3
3
  previous: CanUpdateSequencePropsResponse;
4
4
  fieldKey: string;
5
5
  frame: number;
6
6
  value: unknown;
7
- schema?: SequenceSchema | undefined;
7
+ schema?: InteractivitySchema | undefined;
8
8
  }) => CanUpdateSequencePropsResponse;
9
9
  export declare const optimisticAddEffectKeyframe: ({ previous, effectIndex, fieldKey, frame, value, schema, }: {
10
10
  previous: CanUpdateSequencePropsResponse;
@@ -12,5 +12,5 @@ export declare const optimisticAddEffectKeyframe: ({ previous, effectIndex, fiel
12
12
  fieldKey: string;
13
13
  frame: number;
14
14
  value: unknown;
15
- schema?: SequenceSchema | undefined;
15
+ schema?: InteractivitySchema | undefined;
16
16
  }) => CanUpdateSequencePropsResponse;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.optimisticAddEffectKeyframe = exports.optimisticAddSequenceKeyframe = void 0;
4
+ const keyframe_easing_presets_1 = require("./keyframe-easing-presets");
4
5
  const keyframe_interpolation_function_1 = require("./keyframe-interpolation-function");
5
6
  const addKeyframeToPropStatus = ({ status, fieldKey, frame, value, schema, }) => {
6
7
  var _a;
@@ -16,7 +17,7 @@ const addKeyframeToPropStatus = ({ status, fieldKey, frame, value, schema, }) =>
16
17
  const keyframes = [...status.keyframes, { frame, value }].sort((first, second) => first.frame - second.frame);
17
18
  const easing = [...status.easing];
18
19
  while (easing.length < keyframes.length - 1) {
19
- easing.push('linear');
20
+ easing.push(keyframe_easing_presets_1.LINEAR_KEYFRAME_EASING);
20
21
  }
21
22
  return {
22
23
  ...status,
@@ -1,8 +1,8 @@
1
- import { type CanUpdateSequencePropsResponse, type SequenceSchema } from 'remotion';
1
+ import { type CanUpdateSequencePropsResponse, type InteractivitySchema } from 'remotion';
2
2
  export declare const optimisticUpdateForEffectPropStatuses: ({ previous, effectIndex, fieldKey, value, schema, }: {
3
3
  previous: CanUpdateSequencePropsResponse;
4
4
  effectIndex: number;
5
5
  fieldKey: string;
6
6
  value: unknown;
7
- schema: SequenceSchema;
7
+ schema: InteractivitySchema;
8
8
  }) => CanUpdateSequencePropsResponse;
@@ -1,7 +1,7 @@
1
- import { type CanUpdateSequencePropsResponse, type SequenceSchema } from 'remotion';
1
+ import { type CanUpdateSequencePropsResponse, type InteractivitySchema } from 'remotion';
2
2
  export declare const optimisticUpdateForPropStatuses: ({ previous, fieldKey, value, schema, }: {
3
3
  previous: CanUpdateSequencePropsResponse;
4
4
  fieldKey: string;
5
5
  value: unknown;
6
- schema: SequenceSchema;
6
+ schema: InteractivitySchema;
7
7
  }) => CanUpdateSequencePropsResponse;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.optimisticUpdateEffectKeyframeSettings = exports.optimisticUpdateSequenceKeyframeSettings = void 0;
4
+ const keyframe_easing_presets_1 = require("./keyframe-easing-presets");
4
5
  const updateEasing = ({ easing, segmentCount, segmentIndex, value, }) => {
5
6
  if (!Number.isInteger(segmentIndex) ||
6
7
  segmentIndex < 0 ||
@@ -9,7 +10,7 @@ const updateEasing = ({ easing, segmentCount, segmentIndex, value, }) => {
9
10
  }
10
11
  const nextEasing = Array.from({ length: segmentCount }, (_, index) => {
11
12
  var _a;
12
- return (_a = easing[index]) !== null && _a !== void 0 ? _a : 'linear';
13
+ return (_a = easing[index]) !== null && _a !== void 0 ? _a : keyframe_easing_presets_1.LINEAR_KEYFRAME_EASING;
13
14
  });
14
15
  nextEasing[segmentIndex] = value;
15
16
  return nextEasing;
@@ -0,0 +1,9 @@
1
+ export type SpringKeyframeEasing = {
2
+ readonly type: 'spring';
3
+ damping: number;
4
+ mass: number;
5
+ overshootClamping: boolean;
6
+ stiffness: number;
7
+ };
8
+ export declare const DEFAULT_SPRING_EASING: SpringKeyframeEasing;
9
+ export declare const parseSpringEasingConfig: (node: unknown) => SpringKeyframeEasing | null;
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseSpringEasingConfig = exports.DEFAULT_SPRING_EASING = void 0;
4
+ exports.DEFAULT_SPRING_EASING = {
5
+ type: 'spring',
6
+ damping: 10,
7
+ mass: 1,
8
+ overshootClamping: false,
9
+ stiffness: 100,
10
+ };
11
+ const isAstNode = (value) => {
12
+ return (typeof value === 'object' &&
13
+ value !== null &&
14
+ typeof value.type === 'string');
15
+ };
16
+ const getNumericValue = (node) => {
17
+ if (node.type === 'NumericLiteral') {
18
+ return typeof node.value === 'number' ? node.value : null;
19
+ }
20
+ if (node.type === 'UnaryExpression' &&
21
+ (node.operator === '-' || node.operator === '+') &&
22
+ isAstNode(node.argument) &&
23
+ node.argument.type === 'NumericLiteral' &&
24
+ typeof node.argument.value === 'number') {
25
+ return node.operator === '-' ? -node.argument.value : node.argument.value;
26
+ }
27
+ if (node.type === 'TSAsExpression' && isAstNode(node.expression)) {
28
+ return getNumericValue(node.expression);
29
+ }
30
+ return null;
31
+ };
32
+ const getBooleanValue = (node) => {
33
+ if (node.type === 'BooleanLiteral') {
34
+ return typeof node.value === 'boolean' ? node.value : null;
35
+ }
36
+ if (node.type === 'TSAsExpression' && isAstNode(node.expression)) {
37
+ return getBooleanValue(node.expression);
38
+ }
39
+ return null;
40
+ };
41
+ const getObjectPropertyName = (prop) => {
42
+ if (prop.computed === true || !isAstNode(prop.key)) {
43
+ return null;
44
+ }
45
+ if (prop.key.type === 'Identifier') {
46
+ return typeof prop.key.name === 'string' ? prop.key.name : null;
47
+ }
48
+ if (prop.key.type === 'StringLiteral') {
49
+ return typeof prop.key.value === 'string' ? prop.key.value : null;
50
+ }
51
+ return null;
52
+ };
53
+ const parseSpringEasingConfig = (node) => {
54
+ if (node === undefined) {
55
+ return { ...exports.DEFAULT_SPRING_EASING };
56
+ }
57
+ if (!isAstNode(node)) {
58
+ return null;
59
+ }
60
+ if (node.type === 'TSAsExpression') {
61
+ return (0, exports.parseSpringEasingConfig)(node.expression);
62
+ }
63
+ if (node.type !== 'ObjectExpression' || !Array.isArray(node.properties)) {
64
+ return null;
65
+ }
66
+ const spring = { ...exports.DEFAULT_SPRING_EASING };
67
+ for (const prop of node.properties) {
68
+ if (!isAstNode(prop) || prop.type !== 'ObjectProperty') {
69
+ return null;
70
+ }
71
+ const key = getObjectPropertyName(prop);
72
+ if (!key || !isAstNode(prop.value)) {
73
+ return null;
74
+ }
75
+ if (key === 'damping' || key === 'mass' || key === 'stiffness') {
76
+ const numericValue = getNumericValue(prop.value);
77
+ if (numericValue === null ||
78
+ !Number.isFinite(numericValue) ||
79
+ numericValue <= 0) {
80
+ return null;
81
+ }
82
+ spring[key] = numericValue;
83
+ continue;
84
+ }
85
+ if (key === 'overshootClamping') {
86
+ const booleanValue = getBooleanValue(prop.value);
87
+ if (booleanValue === null) {
88
+ return null;
89
+ }
90
+ spring.overshootClamping = booleanValue;
91
+ continue;
92
+ }
93
+ return null;
94
+ }
95
+ return spring;
96
+ };
97
+ exports.parseSpringEasingConfig = parseSpringEasingConfig;
@@ -1,4 +1,4 @@
1
- import type { DragOverrides, EffectDefinition, GetDragOverrides, GetEffectDragOverrides, PropStatuses, SequenceControls, SequencePropsSubscriptionKey, SequenceSchema, VisibleFieldSchema } from 'remotion';
1
+ import type { DragOverrides, EffectDefinition, GetDragOverrides, GetEffectDragOverrides, PropStatuses, SequenceControls, SequencePropsSubscriptionKey, InteractivitySchema, VisibleFieldSchema } from 'remotion';
2
2
  export type { DragOverrides, PropStatuses, SequenceControls };
3
3
  export type SchemaFieldInfo = {
4
4
  key: string;
@@ -7,25 +7,25 @@ export type SchemaFieldInfo = {
7
7
  rowHeight: number;
8
8
  fieldSchema: VisibleFieldSchema;
9
9
  };
10
- export type SequenceSchemaFieldInfo = SchemaFieldInfo & {
10
+ export type InteractivitySchemaFieldInfo = SchemaFieldInfo & {
11
11
  readonly kind: 'sequence-field';
12
12
  };
13
13
  export type EffectSchemaFieldInfo = SchemaFieldInfo & {
14
14
  readonly kind: 'effect-field';
15
15
  readonly effectIndex: number;
16
- readonly effectSchema: SequenceSchema;
16
+ readonly effectSchema: InteractivitySchema;
17
17
  };
18
- export type AnySchemaFieldInfo = SequenceSchemaFieldInfo | EffectSchemaFieldInfo;
18
+ export type AnySchemaFieldInfo = InteractivitySchemaFieldInfo | EffectSchemaFieldInfo;
19
19
  export declare const SCHEMA_FIELD_ROW_HEIGHT = 22;
20
20
  declare const SUPPORTED_SCHEMA_TYPES: readonly ["number", "boolean", "rotation-css", "rotation-degrees", "translate", "transform-origin", "scale", "uv-coordinate", "color", "array", "enum", "hidden"];
21
21
  type SupportedSchemaType = (typeof SUPPORTED_SCHEMA_TYPES)[number];
22
22
  export declare const getFieldsToShow: ({ getDragOverrides, propStatuses, nodePath, schema, currentRuntimeValueDotNotation, }: {
23
- schema: SequenceSchema;
23
+ schema: InteractivitySchema;
24
24
  currentRuntimeValueDotNotation: Record<string, unknown>;
25
25
  getDragOverrides: GetDragOverrides;
26
26
  propStatuses: PropStatuses;
27
27
  nodePath: SequencePropsSubscriptionKey;
28
- }) => SequenceSchemaFieldInfo[] | null;
28
+ }) => InteractivitySchemaFieldInfo[] | null;
29
29
  export declare const getEffectFieldsToShow: ({ effect, effectIndex, nodePath, propStatuses, getEffectDragOverrides, }: {
30
30
  effect: EffectDefinition<unknown>;
31
31
  effectIndex: number;
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.478",
6
+ "version": "4.0.481",
7
7
  "description": "Internal package for shared objects between the Studio backend and frontend",
8
8
  "main": "dist",
9
9
  "scripts": {
@@ -20,11 +20,11 @@
20
20
  "url": "https://github.com/remotion-dev/remotion/issues"
21
21
  },
22
22
  "dependencies": {
23
- "remotion": "4.0.478"
23
+ "remotion": "4.0.481"
24
24
  },
25
25
  "devDependencies": {
26
- "@remotion/renderer": "4.0.478",
27
- "@remotion/eslint-config-internal": "4.0.478",
26
+ "@remotion/renderer": "4.0.481",
27
+ "@remotion/eslint-config-internal": "4.0.481",
28
28
  "eslint": "9.19.0",
29
29
  "@typescript/native-preview": "7.0.0-dev.20260217.1"
30
30
  },