@remotion/studio 4.0.461 → 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 (56) hide show
  1. package/dist/components/AssetSelector.js +2 -6
  2. package/dist/components/CompSelectorRef.js +2 -6
  3. package/dist/components/ExpandedTracksProvider.js +13 -23
  4. package/dist/components/Timeline/SubscribeToNodePaths.d.ts +4 -3
  5. package/dist/components/Timeline/SubscribeToNodePaths.js +6 -1
  6. package/dist/components/Timeline/Timeline.js +1 -1
  7. package/dist/components/Timeline/TimelineColorField.d.ts +11 -0
  8. package/dist/components/Timeline/TimelineColorField.js +181 -0
  9. package/dist/components/Timeline/TimelineEffectFieldRow.d.ts +11 -0
  10. package/dist/components/Timeline/TimelineEffectFieldRow.js +167 -0
  11. package/dist/components/Timeline/TimelineEffectGroupRow.d.ts +17 -0
  12. package/dist/components/Timeline/TimelineEffectGroupRow.js +73 -0
  13. package/dist/components/Timeline/TimelineExpandedRow.d.ts +3 -3
  14. package/dist/components/Timeline/TimelineExpandedRow.js +12 -1
  15. package/dist/components/Timeline/TimelineExpandedSection.d.ts +2 -2
  16. package/dist/components/Timeline/TimelineExpandedSection.js +7 -20
  17. package/dist/components/Timeline/TimelineFieldRow.d.ts +3 -3
  18. package/dist/components/Timeline/TimelineFieldRow.js +17 -45
  19. package/dist/components/Timeline/TimelineLayerEye.d.ts +5 -3
  20. package/dist/components/Timeline/TimelineLayerEye.js +18 -1
  21. package/dist/components/Timeline/TimelineListItem.js +61 -17
  22. package/dist/components/Timeline/TimelineNumberField.js +1 -1
  23. package/dist/components/Timeline/TimelineRotationField.js +1 -1
  24. package/dist/components/Timeline/TimelineSchemaField.d.ts +8 -2
  25. package/dist/components/Timeline/TimelineSchemaField.js +20 -11
  26. package/dist/components/Timeline/TimelineTracks.js +4 -4
  27. package/dist/components/Timeline/TimelineTranslateField.js +4 -2
  28. package/dist/components/Timeline/save-effect-prop.d.ts +12 -0
  29. package/dist/components/Timeline/save-effect-prop.js +42 -0
  30. package/dist/components/Timeline/save-prop-queue.d.ts +12 -0
  31. package/dist/components/Timeline/save-prop-queue.js +63 -0
  32. package/dist/components/Timeline/save-sequence-prop.d.ts +11 -0
  33. package/dist/components/Timeline/save-sequence-prop.js +38 -0
  34. package/dist/components/Timeline/sequence-props-subscription-store.d.ts +2 -1
  35. package/dist/components/Timeline/sequence-props-subscription-store.js +10 -4
  36. package/dist/components/Timeline/use-sequence-props-subscription.d.ts +2 -1
  37. package/dist/components/Timeline/use-sequence-props-subscription.js +3 -1
  38. package/dist/components/Timeline/use-timeline-height.js +3 -3
  39. package/dist/esm/chunk-5gtx3pza.js +9 -0
  40. package/dist/esm/{chunk-yzh34sp0.js → chunk-b0m62frw.js} +4511 -3740
  41. package/dist/esm/index.mjs +20 -24
  42. package/dist/esm/internals.mjs +4509 -3753
  43. package/dist/esm/previewEntry.mjs +3190 -2445
  44. package/dist/esm/renderEntry.mjs +3 -4
  45. package/dist/helpers/calculate-timeline.js +13 -5
  46. package/dist/helpers/get-timeline-sequence-sort-key.d.ts +3 -2
  47. package/dist/helpers/persist-boolean-map.d.ts +5 -0
  48. package/dist/helpers/persist-boolean-map.js +56 -0
  49. package/dist/helpers/persist-open-folders.d.ts +4 -3
  50. package/dist/helpers/persist-open-folders.js +4 -7
  51. package/dist/helpers/timeline-layout.d.ts +13 -13
  52. package/dist/helpers/timeline-layout.js +23 -35
  53. package/dist/icons/eyedropper.d.ts +4 -0
  54. package/dist/icons/eyedropper.js +6 -0
  55. package/package.json +11 -12
  56. 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-yzh34sp0.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 = "{}";
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.calculateTimeline = void 0;
4
+ const studio_shared_1 = require("@remotion/studio-shared");
4
5
  const get_sequence_visible_range_1 = require("./get-sequence-visible-range");
5
6
  const get_timeline_nestedness_1 = require("./get-timeline-nestedness");
6
7
  const get_timeline_sequence_hash_1 = require("./get-timeline-sequence-hash");
@@ -59,7 +60,12 @@ const calculateTimeline = ({ sequences, overrideIdsToNodePaths, }) => {
59
60
  cascadedStart,
60
61
  cascadedDuration: sequence.duration,
61
62
  nodePathInfo: nodePath
62
- ? { nodePath, index: 0, numberOfSequencesWithThisNodePath: 0 }
63
+ ? {
64
+ sequenceSubscriptionKey: nodePath,
65
+ auxiliaryKeys: [],
66
+ index: 0,
67
+ numberOfSequencesWithThisNodePath: 0,
68
+ }
63
69
  : null,
64
70
  });
65
71
  }
@@ -86,13 +92,14 @@ const calculateTimeline = ({ sequences, overrideIdsToNodePaths, }) => {
86
92
  if (track.nodePathInfo === null) {
87
93
  return track;
88
94
  }
89
- const key = track.nodePathInfo.nodePath.join('.');
95
+ const key = (0, studio_shared_1.stringifySequenceSubscriptionKey)(track.nodePathInfo.sequenceSubscriptionKey);
90
96
  const index = (_a = nodePathIndexCounters.get(key)) !== null && _a !== void 0 ? _a : 0;
91
97
  nodePathIndexCounters.set(key, index + 1);
92
98
  return {
93
99
  ...track,
94
100
  nodePathInfo: {
95
- nodePath: track.nodePathInfo.nodePath,
101
+ sequenceSubscriptionKey: track.nodePathInfo.sequenceSubscriptionKey,
102
+ auxiliaryKeys: track.nodePathInfo.auxiliaryKeys,
96
103
  index,
97
104
  numberOfSequencesWithThisNodePath: 0,
98
105
  },
@@ -103,11 +110,12 @@ const calculateTimeline = ({ sequences, overrideIdsToNodePaths, }) => {
103
110
  if (track.nodePathInfo === null) {
104
111
  return track;
105
112
  }
106
- const key = track.nodePathInfo.nodePath.join('.');
113
+ const key = (0, studio_shared_1.stringifySequenceSubscriptionKey)(track.nodePathInfo.sequenceSubscriptionKey);
107
114
  return {
108
115
  ...track,
109
116
  nodePathInfo: {
110
- nodePath: track.nodePathInfo.nodePath,
117
+ sequenceSubscriptionKey: track.nodePathInfo.sequenceSubscriptionKey,
118
+ auxiliaryKeys: track.nodePathInfo.auxiliaryKeys,
111
119
  index: track.nodePathInfo.index,
112
120
  numberOfSequencesWithThisNodePath: (_a = nodePathIndexCounters.get(key)) !== null && _a !== void 0 ? _a : 0,
113
121
  },
@@ -1,6 +1,7 @@
1
- import type { SequenceNodePath, TSequence } from 'remotion';
1
+ import type { SequencePropsSubscriptionKey, TSequence } from 'remotion';
2
2
  export type SequenceNodePathInfo = {
3
- nodePath: SequenceNodePath;
3
+ sequenceSubscriptionKey: SequencePropsSubscriptionKey;
4
+ auxiliaryKeys: string[];
4
5
  index: number;
5
6
  numberOfSequencesWithThisNodePath: number;
6
7
  };
@@ -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,9 +1,9 @@
1
- import { type CodeValues, type DragOverrides, type SchemaFieldInfo, type SequenceControls } from '@remotion/studio-shared';
2
- import type { EffectDefinitionAndStack, GetCodeValues, GetDragOverrides, TSequence } from 'remotion';
1
+ import { type AnySchemaFieldInfo, type CodeValues, type DragOverrides, type EffectSchemaFieldInfo, type SchemaFieldInfo, type SequenceControls, type SequenceSchemaFieldInfo } from '@remotion/studio-shared';
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
- export type { CodeValues, DragOverrides, SchemaFieldInfo, SequenceControls };
6
- export { SCHEMA_FIELD_ROW_HEIGHT, UNSUPPORTED_FIELD_ROW_HEIGHT, getFieldsToShow, } from '@remotion/studio-shared';
5
+ export type { AnySchemaFieldInfo, CodeValues, DragOverrides, EffectSchemaFieldInfo, SchemaFieldInfo, SequenceControls, SequenceSchemaFieldInfo, };
6
+ export { SCHEMA_FIELD_ROW_HEIGHT, getEffectFieldsToShow, getFieldsToShow, } from '@remotion/studio-shared';
7
7
  export declare const TIMELINE_PADDING = 16;
8
8
  export declare const TIMELINE_BORDER = 1;
9
9
  export declare const TIMELINE_ITEM_BORDER_BOTTOM = 1;
@@ -13,27 +13,27 @@ 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 EffectSchemaFieldLabel = {
17
- key: string;
18
- description: string | undefined;
16
+ export type TimelineEffectGroupInfo = {
17
+ readonly effectIndex: number;
18
+ readonly effectSchema: SequenceSchemaShape;
19
19
  };
20
- export declare const getEffectSchemaLabels: (effect: EffectDefinitionAndStack<unknown>) => EffectSchemaFieldLabel[];
21
20
  export type TimelineTreeNode = {
22
21
  readonly kind: 'group';
23
22
  readonly nodePathInfo: SequenceNodePathInfo;
24
23
  readonly label: string;
25
24
  readonly children: TimelineTreeNode[];
25
+ readonly effectInfo: TimelineEffectGroupInfo | null;
26
26
  } | {
27
27
  readonly kind: 'field';
28
28
  readonly nodePathInfo: SequenceNodePathInfo;
29
29
  readonly label: string;
30
- readonly field: SchemaFieldInfo | null;
30
+ readonly field: AnySchemaFieldInfo | null;
31
31
  };
32
- export declare const buildTimelineTree: ({ sequence, nodePathInfo, getDragOverrides, getCodeValues, }: {
32
+ export declare const buildTimelineTree: ({ sequence, nodePathInfo, getDragOverrides, codeValues, }: {
33
33
  sequence: TSequence;
34
34
  nodePathInfo: SequenceNodePathInfo;
35
35
  getDragOverrides: GetDragOverrides;
36
- getCodeValues: GetCodeValues;
36
+ codeValues: CodeValues;
37
37
  }) => TimelineTreeNode[];
38
38
  export type FlatTreeRow = {
39
39
  readonly node: TimelineTreeNode;
@@ -45,11 +45,11 @@ export declare const flattenVisibleTreeNodes: ({ nodes, getIsExpanded, depth, }:
45
45
  depth?: number | undefined;
46
46
  }) => FlatTreeRow[];
47
47
  export declare const getTreeRowHeight: (node: TimelineTreeNode) => number;
48
- export declare const getExpandedTrackHeight: ({ sequence, nodePathInfo, getIsExpanded, getCodeValues, }: {
48
+ export declare const getExpandedTrackHeight: ({ sequence, nodePathInfo, getIsExpanded, codeValues, }: {
49
49
  sequence: TSequence;
50
50
  nodePathInfo: SequenceNodePathInfo;
51
51
  getIsExpanded: GetIsExpanded;
52
- getCodeValues: GetCodeValues;
52
+ codeValues: CodeValues;
53
53
  }) => number;
54
54
  export declare const TIMELINE_LAYER_HEIGHT_VIDEO = 75;
55
55
  export declare const TIMELINE_LAYER_HEIGHT_IMAGE = 50;
@@ -1,11 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getTimelineLayerHeight = exports.TIMELINE_LAYER_HEIGHT_AUDIO = exports.TIMELINE_LAYER_HEIGHT_IMAGE = exports.TIMELINE_LAYER_HEIGHT_VIDEO = exports.getExpandedTrackHeight = exports.getTreeRowHeight = exports.flattenVisibleTreeNodes = exports.buildTimelineTree = exports.getEffectSchemaLabels = exports.EXPANDED_SECTION_PADDING_RIGHT = exports.EXPANDED_SECTION_PADDING_LEFT = exports.TREE_GROUP_ROW_HEIGHT = exports.TIMELINE_TRACK_EXPANDED_HEIGHT = exports.TIMELINE_ITEM_BORDER_BOTTOM = exports.TIMELINE_BORDER = exports.TIMELINE_PADDING = exports.getFieldsToShow = exports.UNSUPPORTED_FIELD_ROW_HEIGHT = exports.SCHEMA_FIELD_ROW_HEIGHT = void 0;
3
+ exports.getTimelineLayerHeight = exports.TIMELINE_LAYER_HEIGHT_AUDIO = exports.TIMELINE_LAYER_HEIGHT_IMAGE = exports.TIMELINE_LAYER_HEIGHT_VIDEO = exports.getExpandedTrackHeight = exports.getTreeRowHeight = exports.flattenVisibleTreeNodes = exports.buildTimelineTree = exports.EXPANDED_SECTION_PADDING_RIGHT = exports.EXPANDED_SECTION_PADDING_LEFT = exports.TREE_GROUP_ROW_HEIGHT = exports.TIMELINE_TRACK_EXPANDED_HEIGHT = exports.TIMELINE_ITEM_BORDER_BOTTOM = exports.TIMELINE_BORDER = exports.TIMELINE_PADDING = exports.getFieldsToShow = exports.getEffectFieldsToShow = exports.SCHEMA_FIELD_ROW_HEIGHT = void 0;
4
4
  const studio_shared_1 = require("@remotion/studio-shared");
5
- const no_react_1 = require("remotion/no-react");
6
5
  const studio_shared_2 = require("@remotion/studio-shared");
7
6
  Object.defineProperty(exports, "SCHEMA_FIELD_ROW_HEIGHT", { enumerable: true, get: function () { return studio_shared_2.SCHEMA_FIELD_ROW_HEIGHT; } });
8
- Object.defineProperty(exports, "UNSUPPORTED_FIELD_ROW_HEIGHT", { enumerable: true, get: function () { return studio_shared_2.UNSUPPORTED_FIELD_ROW_HEIGHT; } });
7
+ Object.defineProperty(exports, "getEffectFieldsToShow", { enumerable: true, get: function () { return studio_shared_2.getEffectFieldsToShow; } });
9
8
  Object.defineProperty(exports, "getFieldsToShow", { enumerable: true, get: function () { return studio_shared_2.getFieldsToShow; } });
10
9
  exports.TIMELINE_PADDING = 16;
11
10
  exports.TIMELINE_BORDER = 1;
@@ -14,57 +13,45 @@ exports.TIMELINE_TRACK_EXPANDED_HEIGHT = 100;
14
13
  exports.TREE_GROUP_ROW_HEIGHT = 22;
15
14
  exports.EXPANDED_SECTION_PADDING_LEFT = 28;
16
15
  exports.EXPANDED_SECTION_PADDING_RIGHT = 10;
17
- const getEffectSchemaLabels = (effect) => {
18
- if (!effect.definition.schema) {
19
- return [];
20
- }
21
- return Object.entries(effect.definition.schema)
22
- .map(([key, fieldSchema]) => {
23
- if (fieldSchema.type === 'hidden') {
24
- return null;
25
- }
26
- return {
27
- key,
28
- description: fieldSchema.description,
29
- };
30
- })
31
- .filter(no_react_1.NoReactInternals.truthy);
32
- };
33
- exports.getEffectSchemaLabels = getEffectSchemaLabels;
34
- const buildTimelineTree = ({ sequence, nodePathInfo, getDragOverrides, getCodeValues, }) => {
16
+ const buildTimelineTree = ({ sequence, nodePathInfo, getDragOverrides, codeValues, }) => {
35
17
  var _a;
36
18
  const roots = [];
37
- const { nodePath, index } = nodePathInfo;
19
+ const { sequenceSubscriptionKey, index, auxiliaryKeys } = nodePathInfo;
38
20
  if (sequence.effects.length > 0) {
39
21
  roots.push({
40
22
  kind: 'group',
41
23
  nodePathInfo: {
42
- nodePath: [...nodePath, 'effects'],
24
+ sequenceSubscriptionKey,
25
+ auxiliaryKeys: [...auxiliaryKeys, 'effects'],
43
26
  index,
44
27
  numberOfSequencesWithThisNodePath: 0,
45
28
  },
46
29
  label: 'Effects',
30
+ effectInfo: null,
47
31
  children: sequence.effects.map((effect, i) => {
48
- const effectNodePath = [...nodePath, 'effects', i];
32
+ const effectFields = (0, studio_shared_1.getEffectFieldsToShow)(effect, i);
49
33
  return {
50
34
  kind: 'group',
51
35
  nodePathInfo: {
52
- nodePath: effectNodePath,
36
+ sequenceSubscriptionKey,
37
+ auxiliaryKeys: [...auxiliaryKeys, 'effects', i.toString()],
53
38
  index,
54
39
  numberOfSequencesWithThisNodePath: 0,
55
40
  },
56
- label: effect.definition.label,
57
- children: (0, exports.getEffectSchemaLabels)(effect).map((label) => {
41
+ label: effect.label,
42
+ effectInfo: { effectIndex: i, effectSchema: effect.schema },
43
+ children: effectFields.map((f) => {
58
44
  var _a;
59
45
  return ({
60
46
  kind: 'field',
61
47
  nodePathInfo: {
62
- nodePath: [...effectNodePath, label.key],
48
+ sequenceSubscriptionKey,
49
+ auxiliaryKeys: [...auxiliaryKeys, f.key],
63
50
  index,
64
51
  numberOfSequencesWithThisNodePath: 0,
65
52
  },
66
- label: (_a = label.description) !== null && _a !== void 0 ? _a : label.key,
67
- field: null,
53
+ label: (_a = f.description) !== null && _a !== void 0 ? _a : f.key,
54
+ field: f,
68
55
  });
69
56
  }),
70
57
  };
@@ -75,15 +62,16 @@ const buildTimelineTree = ({ sequence, nodePathInfo, getDragOverrides, getCodeVa
75
62
  schema: sequence.controls.schema,
76
63
  currentRuntimeValueDotNotation: sequence.controls.currentRuntimeValueDotNotation,
77
64
  getDragOverrides,
78
- getCodeValues,
79
- nodePath,
65
+ codeValues,
66
+ nodePath: sequenceSubscriptionKey,
80
67
  });
81
68
  if (controlFields && controlFields.length > 0) {
82
69
  for (const f of controlFields) {
83
70
  roots.push({
84
71
  kind: 'field',
85
72
  nodePathInfo: {
86
- nodePath: [...nodePath, 'controls', f.key],
73
+ sequenceSubscriptionKey,
74
+ auxiliaryKeys: [...auxiliaryKeys, 'controls', f.key],
87
75
  index,
88
76
  numberOfSequencesWithThisNodePath: 0,
89
77
  },
@@ -117,13 +105,13 @@ const getTreeRowHeight = (node) => {
117
105
  return exports.TREE_GROUP_ROW_HEIGHT;
118
106
  };
119
107
  exports.getTreeRowHeight = getTreeRowHeight;
120
- const getExpandedTrackHeight = ({ sequence, nodePathInfo, getIsExpanded, getCodeValues, }) => {
108
+ const getExpandedTrackHeight = ({ sequence, nodePathInfo, getIsExpanded, codeValues, }) => {
121
109
  const tree = (0, exports.buildTimelineTree)({
122
110
  sequence,
123
111
  nodePathInfo,
124
112
  // We assume that no drag overrides can change the timeline layout
125
113
  getDragOverrides: () => ({}),
126
- getCodeValues,
114
+ codeValues,
127
115
  });
128
116
  const flat = (0, exports.flattenVisibleTreeNodes)({ nodes: tree, getIsExpanded });
129
117
  if (flat.length === 0) {
@@ -0,0 +1,4 @@
1
+ import type { SVGProps } from 'react';
2
+ export declare const EyedropperIcon: React.FC<SVGProps<SVGSVGElement> & {
3
+ color?: string;
4
+ }>;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EyedropperIcon = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const EyedropperIcon = ({ color, ...props }) => (jsx_runtime_1.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 640 640", ...props, children: jsx_runtime_1.jsx("path", { fill: color !== null && color !== void 0 ? color : 'currentColor', d: "M263 233C278.6 248.6 315.3 285.3 373.1 343.1C400.1 370.1 414 384 415 385C424.4 394.4 439.6 394.4 448.9 385C458.2 375.6 458.3 360.4 448.9 351.1L440.9 343.1C457.3 326.7 492.4 291.6 546.1 237.9C565.2 218.8 575.9 192.9 575.9 165.9C575.9 109.7 530.3 64.1 474.1 64.1C447.1 64.1 421.2 74.8 402.1 93.9C348.4 147.6 313.3 182.7 296.9 199.1L288.9 191.1C279.5 181.7 264.3 181.7 255 191.1C245.7 200.5 245.6 215.7 255 225L255 225L263 233zM512.2 203.9L407 309.1L330.9 233L436.1 127.8C446.2 117.7 459.9 112 474.2 112C503.9 112 528 136.1 528 165.8C528 180.1 522.3 193.8 512.2 203.9zM117.1 393C103.6 406.5 96 424.8 96 443.9L96 496.8L68 538.8C61.7 548.3 62.9 561 71 569.1C79.1 577.2 91.8 578.4 101.3 572.1L143.3 544.1L196.2 544.1C215.3 544.1 233.6 536.5 247.1 523L366.1 404L332.2 370.1L213.2 489.1C208.7 493.6 202.6 496.1 196.2 496.1L144.1 496.1L144.1 444C144.1 437.6 146.6 431.5 151.1 427L270.1 308L236.2 274.1L117.2 393.1z" }) }));
6
+ exports.EyedropperIcon = EyedropperIcon;
package/package.json CHANGED
@@ -3,10 +3,9 @@
3
3
  "url": "https://github.com/remotion-dev/remotion/tree/main/packages/studio"
4
4
  },
5
5
  "name": "@remotion/studio",
6
- "version": "4.0.461",
6
+ "version": "4.0.463",
7
7
  "description": "APIs for interacting with the Remotion Studio",
8
8
  "main": "dist",
9
- "sideEffects": false,
10
9
  "scripts": {
11
10
  "lint": "eslint src",
12
11
  "make": "tsgo -d && bun --env-file=../.env.bundle bundle.ts",
@@ -26,16 +25,16 @@
26
25
  },
27
26
  "dependencies": {
28
27
  "semver": "7.5.3",
29
- "remotion": "4.0.461",
30
- "@remotion/player": "4.0.461",
31
- "@remotion/media-utils": "4.0.461",
32
- "@remotion/renderer": "4.0.461",
33
- "@remotion/web-renderer": "4.0.461",
34
- "@remotion/studio-shared": "4.0.461",
35
- "@remotion/timeline-utils": "4.0.461",
36
- "@remotion/zod-types": "4.0.461",
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",
37
36
  "@jridgewell/trace-mapping": "0.3.31",
38
- "mediabunny": "1.42.0",
37
+ "mediabunny": "1.45.0",
39
38
  "memfs": "3.4.3",
40
39
  "open": "8.4.2",
41
40
  "zod": "4.3.6"
@@ -44,7 +43,7 @@
44
43
  "react": "19.2.3",
45
44
  "react-dom": "19.2.3",
46
45
  "@types/semver": "7.5.3",
47
- "@remotion/eslint-config-internal": "4.0.461",
46
+ "@remotion/eslint-config-internal": "4.0.463",
48
47
  "eslint": "9.19.0",
49
48
  "@typescript/native-preview": "7.0.0-dev.20260217.1"
50
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 };