@remotion/studio 4.0.462 → 4.0.463

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.
Files changed (33) hide show
  1. package/dist/components/AssetSelector.js +2 -6
  2. package/dist/components/CompSelectorRef.js +2 -6
  3. package/dist/components/ExpandedTracksProvider.js +5 -20
  4. package/dist/components/Timeline/SubscribeToNodePaths.js +1 -6
  5. package/dist/components/Timeline/TimelineColorField.js +1 -1
  6. package/dist/components/Timeline/TimelineEffectFieldRow.js +21 -31
  7. package/dist/components/Timeline/TimelineEffectGroupRow.d.ts +17 -0
  8. package/dist/components/Timeline/TimelineEffectGroupRow.js +73 -0
  9. package/dist/components/Timeline/TimelineExpandedRow.js +4 -0
  10. package/dist/components/Timeline/TimelineFieldRow.js +5 -39
  11. package/dist/components/Timeline/TimelineLayerEye.d.ts +5 -3
  12. package/dist/components/Timeline/TimelineLayerEye.js +18 -1
  13. package/dist/components/Timeline/TimelineListItem.js +57 -14
  14. package/dist/components/Timeline/save-effect-prop.d.ts +12 -0
  15. package/dist/components/Timeline/save-effect-prop.js +42 -0
  16. package/dist/components/Timeline/save-prop-queue.d.ts +12 -0
  17. package/dist/components/Timeline/save-prop-queue.js +63 -0
  18. package/dist/components/Timeline/save-sequence-prop.d.ts +11 -0
  19. package/dist/components/Timeline/save-sequence-prop.js +38 -0
  20. package/dist/esm/chunk-5gtx3pza.js +9 -0
  21. package/dist/esm/{chunk-yvg1f56k.js → chunk-b0m62frw.js} +2327 -2028
  22. package/dist/esm/index.mjs +0 -16
  23. package/dist/esm/internals.mjs +2325 -2041
  24. package/dist/esm/previewEntry.mjs +2335 -2051
  25. package/dist/esm/renderEntry.mjs +3 -4
  26. package/dist/helpers/persist-boolean-map.d.ts +5 -0
  27. package/dist/helpers/persist-boolean-map.js +56 -0
  28. package/dist/helpers/persist-open-folders.d.ts +4 -3
  29. package/dist/helpers/persist-open-folders.js +4 -7
  30. package/dist/helpers/timeline-layout.d.ts +6 -1
  31. package/dist/helpers/timeline-layout.js +2 -0
  32. package/package.json +10 -10
  33. package/dist/esm/chunk-6jf1natv.js +0 -25
@@ -1,7 +1,6 @@
1
1
  import {
2
- __require,
3
- __toESM
4
- } from "./chunk-6jf1natv.js";
2
+ __require
3
+ } from "./chunk-5gtx3pza.js";
5
4
 
6
5
  // src/renderEntry.tsx
7
6
  import { useContext, useEffect, useRef, useState } from "react";
@@ -207,7 +206,7 @@ var renderContent = (Root) => {
207
206
  renderToDOM(/* @__PURE__ */ jsx("div", {
208
207
  children: /* @__PURE__ */ jsx(DelayedSpinner, {})
209
208
  }));
210
- import("./chunk-yvg1f56k.js").then(({ StudioInternals }) => {
209
+ import("./chunk-b0m62frw.js").then(({ StudioInternals }) => {
211
210
  window.remotion_isStudio = true;
212
211
  window.remotion_isReadOnlyStudio = true;
213
212
  window.remotion_inputProps = "{}";
@@ -0,0 +1,5 @@
1
+ export type BooleanMap = Record<string, boolean>;
2
+ export declare const onlyExpandedBooleanMapValues: (state: BooleanMap) => BooleanMap;
3
+ export declare const toggleBooleanMapKey: (state: BooleanMap, key: string) => BooleanMap;
4
+ export declare const loadPersistedBooleanMap: (sessionStorageKey: string) => BooleanMap;
5
+ export declare const persistBooleanMap: (sessionStorageKey: string, state: BooleanMap) => void;
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.persistBooleanMap = exports.loadPersistedBooleanMap = exports.toggleBooleanMapKey = exports.onlyExpandedBooleanMapValues = void 0;
4
+ const onlyExpandedBooleanMapValues = (state) => {
5
+ const result = {};
6
+ for (const [key, value] of Object.entries(state)) {
7
+ if (value) {
8
+ result[key] = true;
9
+ }
10
+ }
11
+ return result;
12
+ };
13
+ exports.onlyExpandedBooleanMapValues = onlyExpandedBooleanMapValues;
14
+ const toggleBooleanMapKey = (state, key) => {
15
+ const next = { ...state };
16
+ if (next[key]) {
17
+ delete next[key];
18
+ }
19
+ else {
20
+ next[key] = true;
21
+ }
22
+ return next;
23
+ };
24
+ exports.toggleBooleanMapKey = toggleBooleanMapKey;
25
+ const loadPersistedBooleanMap = (sessionStorageKey) => {
26
+ if (typeof window === 'undefined') {
27
+ return {};
28
+ }
29
+ try {
30
+ const raw = window.sessionStorage.getItem(sessionStorageKey);
31
+ if (raw === null) {
32
+ return {};
33
+ }
34
+ const parsed = JSON.parse(raw);
35
+ if (!parsed || typeof parsed !== 'object') {
36
+ return {};
37
+ }
38
+ return (0, exports.onlyExpandedBooleanMapValues)(parsed);
39
+ }
40
+ catch (_a) {
41
+ return {};
42
+ }
43
+ };
44
+ exports.loadPersistedBooleanMap = loadPersistedBooleanMap;
45
+ const persistBooleanMap = (sessionStorageKey, state) => {
46
+ if (typeof window === 'undefined') {
47
+ return;
48
+ }
49
+ try {
50
+ window.sessionStorage.setItem(sessionStorageKey, JSON.stringify((0, exports.onlyExpandedBooleanMapValues)(state)));
51
+ }
52
+ catch (_a) {
53
+ // Ignore quota errors or disabled storage.
54
+ }
55
+ };
56
+ exports.persistBooleanMap = persistBooleanMap;
@@ -1,11 +1,12 @@
1
+ import { type BooleanMap } from './persist-boolean-map';
1
2
  export declare const openFolderKey: ({ folderName, parentName, }: {
2
3
  folderName: string;
3
4
  parentName: string | null;
4
5
  }) => string;
5
- export type ExpandedFoldersState = Record<string, boolean>;
6
+ export type ExpandedFoldersState = BooleanMap;
6
7
  type PersistanceType = 'assets' | 'compositions';
7
- export declare const persistExpandedFolders: (type: PersistanceType, state: ExpandedFoldersState) => void;
8
- export declare const loadExpandedFolders: (type: PersistanceType) => ExpandedFoldersState;
8
+ export declare const persistExpandedFolders: (type: PersistanceType, state: BooleanMap) => void;
9
+ export declare const loadExpandedFolders: (type: PersistanceType) => BooleanMap;
9
10
  export type ExpandedFoldersRef = {
10
11
  toggleFolder: (folderName: string, parentName: string | null) => void;
11
12
  foldersExpanded: ExpandedFoldersState;
@@ -2,23 +2,20 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ExpandedFoldersContext = exports.loadExpandedFolders = exports.persistExpandedFolders = exports.openFolderKey = void 0;
4
4
  const react_1 = require("react");
5
+ const persist_boolean_map_1 = require("./persist-boolean-map");
5
6
  const openFolderKey = ({ folderName, parentName, }) => {
6
7
  return [parentName !== null && parentName !== void 0 ? parentName : 'no-parent', folderName].join('/');
7
8
  };
8
9
  exports.openFolderKey = openFolderKey;
9
- const localStorageKey = (type) => type === 'compositions'
10
+ const sessionStorageKey = (type) => type === 'compositions'
10
11
  ? 'remotion.expandedFolders'
11
12
  : 'remotion.expandedAssetFolders';
12
13
  const persistExpandedFolders = (type, state) => {
13
- window.localStorage.setItem(localStorageKey(type), JSON.stringify(state));
14
+ (0, persist_boolean_map_1.persistBooleanMap)(sessionStorageKey(type), state);
14
15
  };
15
16
  exports.persistExpandedFolders = persistExpandedFolders;
16
17
  const loadExpandedFolders = (type) => {
17
- const item = window.localStorage.getItem(localStorageKey(type));
18
- if (item === null) {
19
- return {};
20
- }
21
- return JSON.parse(item);
18
+ return (0, persist_boolean_map_1.loadPersistedBooleanMap)(sessionStorageKey(type));
22
19
  };
23
20
  exports.loadExpandedFolders = loadExpandedFolders;
24
21
  exports.ExpandedFoldersContext = (0, react_1.createContext)({
@@ -1,5 +1,5 @@
1
1
  import { type AnySchemaFieldInfo, type CodeValues, type DragOverrides, type EffectSchemaFieldInfo, type SchemaFieldInfo, type SequenceControls, type SequenceSchemaFieldInfo } from '@remotion/studio-shared';
2
- import type { GetDragOverrides, TSequence } from 'remotion';
2
+ import type { GetDragOverrides, SequenceSchema as SequenceSchemaShape, TSequence } from 'remotion';
3
3
  import type { GetIsExpanded } from '../components/ExpandedTracksProvider';
4
4
  import type { SequenceNodePathInfo } from './get-timeline-sequence-sort-key';
5
5
  export type { AnySchemaFieldInfo, CodeValues, DragOverrides, EffectSchemaFieldInfo, SchemaFieldInfo, SequenceControls, SequenceSchemaFieldInfo, };
@@ -13,11 +13,16 @@ export declare const EXPANDED_SECTION_PADDING_LEFT = 28;
13
13
  export declare const EXPANDED_SECTION_PADDING_RIGHT = 10;
14
14
  export type TimelineFieldOnSave = (value: unknown) => Promise<void>;
15
15
  export type TimelineFieldOnDragValueChange = (value: unknown) => void;
16
+ export type TimelineEffectGroupInfo = {
17
+ readonly effectIndex: number;
18
+ readonly effectSchema: SequenceSchemaShape;
19
+ };
16
20
  export type TimelineTreeNode = {
17
21
  readonly kind: 'group';
18
22
  readonly nodePathInfo: SequenceNodePathInfo;
19
23
  readonly label: string;
20
24
  readonly children: TimelineTreeNode[];
25
+ readonly effectInfo: TimelineEffectGroupInfo | null;
21
26
  } | {
22
27
  readonly kind: 'field';
23
28
  readonly nodePathInfo: SequenceNodePathInfo;
@@ -27,6 +27,7 @@ const buildTimelineTree = ({ sequence, nodePathInfo, getDragOverrides, codeValue
27
27
  numberOfSequencesWithThisNodePath: 0,
28
28
  },
29
29
  label: 'Effects',
30
+ effectInfo: null,
30
31
  children: sequence.effects.map((effect, i) => {
31
32
  const effectFields = (0, studio_shared_1.getEffectFieldsToShow)(effect, i);
32
33
  return {
@@ -38,6 +39,7 @@ const buildTimelineTree = ({ sequence, nodePathInfo, getDragOverrides, codeValue
38
39
  numberOfSequencesWithThisNodePath: 0,
39
40
  },
40
41
  label: effect.label,
42
+ effectInfo: { effectIndex: i, effectSchema: effect.schema },
41
43
  children: effectFields.map((f) => {
42
44
  var _a;
43
45
  return ({
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "url": "https://github.com/remotion-dev/remotion/tree/main/packages/studio"
4
4
  },
5
5
  "name": "@remotion/studio",
6
- "version": "4.0.462",
6
+ "version": "4.0.463",
7
7
  "description": "APIs for interacting with the Remotion Studio",
8
8
  "main": "dist",
9
9
  "scripts": {
@@ -25,14 +25,14 @@
25
25
  },
26
26
  "dependencies": {
27
27
  "semver": "7.5.3",
28
- "remotion": "4.0.462",
29
- "@remotion/player": "4.0.462",
30
- "@remotion/media-utils": "4.0.462",
31
- "@remotion/renderer": "4.0.462",
32
- "@remotion/web-renderer": "4.0.462",
33
- "@remotion/studio-shared": "4.0.462",
34
- "@remotion/timeline-utils": "4.0.462",
35
- "@remotion/zod-types": "4.0.462",
28
+ "remotion": "4.0.463",
29
+ "@remotion/player": "4.0.463",
30
+ "@remotion/media-utils": "4.0.463",
31
+ "@remotion/renderer": "4.0.463",
32
+ "@remotion/web-renderer": "4.0.463",
33
+ "@remotion/studio-shared": "4.0.463",
34
+ "@remotion/timeline-utils": "4.0.463",
35
+ "@remotion/zod-types": "4.0.463",
36
36
  "@jridgewell/trace-mapping": "0.3.31",
37
37
  "mediabunny": "1.45.0",
38
38
  "memfs": "3.4.3",
@@ -43,7 +43,7 @@
43
43
  "react": "19.2.3",
44
44
  "react-dom": "19.2.3",
45
45
  "@types/semver": "7.5.3",
46
- "@remotion/eslint-config-internal": "4.0.462",
46
+ "@remotion/eslint-config-internal": "4.0.463",
47
47
  "eslint": "9.19.0",
48
48
  "@typescript/native-preview": "7.0.0-dev.20260217.1"
49
49
  },
@@ -1,25 +0,0 @@
1
- var __create = Object.create;
2
- var __getProtoOf = Object.getPrototypeOf;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __toESM = (mod, isNodeMode, target) => {
7
- target = mod != null ? __create(__getProtoOf(mod)) : {};
8
- const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
9
- for (let key of __getOwnPropNames(mod))
10
- if (!__hasOwnProp.call(to, key))
11
- __defProp(to, key, {
12
- get: () => mod[key],
13
- enumerable: true
14
- });
15
- return to;
16
- };
17
- var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
18
- get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
19
- }) : x)(function(x) {
20
- if (typeof require !== "undefined")
21
- return require.apply(this, arguments);
22
- throw Error('Dynamic require of "' + x + '" is not supported');
23
- });
24
-
25
- export { __toESM, __require };