@remotion/studio-shared 4.0.520 → 4.0.522

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.
@@ -883,6 +883,7 @@ export type ProjectInfoRequest = {};
883
883
  export type ProjectInfoResponse = {
884
884
  projectInfo: ProjectInfo;
885
885
  };
886
+ export type ShutdownStudioResponse = {};
886
887
  export type RestartStudioRequest = {};
887
888
  export type RestartStudioResponse = {};
888
889
  export type ConfigValue = string | number | boolean | null | ConfigValue[] | {
@@ -1023,6 +1024,10 @@ export type ApiRoutes = {
1023
1024
  '/api/delete-static-file': ReqAndRes<DeleteStaticFileRequest, DeleteStaticFileResponse>;
1024
1025
  '/api/rename-static-file': ReqAndRes<RenameStaticFileRequest, RenameStaticFileResponse>;
1025
1026
  '/api/copy-render-output-to-asset': ReqAndRes<CopyRenderOutputToAssetRequest, CopyRenderOutputToAssetResponse>;
1027
+ '/api/upgrade-remotion': ReqAndRes<{
1028
+ version: string;
1029
+ }, {}>;
1030
+ '/api/shutdown-studio': ReqAndRes<{}, ShutdownStudioResponse>;
1026
1031
  '/api/restart-studio': ReqAndRes<RestartStudioRequest, RestartStudioResponse>;
1027
1032
  '/api/update-config': ReqAndRes<UpdateConfigRequest, UpdateConfigResponse>;
1028
1033
  '/api/default-editor-info': ReqAndRes<GetDefaultEditorInfoRequest, GetDefaultEditorInfoResponse>;
@@ -10,6 +10,14 @@ export type ApplyVisualControlCodemod = {
10
10
  type: 'apply-visual-control';
11
11
  changes: VisualControlChange[];
12
12
  };
13
+ export type CompositionOrFolder = {
14
+ type: 'composition';
15
+ compositionId: string;
16
+ } | {
17
+ type: 'folder';
18
+ folderName: string;
19
+ parentName: string | null;
20
+ };
13
21
  export type RecastCodemod = {
14
22
  type: 'new-composition';
15
23
  newId: string;
@@ -56,6 +64,19 @@ export type RecastCodemod = {
56
64
  idToMove: string;
57
65
  folderName: string | null;
58
66
  parentName: string | null;
67
+ } | {
68
+ type: 'move-composition-or-folder';
69
+ source: CompositionOrFolder;
70
+ destination: {
71
+ type: 'root';
72
+ } | {
73
+ type: 'folder';
74
+ folderName: string;
75
+ parentName: string | null;
76
+ } | {
77
+ type: 'before' | 'after';
78
+ target: CompositionOrFolder;
79
+ };
59
80
  } | {
60
81
  type: 'rename-folder';
61
82
  folderName: string;
@@ -1,13 +1,15 @@
1
- export declare const getDefinePluginDefinitions: ({ maxTimelineTracks, askAIEnabled, interactivityEnabled, keyboardShortcutsEnabled, bufferStateDelayInMilliseconds, }: {
1
+ export declare const getDefinePluginDefinitions: ({ maxTimelineTracks, askAIEnabled, interactivityEnabled, keyboardShortcutsEnabled, bufferStateDelayInMilliseconds, experimentalClientSideRenderingEnabled, }: {
2
2
  maxTimelineTracks: number | null;
3
3
  askAIEnabled: boolean;
4
4
  interactivityEnabled: boolean;
5
5
  keyboardShortcutsEnabled: boolean;
6
6
  bufferStateDelayInMilliseconds: number | null;
7
+ experimentalClientSideRenderingEnabled: boolean;
7
8
  }) => {
8
9
  'process.env.MAX_TIMELINE_TRACKS': number | null;
9
10
  'process.env.ASK_AI_ENABLED': boolean;
10
11
  'process.env.INTERACTIVITY_ENABLED': boolean;
11
12
  'process.env.KEYBOARD_SHORTCUTS_ENABLED': boolean;
12
13
  'process.env.BUFFER_STATE_DELAY_IN_MILLISECONDS': number | null;
14
+ 'process.env.EXPERIMENTAL_CLIENT_SIDE_RENDERING_ENABLED': boolean;
13
15
  };
@@ -1,11 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getDefinePluginDefinitions = void 0;
4
- const getDefinePluginDefinitions = ({ maxTimelineTracks, askAIEnabled, interactivityEnabled, keyboardShortcutsEnabled, bufferStateDelayInMilliseconds, }) => ({
4
+ const getDefinePluginDefinitions = ({ maxTimelineTracks, askAIEnabled, interactivityEnabled, keyboardShortcutsEnabled, bufferStateDelayInMilliseconds, experimentalClientSideRenderingEnabled, }) => ({
5
5
  'process.env.MAX_TIMELINE_TRACKS': maxTimelineTracks,
6
6
  'process.env.ASK_AI_ENABLED': askAIEnabled,
7
7
  'process.env.INTERACTIVITY_ENABLED': interactivityEnabled,
8
8
  'process.env.KEYBOARD_SHORTCUTS_ENABLED': keyboardShortcutsEnabled,
9
9
  'process.env.BUFFER_STATE_DELAY_IN_MILLISECONDS': bufferStateDelayInMilliseconds,
10
+ 'process.env.EXPERIMENTAL_CLIENT_SIDE_RENDERING_ENABLED': experimentalClientSideRenderingEnabled,
10
11
  });
11
12
  exports.getDefinePluginDefinitions = getDefinePluginDefinitions;
@@ -4,7 +4,6 @@ export type ElementDragData = {
4
4
  type: 'remotion-element';
5
5
  version: 1;
6
6
  element: {
7
- dependencies: string[];
8
7
  slug: string;
9
8
  displayName: string;
10
9
  sourceCode: string;
@@ -14,8 +13,7 @@ export type ElementDragData = {
14
13
  export declare const isLowercaseElementFileName: (value: unknown) => value is string;
15
14
  export declare const makeElementFileNameFromSlug: (slug: string) => string | null;
16
15
  export declare const getElementComponentNameFromSourceCode: (sourceCode: string) => string | null;
17
- export declare const makeElementDragData: ({ dependencies, dimensions, displayName, slug, sourceCode, }: {
18
- dependencies: string[];
16
+ export declare const makeElementDragData: ({ dimensions, displayName, slug, sourceCode, }: {
19
17
  slug: string;
20
18
  displayName: string;
21
19
  sourceCode: string;
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parseElementDragData = exports.makeElementDragData = exports.getElementComponentNameFromSourceCode = exports.makeElementFileNameFromSlug = exports.isLowercaseElementFileName = exports.ELEMENT_DRAG_MIME_TYPE = void 0;
4
4
  const component_drag_data_1 = require("./component-drag-data");
5
- const package_name_1 = require("./package-name");
6
5
  const drag_mime_types_1 = require("./drag-mime-types");
7
6
  Object.defineProperty(exports, "ELEMENT_DRAG_MIME_TYPE", { enumerable: true, get: function () { return drag_mime_types_1.ELEMENT_DRAG_MIME_TYPE; } });
8
7
  const isRecord = (value) => {
@@ -49,11 +48,6 @@ const isSourceCode = (value) => {
49
48
  value.trim().length > 0 &&
50
49
  value.length < 200000);
51
50
  };
52
- const isDependencies = (value) => {
53
- return (Array.isArray(value) &&
54
- value.length <= 100 &&
55
- value.every((dependency) => typeof dependency === 'string' && (0, package_name_1.isValidPackageName)(dependency)));
56
- };
57
51
  const isDimensions = (value) => {
58
52
  if (!isRecord(value)) {
59
53
  return false;
@@ -75,12 +69,11 @@ const getElementComponentNameFromSourceCode = (sourceCode) => {
75
69
  return (0, component_drag_data_1.isComponentIdentifier)(componentName) ? componentName : null;
76
70
  };
77
71
  exports.getElementComponentNameFromSourceCode = getElementComponentNameFromSourceCode;
78
- const makeElementDragData = ({ dependencies, dimensions, displayName, slug, sourceCode, }) => {
72
+ const makeElementDragData = ({ dimensions, displayName, slug, sourceCode, }) => {
79
73
  return {
80
74
  type: 'remotion-element',
81
75
  version: 1,
82
76
  element: {
83
- dependencies: Array.from(new Set(dependencies)),
84
77
  slug,
85
78
  displayName,
86
79
  sourceCode,
@@ -101,20 +94,18 @@ const parseElementDragData = (value) => {
101
94
  if (!isRecord(parsed.element)) {
102
95
  return null;
103
96
  }
104
- const { dependencies, dimensions, displayName, slug, sourceCode } = parsed.element;
97
+ const { dimensions, displayName, slug, sourceCode } = parsed.element;
105
98
  if (!isSlug(slug) ||
106
99
  !isDisplayName(displayName) ||
107
100
  !isSourceCode(sourceCode) ||
108
101
  (0, exports.getElementComponentNameFromSourceCode)(sourceCode) === null ||
109
102
  (0, exports.makeElementFileNameFromSlug)(slug) === null ||
110
- (dependencies !== undefined && !isDependencies(dependencies)) ||
111
103
  (dimensions !== undefined &&
112
104
  dimensions !== null &&
113
105
  !isDimensions(dimensions))) {
114
106
  return null;
115
107
  }
116
108
  return (0, exports.makeElementDragData)({
117
- dependencies: dependencies !== null && dependencies !== void 0 ? dependencies : [],
118
109
  slug,
119
110
  displayName,
120
111
  sourceCode,
@@ -1502,6 +1502,7 @@ var KEYFRAME_FIELD_TYPE_SUPPORT = {
1502
1502
  color: true,
1503
1503
  enum: true,
1504
1504
  "font-family": false,
1505
+ "font-weight": false,
1505
1506
  hidden: true,
1506
1507
  number: true,
1507
1508
  "rotation-css": true,
@@ -1520,6 +1521,7 @@ var KEYFRAME_FIELD_TYPE_INTERPOLATION = {
1520
1521
  color: "interpolateColors",
1521
1522
  enum: "interpolate",
1522
1523
  "font-family": "unsupported",
1524
+ "font-weight": "unsupported",
1523
1525
  hidden: "infer",
1524
1526
  number: "infer",
1525
1527
  "rotation-css": "interpolate",
@@ -1784,6 +1786,7 @@ var KEYFRAME_CLIPBOARD_FIELD_TYPE_SUPPORT = {
1784
1786
  color: true,
1785
1787
  enum: false,
1786
1788
  "font-family": false,
1789
+ "font-weight": false,
1787
1790
  hidden: false,
1788
1791
  number: true,
1789
1792
  "rotation-css": true,
@@ -2360,7 +2363,7 @@ var extraPackages = [
2360
2363
  },
2361
2364
  {
2362
2365
  name: "zod",
2363
- version: "4.4.3",
2366
+ version: "4.5.4",
2364
2367
  description: "TypeScript-first schema validation",
2365
2368
  docsUrl: "https://zod.dev"
2366
2369
  }
@@ -3036,6 +3039,7 @@ var TIMELINE_SCHEMA_FIELD_TYPE_SUPPORT = {
3036
3039
  color: true,
3037
3040
  enum: true,
3038
3041
  "font-family": true,
3042
+ "font-weight": true,
3039
3043
  hidden: false,
3040
3044
  number: true,
3041
3045
  "rotation-css": true,
@@ -11,6 +11,7 @@ var KEYFRAME_FIELD_TYPE_SUPPORT = {
11
11
  color: true,
12
12
  enum: true,
13
13
  "font-family": false,
14
+ "font-weight": false,
14
15
  hidden: true,
15
16
  number: true,
16
17
  "rotation-css": true,
@@ -29,6 +30,7 @@ var KEYFRAME_FIELD_TYPE_INTERPOLATION = {
29
30
  color: "interpolateColors",
30
31
  enum: "interpolate",
31
32
  "font-family": "unsupported",
33
+ "font-weight": "unsupported",
32
34
  hidden: "infer",
33
35
  number: "infer",
34
36
  "rotation-css": "interpolate",
package/dist/index.d.ts CHANGED
@@ -1,12 +1,12 @@
1
1
  export { splitAnsi, stripAnsi } from './ansi';
2
2
  export type { TerminalId } from './terminal';
3
3
  export type { GitClientId } from './git-client';
4
- export { AddEffectKeyframeRequest, AddEffectKeyframeResponse, AddEffectRequest, AddEffectResponse, AddKeyframesRequest, AddKeyframesResponse, AddRenderRequest, AddSequenceKeyframeRequest, AddSequenceKeyframeResponse, ApiRoutes, ApplyCodemodRequest, ApplyCodemodResponse, ApplyVisualControlRequest, ApplyVisualControlResponse, BatchUpdateEffectKeyframeSettings, BatchUpdateKeyframeSettingsRequest, BatchUpdateKeyframeSettingsResponse, BatchUpdateSequenceKeyframeSettings, CanUpdateDefaultPropsResponse, CanUpdateSequencePropsRequest, CancelRenderRequest, CancelRenderResponse, CaptionPatch, CompositionComponentInfoRequest, CompositionComponentInfoResponse, ComponentProp, ConvertFigmaClipboardToSvgRequest, ConvertFigmaClipboardToSvgResponse, CopyRenderOutputToAssetRequest, CopyRenderOutputToAssetResponse, CopyStillToClipboardRequest, DeleteEffectKeyframe, DeleteEffectRequest, DeleteEffectRequestItem, DeleteEffectResponse, DeleteJsxNodeRequest, DeleteJsxNodeRequestItem, DeleteJsxNodeResponse, DeleteKeyframesRequest, DeleteKeyframesResponse, DeleteSequenceKeyframe, DeleteStaticFileRequest, DeleteStaticFileResponse, DownloadRemoteAssetRequest, DownloadRemoteAssetResponse, DuplicateEffectRequest, DuplicateEffectRequestItem, DuplicateEffectResponse, DuplicateJsxNodeRequest, DuplicateJsxNodeRequestItem, DuplicateJsxNodeResponse, EditorPickerId, EffectDefinition, ElementInstallDestination, ElementInstallExpectedFileState, ElementInstallRequest, ElementInstallSource, FindInFileRequest, FindInFileResponse, GetDefaultCodingAgentInfoRequest, GetDefaultCodingAgentInfoResponse, GetDefaultEditorInfoRequest, GetDefaultEditorInfoResponse, GetRemotionSkillsInfoRequest, GetRemotionSkillsInfoResponse, GetReleaseNotesRequest, GetReleaseNotesResponse, GoogleFontSourceEdit, InsertElementFileConflict, InsertElementRequest, InsertElementResponse, InsertJsxElementRequest, InsertJsxElementResponse, InsertableCompositionElement, InsertableCompositionElementPosition, InstallableElement, InstallPackageRequest, InstallPackageResponse, LogStudioErrorRequest, LogStudioErrorResponse, MoveEffectKeyframe, MoveKeyframesRequest, MoveKeyframesResponse, MoveSequenceKeyframe, OpenInCodingAgentRequest, OpenInCodingAgentResponse, OpenInEditorRequest, OpenInEditorResponse, OpenInFileExplorerRequest, OpenInGitClientRequest, OpenInGitClientResponse, OpenInTerminalRequest, OpenInTerminalResponse, PackageInstallSpec, PasteEffectsRequest, PasteEffectsResponse, PrepareElementInstallRequest, PrepareElementInstallResponse, ProjectInfoRequest, ProjectInfoResponse, RedoRequest, RedoResponse, RemoveRenderRequest, RenameStaticFileRequest, RenameStaticFileResponse, ReorderEffectRequest, ReorderEffectResponse, ReorderSequencePosition, ReorderSequenceRequest, ReorderSequenceResponse, RestartStudioRequest, RestartStudioResponse, SaveEffectPropsRequest, SaveEffectPropsResponse, SaveInlineCaptionPatchesRequest, SaveMultipleEffectPropsEdit, SaveMultipleEffectPropsRequest, SaveMultipleEffectPropsResponse, SaveMultipleEffectPropsResult, SaveSequencePropEdit, SaveSequencePropSourceEdit, SaveSequencePropsRequest, SaveSequencePropsResponse, SaveSequencePropsResult, SimpleDiff, SplitJsxSequenceRequest, SplitJsxSequenceResponse, SplitVideoFromAudioRequest, SplitVideoFromAudioResponse, SubscribeToDefaultPropsRequest, SubscribeToDefaultPropsResponse, SubscribeToFileExistenceRequest, SubscribeToFileExistenceResponse, SubscribeToSequencePropsBatchRequest, SubscribeToSequencePropsBatchResponse, SubscribeToSequencePropsRequest, SubscribeToSequencePropsResponse, UndoRequest, UndoResponse, UnsubscribeFromDefaultPropsRequest, UnsubscribeFromFileExistenceRequest, UnsubscribeFromSequencePropsRequest, UpdateAvailableRequest, UpdateAvailableResponse, UpdateConfigRequest, UpdateConfigResponse, UpdateDefaultPropsRequest, UpdateDefaultPropsResponse, UpdateEffectKeyframeSettingsRequest, UpdateEffectKeyframeSettingsResponse, UpdateElementInstallTargetRequest, UpdateElementInstallTargetResponse, UpdateSequenceKeyframeSettingsRequest, UpdateSequenceKeyframeSettingsResponse, type AddEffectKeyframe, type AddSequenceKeyframe, type ConfigUpdate, type ConfigValue, type KeyframeSettings, } from './api-requests';
4
+ export { AddEffectKeyframeRequest, AddEffectKeyframeResponse, AddEffectRequest, AddEffectResponse, AddKeyframesRequest, AddKeyframesResponse, AddRenderRequest, AddSequenceKeyframeRequest, AddSequenceKeyframeResponse, ApiRoutes, ApplyCodemodRequest, ApplyCodemodResponse, ApplyVisualControlRequest, ApplyVisualControlResponse, BatchUpdateEffectKeyframeSettings, BatchUpdateKeyframeSettingsRequest, BatchUpdateKeyframeSettingsResponse, BatchUpdateSequenceKeyframeSettings, CanUpdateDefaultPropsResponse, CanUpdateSequencePropsRequest, CancelRenderRequest, CancelRenderResponse, CaptionPatch, CompositionComponentInfoRequest, CompositionComponentInfoResponse, ComponentProp, ConvertFigmaClipboardToSvgRequest, ConvertFigmaClipboardToSvgResponse, CopyRenderOutputToAssetRequest, CopyRenderOutputToAssetResponse, CopyStillToClipboardRequest, DeleteEffectKeyframe, DeleteEffectRequest, DeleteEffectRequestItem, DeleteEffectResponse, DeleteJsxNodeRequest, DeleteJsxNodeRequestItem, DeleteJsxNodeResponse, DeleteKeyframesRequest, DeleteKeyframesResponse, DeleteSequenceKeyframe, DeleteStaticFileRequest, DeleteStaticFileResponse, DownloadRemoteAssetRequest, DownloadRemoteAssetResponse, DuplicateEffectRequest, DuplicateEffectRequestItem, DuplicateEffectResponse, DuplicateJsxNodeRequest, DuplicateJsxNodeRequestItem, DuplicateJsxNodeResponse, EditorPickerId, EffectDefinition, ElementInstallDestination, ElementInstallExpectedFileState, ElementInstallRequest, ElementInstallSource, FindInFileRequest, FindInFileResponse, GetDefaultCodingAgentInfoRequest, GetDefaultCodingAgentInfoResponse, GetDefaultEditorInfoRequest, GetDefaultEditorInfoResponse, GetRemotionSkillsInfoRequest, GetRemotionSkillsInfoResponse, GetReleaseNotesRequest, GetReleaseNotesResponse, GoogleFontSourceEdit, InsertElementFileConflict, InsertElementRequest, InsertElementResponse, InsertJsxElementRequest, InsertJsxElementResponse, InsertableCompositionElement, InsertableCompositionElementPosition, InstallableElement, InstallPackageRequest, InstallPackageResponse, LogStudioErrorRequest, LogStudioErrorResponse, MoveEffectKeyframe, MoveKeyframesRequest, MoveKeyframesResponse, MoveSequenceKeyframe, OpenInCodingAgentRequest, OpenInCodingAgentResponse, OpenInEditorRequest, OpenInEditorResponse, OpenInFileExplorerRequest, OpenInGitClientRequest, OpenInGitClientResponse, OpenInTerminalRequest, OpenInTerminalResponse, PackageInstallSpec, PasteEffectsRequest, PasteEffectsResponse, PrepareElementInstallRequest, PrepareElementInstallResponse, ProjectInfoRequest, ProjectInfoResponse, RedoRequest, RedoResponse, RemoveRenderRequest, RenameStaticFileRequest, RenameStaticFileResponse, ReorderEffectRequest, ReorderEffectResponse, ReorderSequencePosition, ReorderSequenceRequest, ReorderSequenceResponse, RestartStudioRequest, RestartStudioResponse, ShutdownStudioResponse, SaveEffectPropsRequest, SaveEffectPropsResponse, SaveInlineCaptionPatchesRequest, SaveMultipleEffectPropsEdit, SaveMultipleEffectPropsRequest, SaveMultipleEffectPropsResponse, SaveMultipleEffectPropsResult, SaveSequencePropEdit, SaveSequencePropSourceEdit, SaveSequencePropsRequest, SaveSequencePropsResponse, SaveSequencePropsResult, SimpleDiff, SplitJsxSequenceRequest, SplitJsxSequenceResponse, SplitVideoFromAudioRequest, SplitVideoFromAudioResponse, SubscribeToDefaultPropsRequest, SubscribeToDefaultPropsResponse, SubscribeToFileExistenceRequest, SubscribeToFileExistenceResponse, SubscribeToSequencePropsBatchRequest, SubscribeToSequencePropsBatchResponse, SubscribeToSequencePropsRequest, SubscribeToSequencePropsResponse, UndoRequest, UndoResponse, UnsubscribeFromDefaultPropsRequest, UnsubscribeFromFileExistenceRequest, UnsubscribeFromSequencePropsRequest, UpdateAvailableRequest, UpdateAvailableResponse, UpdateConfigRequest, UpdateConfigResponse, UpdateDefaultPropsRequest, UpdateDefaultPropsResponse, UpdateEffectKeyframeSettingsRequest, UpdateEffectKeyframeSettingsResponse, UpdateElementInstallTargetRequest, UpdateElementInstallTargetResponse, UpdateSequenceKeyframeSettingsRequest, UpdateSequenceKeyframeSettingsResponse, type AddEffectKeyframe, type AddSequenceKeyframe, type ConfigUpdate, type ConfigValue, type KeyframeSettings, } from './api-requests';
5
5
  export type { BrowserStudioKeyframeOperations, BrowserStudioEffectOperations, BrowserStudioInstallPackagesResponse, BrowserStudioOperations, BrowserStudioPackageInstallationOperations, DuplicateCompositionRequest, DuplicateCompositionResponse, } from './browser-studio-operations';
6
6
  export type { CanvasCaptureData, CanvasCaptureMouseMovement, CanvasCapturePointerClick, } from './canvas-capture';
7
7
  export { CANVAS_CAPTURE_METADATA_TAG, parseCanvasCaptureData, } from './canvas-capture';
8
8
  export type { SequenceNodePathMutation, SequenceNodePathRemapping, } from './sequence-node-path-mutation';
9
- export type { ApplyVisualControlCodemod, RecastCodemod } from './codemods';
9
+ export type { ApplyVisualControlCodemod, CompositionOrFolder, RecastCodemod, } from './codemods';
10
10
  export { REACT_REFRESH_FINISHED_EVENT } from './react-refresh-event';
11
11
  export { hasSequenceTimingTraits } from './has-sequence-timing-traits';
12
12
  export { getConfigFileChangeMessage, type ConfigFileChangeType, } from './config-file-change';
@@ -7,6 +7,7 @@ declare const KEYFRAME_CLIPBOARD_FIELD_TYPE_SUPPORT: {
7
7
  readonly color: true;
8
8
  readonly enum: false;
9
9
  readonly 'font-family': false;
10
+ readonly 'font-weight': false;
10
11
  readonly hidden: false;
11
12
  readonly number: true;
12
13
  readonly 'rotation-css': true;
@@ -12,6 +12,7 @@ const KEYFRAME_CLIPBOARD_FIELD_TYPE_SUPPORT = {
12
12
  color: true,
13
13
  enum: false,
14
14
  'font-family': false,
15
+ 'font-weight': false,
15
16
  hidden: false,
16
17
  number: true,
17
18
  'rotation-css': true,
@@ -15,6 +15,7 @@ const KEYFRAME_FIELD_TYPE_SUPPORT = {
15
15
  color: true,
16
16
  enum: true,
17
17
  'font-family': false,
18
+ 'font-weight': false,
18
19
  hidden: true,
19
20
  number: true,
20
21
  'rotation-css': true,
@@ -33,6 +34,7 @@ const KEYFRAME_FIELD_TYPE_INTERPOLATION = {
33
34
  color: 'interpolateColors',
34
35
  enum: 'interpolate',
35
36
  'font-family': 'unsupported',
37
+ 'font-weight': 'unsupported',
36
38
  hidden: 'infer',
37
39
  number: 'infer',
38
40
  'rotation-css': 'interpolate',
@@ -0,0 +1,7 @@
1
+ import { type CanUpdateSequencePropsResponse, type SequenceSchema } from 'remotion';
2
+ export declare const optimisticUpdateForCodeValues: ({ previous, fieldKey, value, schema, }: {
3
+ previous: CanUpdateSequencePropsResponse;
4
+ fieldKey: string;
5
+ value: unknown;
6
+ schema: SequenceSchema;
7
+ }) => CanUpdateSequencePropsResponse;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.optimisticUpdateForCodeValues = void 0;
4
+ const no_react_1 = require("remotion/no-react");
5
+ const optimisticUpdateForCodeValues = ({ previous, fieldKey, value, schema, }) => {
6
+ var _a;
7
+ if (!previous.canUpdate) {
8
+ return previous;
9
+ }
10
+ const props = {
11
+ ...previous.props,
12
+ [fieldKey]: { status: 'static', codeValue: value },
13
+ };
14
+ if (((_a = schema[fieldKey]) === null || _a === void 0 ? void 0 : _a.type) === 'enum') {
15
+ const propsToDelete = no_react_1.NoReactInternals.findPropsToDelete({
16
+ schema,
17
+ key: fieldKey,
18
+ value,
19
+ });
20
+ for (const propToDelete of propsToDelete) {
21
+ delete props[propToDelete];
22
+ }
23
+ }
24
+ return {
25
+ canUpdate: true,
26
+ props,
27
+ effects: previous.effects,
28
+ };
29
+ };
30
+ exports.optimisticUpdateForCodeValues = optimisticUpdateForCodeValues;
@@ -0,0 +1,8 @@
1
+ import { type CanUpdateSequencePropsResponse, type SequenceSchema } from 'remotion';
2
+ export declare const optimisticUpdateForEffectCodeValues: ({ previous, effectIndex, fieldKey, value, schema, }: {
3
+ previous: CanUpdateSequencePropsResponse;
4
+ effectIndex: number;
5
+ fieldKey: string;
6
+ value: unknown;
7
+ schema: SequenceSchema;
8
+ }) => CanUpdateSequencePropsResponse;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.optimisticUpdateForEffectCodeValues = void 0;
4
+ const no_react_1 = require("remotion/no-react");
5
+ const optimisticUpdateForEffectCodeValues = ({ previous, effectIndex, fieldKey, value, schema, }) => {
6
+ var _a;
7
+ if (!previous.canUpdate) {
8
+ return previous;
9
+ }
10
+ const targetIndex = previous.effects.findIndex((e) => e.effectIndex === effectIndex);
11
+ if (targetIndex === -1) {
12
+ return previous;
13
+ }
14
+ const target = previous.effects[targetIndex];
15
+ if (!target.canUpdate) {
16
+ return previous;
17
+ }
18
+ const props = {
19
+ ...target.props,
20
+ [fieldKey]: { status: 'static', codeValue: value },
21
+ };
22
+ if (((_a = schema[fieldKey]) === null || _a === void 0 ? void 0 : _a.type) === 'enum') {
23
+ const propsToDelete = no_react_1.NoReactInternals.findPropsToDelete({
24
+ schema,
25
+ key: fieldKey,
26
+ value,
27
+ });
28
+ for (const propToDelete of propsToDelete) {
29
+ delete props[propToDelete];
30
+ }
31
+ }
32
+ const updatedEffect = {
33
+ ...target,
34
+ props,
35
+ };
36
+ const effects = [...previous.effects];
37
+ effects[targetIndex] = updatedEffect;
38
+ return {
39
+ ...previous,
40
+ effects,
41
+ };
42
+ };
43
+ exports.optimisticUpdateForEffectCodeValues = optimisticUpdateForEffectCodeValues;
@@ -142,7 +142,7 @@ exports.extraPackages = [
142
142
  },
143
143
  {
144
144
  name: 'zod',
145
- version: '4.4.3',
145
+ version: '4.5.4',
146
146
  description: 'TypeScript-first schema validation',
147
147
  docsUrl: 'https://zod.dev',
148
148
  },
@@ -1 +1 @@
1
- export type PackageManager = 'npm' | 'yarn' | 'pnpm' | 'bun';
1
+ export type PackageManager = 'npm' | 'yarn' | 'pnpm' | 'bun' | 'nub';
@@ -60,6 +60,7 @@ declare const TIMELINE_SCHEMA_FIELD_TYPE_SUPPORT: {
60
60
  readonly color: true;
61
61
  readonly enum: true;
62
62
  readonly 'font-family': true;
63
+ readonly 'font-weight': true;
63
64
  readonly hidden: false;
64
65
  readonly number: true;
65
66
  readonly 'rotation-css': true;
@@ -131,6 +131,7 @@ const TIMELINE_SCHEMA_FIELD_TYPE_SUPPORT = {
131
131
  color: true,
132
132
  enum: true,
133
133
  'font-family': true,
134
+ 'font-weight': true,
134
135
  hidden: false,
135
136
  number: true,
136
137
  'rotation-css': true,
@@ -0,0 +1,22 @@
1
+ export declare const SHAPE_DRAG_MIME_TYPE = "application/vnd.remotion.shape+json";
2
+ export declare const shapeNames: readonly ["Arrow", "Circle", "Ellipse", "Heart", "Pie", "Polygon", "Rect", "Star", "Triangle"];
3
+ export type ShapeName = (typeof shapeNames)[number];
4
+ export type ShapeAttribute = {
5
+ name: string;
6
+ value: string | number | boolean;
7
+ };
8
+ export type ShapeDragData = {
9
+ type: 'remotion-shape';
10
+ version: 1;
11
+ shape: ShapeName;
12
+ attributes: ShapeAttribute[];
13
+ };
14
+ export declare const isShapeName: (value: unknown) => value is "Arrow" | "Circle" | "Ellipse" | "Heart" | "Pie" | "Polygon" | "Rect" | "Star" | "Triangle";
15
+ export declare const isShapeAttributeName: (value: unknown) => value is string;
16
+ export declare const isShapeAttribute: (value: unknown) => value is ShapeAttribute;
17
+ export declare const areShapeAttributes: (value: unknown) => value is ShapeAttribute[];
18
+ export declare const makeShapeDragData: ({ attributes, shape, }: {
19
+ attributes: ShapeAttribute[];
20
+ shape: "Arrow" | "Circle" | "Ellipse" | "Heart" | "Pie" | "Polygon" | "Rect" | "Star" | "Triangle";
21
+ }) => ShapeDragData;
22
+ export declare const parseShapeDragData: (value: string) => ShapeDragData | null;
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseShapeDragData = exports.makeShapeDragData = exports.areShapeAttributes = exports.isShapeAttribute = exports.isShapeAttributeName = exports.isShapeName = exports.shapeNames = exports.SHAPE_DRAG_MIME_TYPE = void 0;
4
+ exports.SHAPE_DRAG_MIME_TYPE = 'application/vnd.remotion.shape+json';
5
+ exports.shapeNames = [
6
+ 'Arrow',
7
+ 'Circle',
8
+ 'Ellipse',
9
+ 'Heart',
10
+ 'Pie',
11
+ 'Polygon',
12
+ 'Rect',
13
+ 'Star',
14
+ 'Triangle',
15
+ ];
16
+ const isRecord = (value) => {
17
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
18
+ };
19
+ const isShapeName = (value) => {
20
+ return typeof value === 'string' && exports.shapeNames.includes(value);
21
+ };
22
+ exports.isShapeName = isShapeName;
23
+ const isShapeAttributeName = (value) => {
24
+ return (typeof value === 'string' &&
25
+ value !== 'style' &&
26
+ /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(value));
27
+ };
28
+ exports.isShapeAttributeName = isShapeAttributeName;
29
+ const isShapeAttribute = (value) => {
30
+ if (!isRecord(value)) {
31
+ return false;
32
+ }
33
+ if (!(0, exports.isShapeAttributeName)(value.name)) {
34
+ return false;
35
+ }
36
+ return (typeof value.value === 'string' ||
37
+ typeof value.value === 'boolean' ||
38
+ (typeof value.value === 'number' && Number.isFinite(value.value)));
39
+ };
40
+ exports.isShapeAttribute = isShapeAttribute;
41
+ const areShapeAttributes = (value) => {
42
+ if (!Array.isArray(value)) {
43
+ return false;
44
+ }
45
+ const seen = new Set();
46
+ for (const attribute of value) {
47
+ if (!(0, exports.isShapeAttribute)(attribute) || seen.has(attribute.name)) {
48
+ return false;
49
+ }
50
+ seen.add(attribute.name);
51
+ }
52
+ return true;
53
+ };
54
+ exports.areShapeAttributes = areShapeAttributes;
55
+ const makeShapeDragData = ({ attributes, shape, }) => {
56
+ return {
57
+ type: 'remotion-shape',
58
+ version: 1,
59
+ shape,
60
+ attributes,
61
+ };
62
+ };
63
+ exports.makeShapeDragData = makeShapeDragData;
64
+ const parseShapeDragData = (value) => {
65
+ try {
66
+ const parsed = JSON.parse(value);
67
+ if (!isRecord(parsed)) {
68
+ return null;
69
+ }
70
+ if (parsed.type !== 'remotion-shape' || parsed.version !== 1) {
71
+ return null;
72
+ }
73
+ if (!(0, exports.isShapeName)(parsed.shape)) {
74
+ return null;
75
+ }
76
+ if (!(0, exports.areShapeAttributes)(parsed.attributes)) {
77
+ return null;
78
+ }
79
+ return {
80
+ type: 'remotion-shape',
81
+ version: 1,
82
+ shape: parsed.shape,
83
+ attributes: parsed.attributes,
84
+ };
85
+ }
86
+ catch (_a) {
87
+ return null;
88
+ }
89
+ };
90
+ exports.parseShapeDragData = parseShapeDragData;
package/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.520",
6
+ "version": "4.0.522",
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,11 +21,11 @@
21
21
  "url": "https://github.com/remotion-dev/remotion/issues"
22
22
  },
23
23
  "dependencies": {
24
- "remotion": "4.0.520"
24
+ "remotion": "4.0.522"
25
25
  },
26
26
  "devDependencies": {
27
- "@remotion/renderer": "4.0.520",
28
- "@remotion/eslint-config-internal": "4.0.520",
27
+ "@remotion/renderer": "4.0.522",
28
+ "@remotion/eslint-config-internal": "4.0.522",
29
29
  "eslint": "9.19.0",
30
30
  "@typescript/native-preview": "7.0.0-dev.20260217.1"
31
31
  },