@remotion/studio 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.
Files changed (201) hide show
  1. package/dist/components/AssetSelector.js +8 -14
  2. package/dist/components/AudioWaveform.js +19 -11
  3. package/dist/components/Button.d.ts +2 -0
  4. package/dist/components/Button.js +9 -6
  5. package/dist/components/CompactExplanation.d.ts +12 -0
  6. package/dist/components/CompactExplanation.js +52 -0
  7. package/dist/components/CompositionSelector.js +2 -4
  8. package/dist/components/CurrentAsset.d.ts +3 -1
  9. package/dist/components/CurrentAsset.js +42 -34
  10. package/dist/components/CurrentComposition.d.ts +1 -1
  11. package/dist/components/CurrentComposition.js +38 -31
  12. package/dist/components/CurrentCompositionSideEffects.d.ts +0 -3
  13. package/dist/components/CurrentCompositionSideEffects.js +1 -37
  14. package/dist/components/DefaultPropsEditor.d.ts +12 -2
  15. package/dist/components/DefaultPropsEditor.js +2 -2
  16. package/dist/components/Editor.js +2 -5
  17. package/dist/components/EditorContent.js +2 -1
  18. package/dist/components/EffectPickerModal.d.ts +5 -0
  19. package/dist/components/EffectPickerModal.js +179 -0
  20. package/dist/components/ExpandedTracksProvider.d.ts +1 -0
  21. package/dist/components/ExpandedTracksProvider.js +81 -7
  22. package/dist/components/GlobalKeybindings.d.ts +3 -1
  23. package/dist/components/GlobalKeybindings.js +104 -10
  24. package/dist/components/InspectorInfoHeader.d.ts +11 -0
  25. package/dist/components/InspectorInfoHeader.js +55 -0
  26. package/dist/components/InspectorPanel/DefaultInspector.d.ts +8 -0
  27. package/dist/components/InspectorPanel/DefaultInspector.js +93 -0
  28. package/dist/components/InspectorPanel/EasingInspector.d.ts +5 -0
  29. package/dist/components/InspectorPanel/EasingInspector.js +41 -0
  30. package/dist/components/InspectorPanel/GuideInspector.d.ts +7 -0
  31. package/dist/components/InspectorPanel/GuideInspector.js +55 -0
  32. package/dist/components/InspectorPanel/KeyframeInspector.d.ts +7 -0
  33. package/dist/components/InspectorPanel/KeyframeInspector.js +109 -0
  34. package/dist/components/InspectorPanel/SelectedInspector.d.ts +5 -0
  35. package/dist/components/InspectorPanel/SelectedInspector.js +26 -0
  36. package/dist/components/InspectorPanel/SequenceSelectionInspector.d.ts +5 -0
  37. package/dist/components/InspectorPanel/SequenceSelectionInspector.js +117 -0
  38. package/dist/components/InspectorPanel/common.d.ts +15 -0
  39. package/dist/components/InspectorPanel/common.js +18 -0
  40. package/dist/components/InspectorPanel/inspector-selection.d.ts +10 -0
  41. package/dist/components/InspectorPanel/inspector-selection.js +35 -0
  42. package/dist/components/InspectorPanel/styles.d.ts +28 -0
  43. package/dist/components/InspectorPanel/styles.js +196 -0
  44. package/dist/components/InspectorPanel/use-track-for-selection.d.ts +2 -0
  45. package/dist/components/InspectorPanel/use-track-for-selection.js +22 -0
  46. package/dist/components/InspectorPanel.d.ts +8 -0
  47. package/dist/components/InspectorPanel.js +26 -0
  48. package/dist/components/InspectorPanelLayout.d.ts +1 -0
  49. package/dist/components/InspectorPanelLayout.js +4 -0
  50. package/dist/components/InspectorSequenceSection.d.ts +19 -0
  51. package/dist/components/InspectorSequenceSection.js +157 -0
  52. package/dist/components/InspectorSourceLocation.d.ts +7 -0
  53. package/dist/components/InspectorSourceLocation.js +71 -0
  54. package/dist/components/KeyboardShortcutsExplainer.js +10 -2
  55. package/dist/components/Modals.js +3 -3
  56. package/dist/components/NewComposition/InputDragger.js +1 -1
  57. package/dist/components/NewComposition/RemInput.d.ts +1 -0
  58. package/dist/components/NewComposition/RemInput.js +8 -2
  59. package/dist/components/NewComposition/RemTextarea.d.ts +1 -0
  60. package/dist/components/NewComposition/RemTextarea.js +8 -2
  61. package/dist/components/NewComposition/ValidationMessage.d.ts +3 -0
  62. package/dist/components/NewComposition/ValidationMessage.js +16 -5
  63. package/dist/components/OptionsPanel.d.ts +1 -1
  64. package/dist/components/OptionsPanel.js +8 -17
  65. package/dist/components/QuickSwitcher/QuickSwitcherContent.js +2 -7
  66. package/dist/components/QuickSwitcher/QuickSwitcherResult.js +3 -10
  67. package/dist/components/QuickSwitcher/shared.d.ts +4 -0
  68. package/dist/components/QuickSwitcher/shared.js +24 -0
  69. package/dist/components/RenderModal/DataEditor.d.ts +29 -2
  70. package/dist/components/RenderModal/DataEditor.js +107 -56
  71. package/dist/components/RenderModal/RenderModalJSONPropsEditor.d.ts +1 -0
  72. package/dist/components/RenderModal/RenderModalJSONPropsEditor.js +25 -7
  73. package/dist/components/RenderModal/SchemaEditor/Fieldset.d.ts +2 -1
  74. package/dist/components/RenderModal/SchemaEditor/Fieldset.js +10 -5
  75. package/dist/components/RenderModal/SchemaEditor/SchemaEditor.d.ts +4 -0
  76. package/dist/components/RenderModal/SchemaEditor/SchemaEditor.js +27 -4
  77. package/dist/components/RenderModal/SchemaEditor/SchemaErrorMessages.d.ts +12 -4
  78. package/dist/components/RenderModal/SchemaEditor/SchemaErrorMessages.js +23 -9
  79. package/dist/components/RenderModal/SchemaEditor/SchemaLabel.js +3 -3
  80. package/dist/components/RenderModal/SchemaEditor/SchemaSeparationLine.js +8 -1
  81. package/dist/components/RenderModal/SchemaEditor/ZodColorEditor.js +1 -1
  82. package/dist/components/RenderModal/SchemaEditor/ZodDateEditor.js +1 -1
  83. package/dist/components/RenderModal/SchemaEditor/ZodDiscriminatedUnionEditor.js +1 -1
  84. package/dist/components/RenderModal/SchemaEditor/ZodEnumEditor.js +1 -1
  85. package/dist/components/RenderModal/SchemaEditor/ZodErrorMessages.d.ts +1 -0
  86. package/dist/components/RenderModal/SchemaEditor/ZodErrorMessages.js +23 -6
  87. package/dist/components/RenderModal/SchemaEditor/ZodFieldValidation.js +2 -2
  88. package/dist/components/RenderModal/SchemaEditor/ZodNonEditableValue.js +2 -1
  89. package/dist/components/RenderModal/SchemaEditor/ZodNumberEditor.js +1 -1
  90. package/dist/components/RenderModal/SchemaEditor/ZodObjectEditor.js +9 -11
  91. package/dist/components/RenderModal/SchemaEditor/ZodOrNullishEditor.js +1 -1
  92. package/dist/components/RenderModal/SchemaEditor/ZodStaticFileEditor.js +1 -1
  93. package/dist/components/RenderModal/SchemaEditor/ZodStringEditor.js +1 -1
  94. package/dist/components/RenderModal/SchemaEditor/ZodTextareaEditor.js +1 -1
  95. package/dist/components/RenderModal/WarningIndicatorButton.d.ts +1 -0
  96. package/dist/components/RenderModal/WarningIndicatorButton.js +17 -4
  97. package/dist/components/RenderModal/get-render-modal-warnings.d.ts +2 -1
  98. package/dist/components/RenderModal/get-render-modal-warnings.js +6 -3
  99. package/dist/components/RendersTab.js +1 -1
  100. package/dist/components/ResetZoomButton.d.ts +2 -1
  101. package/dist/components/ResetZoomButton.js +5 -1
  102. package/dist/components/SegmentedControl.d.ts +3 -0
  103. package/dist/components/SegmentedControl.js +11 -5
  104. package/dist/components/SelectedOutlineElement.js +96 -24
  105. package/dist/components/SelectedOutlineOverlay.d.ts +1 -1
  106. package/dist/components/SelectedOutlineOverlay.js +44 -30
  107. package/dist/components/SelectedOutlineUvControls.d.ts +9 -0
  108. package/dist/components/SelectedOutlineUvControls.js +64 -10
  109. package/dist/components/Tabs/index.js +4 -4
  110. package/dist/components/Timeline/EasingEditorModal.d.ts +5 -4
  111. package/dist/components/Timeline/EasingEditorModal.js +597 -124
  112. package/dist/components/Timeline/KeyframeSettingsModal.d.ts +2 -2
  113. package/dist/components/Timeline/SubscribeToNodePaths.d.ts +2 -2
  114. package/dist/components/Timeline/Timeline.js +9 -9
  115. package/dist/components/Timeline/TimelineClipboardKeybindings.d.ts +15 -3
  116. package/dist/components/Timeline/TimelineClipboardKeybindings.js +85 -1
  117. package/dist/components/Timeline/TimelineDeleteKeybindings.js +10 -3
  118. package/dist/components/Timeline/TimelineEffectItem.d.ts +2 -2
  119. package/dist/components/Timeline/TimelineEffectItem.js +1 -1
  120. package/dist/components/Timeline/TimelineEffectPropItem.d.ts +8 -0
  121. package/dist/components/Timeline/TimelineEffectPropItem.js +25 -21
  122. package/dist/components/Timeline/TimelineExpandArrowButton.js +42 -2
  123. package/dist/components/Timeline/TimelineExpandedRow.d.ts +5 -2
  124. package/dist/components/Timeline/TimelineExpandedRow.js +6 -6
  125. package/dist/components/Timeline/TimelineExpandedSection.d.ts +1 -1
  126. package/dist/components/Timeline/TimelineExpandedSection.js +10 -25
  127. package/dist/components/Timeline/TimelineKeyframeControls.d.ts +8 -2
  128. package/dist/components/Timeline/TimelineKeyframeControls.js +24 -3
  129. package/dist/components/Timeline/TimelineKeyframeEasingLine.js +2 -47
  130. package/dist/components/Timeline/TimelineKeyframedValue.d.ts +1 -1
  131. package/dist/components/Timeline/TimelineKeyframedValue.js +8 -10
  132. package/dist/components/Timeline/TimelineNumberField.js +5 -11
  133. package/dist/components/Timeline/TimelineRotationField.js +5 -6
  134. package/dist/components/Timeline/TimelineRowChrome.d.ts +2 -0
  135. package/dist/components/Timeline/TimelineRowChrome.js +5 -3
  136. package/dist/components/Timeline/TimelineScaleField.js +4 -8
  137. package/dist/components/Timeline/TimelineSelection.d.ts +28 -2
  138. package/dist/components/Timeline/TimelineSelection.js +342 -61
  139. package/dist/components/Timeline/TimelineSequence.js +19 -3
  140. package/dist/components/Timeline/TimelineSequenceItem.js +68 -64
  141. package/dist/components/Timeline/TimelineSequencePropItem.d.ts +12 -2
  142. package/dist/components/Timeline/TimelineSequencePropItem.js +57 -53
  143. package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +6 -4
  144. package/dist/components/Timeline/TimelineTransformOriginField.js +4 -5
  145. package/dist/components/Timeline/TimelineTranslateField.js +4 -5
  146. package/dist/components/Timeline/TimelineUvCoordinateField.js +4 -4
  147. package/dist/components/Timeline/call-add-keyframe.d.ts +4 -4
  148. package/dist/components/Timeline/call-delete-keyframe.d.ts +4 -4
  149. package/dist/components/Timeline/call-move-keyframe.d.ts +2 -2
  150. package/dist/components/Timeline/call-update-keyframe-settings.d.ts +3 -3
  151. package/dist/components/Timeline/delete-selected-timeline-item.d.ts +2 -1
  152. package/dist/components/Timeline/delete-selected-timeline-item.js +27 -1
  153. package/dist/components/Timeline/find-track-for-node-path-info.js +2 -2
  154. package/dist/components/Timeline/get-node-keyframes.d.ts +7 -0
  155. package/dist/components/Timeline/get-node-keyframes.js +26 -1
  156. package/dist/components/Timeline/parse-keyframe-field-from-node-path.js +2 -2
  157. package/dist/components/Timeline/reset-selected-timeline-props.d.ts +3 -3
  158. package/dist/components/Timeline/reset-selected-timeline-props.js +34 -7
  159. package/dist/components/Timeline/save-effect-prop.d.ts +2 -2
  160. package/dist/components/Timeline/save-sequence-prop.d.ts +2 -2
  161. package/dist/components/Timeline/sequence-props-subscription-store.d.ts +3 -3
  162. package/dist/components/Timeline/timeline-expanded-filter.d.ts +12 -0
  163. package/dist/components/Timeline/timeline-expanded-filter.js +38 -0
  164. package/dist/components/Timeline/timeline-field-display-utils.d.ts +5 -0
  165. package/dist/components/Timeline/timeline-field-display-utils.js +244 -0
  166. package/dist/components/Timeline/update-selected-easing.d.ts +47 -4
  167. package/dist/components/Timeline/update-selected-easing.js +40 -9
  168. package/dist/components/Timeline/use-expanded-track-keyframe-rows.js +50 -18
  169. package/dist/components/Timeline/use-sequence-freeze-frame-menu-item.d.ts +13 -0
  170. package/dist/components/Timeline/use-sequence-freeze-frame-menu-item.js +73 -0
  171. package/dist/components/Timeline/use-sequence-props-subscription.d.ts +3 -3
  172. package/dist/components/Timeline/use-timeline-expanded-tree.d.ts +12 -0
  173. package/dist/components/Timeline/use-timeline-expanded-tree.js +60 -0
  174. package/dist/components/Timeline/use-timeline-height.js +51 -7
  175. package/dist/components/Timeline/use-timeline-keyframe-drag.js +12 -6
  176. package/dist/components/TopPanel.js +1 -1
  177. package/dist/components/VisualControls/VisualControlsContent.d.ts +1 -1
  178. package/dist/components/VisualControls/VisualControlsContent.js +4 -5
  179. package/dist/components/effect-drag-and-drop.d.ts +10 -0
  180. package/dist/components/effect-drag-and-drop.js +17 -8
  181. package/dist/components/effect-picker-search.d.ts +5 -0
  182. package/dist/components/effect-picker-search.js +77 -0
  183. package/dist/components/selected-outline-drag.d.ts +21 -2
  184. package/dist/components/selected-outline-drag.js +31 -6
  185. package/dist/components/selected-outline-measurement.js +48 -14
  186. package/dist/components/selected-outline-types.d.ts +7 -7
  187. package/dist/components/selected-outline-uv.d.ts +4 -3
  188. package/dist/components/selected-outline-uv.js +6 -2
  189. package/dist/error-overlay/remotion-overlay/ErrorLoader.js +8 -1
  190. package/dist/esm/{chunk-hrw9799x.js → chunk-4rq5gt8c.js} +30557 -26640
  191. package/dist/esm/internals.mjs +30557 -26640
  192. package/dist/esm/previewEntry.mjs +18584 -14665
  193. package/dist/esm/renderEntry.mjs +1 -1
  194. package/dist/helpers/migrate-expanded-tracks-for-subscription-key.js +3 -3
  195. package/dist/helpers/render-codec-label.d.ts +2 -0
  196. package/dist/helpers/render-codec-label.js +49 -0
  197. package/dist/helpers/timeline-layout.d.ts +4 -4
  198. package/dist/helpers/use-media-metadata.d.ts +8 -2
  199. package/dist/helpers/use-media-metadata.js +17 -4
  200. package/dist/state/modals.d.ts +9 -4
  201. package/package.json +12 -12
@@ -1,11 +1,11 @@
1
- import type { SequencePropsSubscriptionKey, SequenceSchema } from 'remotion';
1
+ import type { SequencePropsSubscriptionKey, InteractivitySchema } from 'remotion';
2
2
  import type { SetPropStatuses } from './save-sequence-prop';
3
3
  export type DeleteSequenceKeyframeChange = {
4
4
  fileName: string;
5
5
  nodePath: SequencePropsSubscriptionKey;
6
6
  fieldKey: string;
7
7
  sourceFrame: number;
8
- schema: SequenceSchema;
8
+ schema: InteractivitySchema;
9
9
  };
10
10
  export type DeleteEffectKeyframeChange = DeleteSequenceKeyframeChange & {
11
11
  effectIndex: number;
@@ -15,7 +15,7 @@ export declare const callDeleteSequenceKeyframe: ({ fileName, nodePath, fieldKey
15
15
  nodePath: SequencePropsSubscriptionKey;
16
16
  fieldKey: string;
17
17
  sourceFrame: number;
18
- schema: SequenceSchema;
18
+ schema: InteractivitySchema;
19
19
  setPropStatuses: SetPropStatuses;
20
20
  clientId: string;
21
21
  }) => Promise<void>;
@@ -25,7 +25,7 @@ export declare const callDeleteEffectKeyframe: ({ fileName, nodePath, effectInde
25
25
  effectIndex: number;
26
26
  fieldKey: string;
27
27
  sourceFrame: number;
28
- schema: SequenceSchema;
28
+ schema: InteractivitySchema;
29
29
  setPropStatuses: SetPropStatuses;
30
30
  clientId: string;
31
31
  }) => Promise<void>;
@@ -1,4 +1,4 @@
1
- import type { SequencePropsSubscriptionKey, SequenceSchema } from 'remotion';
1
+ import type { SequencePropsSubscriptionKey, InteractivitySchema } from 'remotion';
2
2
  import type { SetPropStatuses } from './save-sequence-prop';
3
3
  export type MoveSequenceKeyframeChange = {
4
4
  fileName: string;
@@ -6,7 +6,7 @@ export type MoveSequenceKeyframeChange = {
6
6
  fieldKey: string;
7
7
  fromFrame: number;
8
8
  toFrame: number;
9
- schema: SequenceSchema;
9
+ schema: InteractivitySchema;
10
10
  };
11
11
  export type MoveEffectKeyframeChange = MoveSequenceKeyframeChange & {
12
12
  effectIndex: number;
@@ -1,12 +1,12 @@
1
1
  import { type KeyframeSettings } from '@remotion/studio-shared';
2
- import type { SequencePropsSubscriptionKey, SequenceSchema } from 'remotion';
2
+ import type { SequencePropsSubscriptionKey, InteractivitySchema } from 'remotion';
3
3
  import type { SetPropStatuses } from './save-sequence-prop';
4
4
  export declare const callUpdateSequenceKeyframeSettings: ({ fileName, nodePath, fieldKey, settings, schema, setPropStatuses, clientId, }: {
5
5
  fileName: string;
6
6
  nodePath: SequencePropsSubscriptionKey;
7
7
  fieldKey: string;
8
8
  settings: KeyframeSettings;
9
- schema: SequenceSchema;
9
+ schema: InteractivitySchema;
10
10
  setPropStatuses: SetPropStatuses;
11
11
  clientId: string;
12
12
  }) => Promise<void>;
@@ -16,7 +16,7 @@ export declare const callUpdateEffectKeyframeSettings: ({ fileName, nodePath, ef
16
16
  effectIndex: number;
17
17
  fieldKey: string;
18
18
  settings: KeyframeSettings;
19
- schema: SequenceSchema;
19
+ schema: InteractivitySchema;
20
20
  setPropStatuses: SetPropStatuses;
21
21
  clientId: string;
22
22
  }) => Promise<void>;
@@ -1,7 +1,7 @@
1
1
  import type { OverrideIdToNodePaths, TSequence } from 'remotion';
2
2
  import type { ConfirmationDialogFunction } from '../ConfirmationDialog-types';
3
3
  import type { SetPropStatuses } from './save-sequence-prop';
4
- import type { TimelineSelection } from './TimelineSelection';
4
+ import { type TimelineSelection } from './TimelineSelection';
5
5
  export declare const deleteSelectedTimelineItem: ({ selection, sequences, overrideIdsToNodePaths, setPropStatuses, clientId, confirm, }: {
6
6
  selection: TimelineSelection;
7
7
  sequences: TSequence[];
@@ -10,6 +10,7 @@ export declare const deleteSelectedTimelineItem: ({ selection, sequences, overri
10
10
  clientId: string;
11
11
  confirm: ConfirmationDialogFunction;
12
12
  }) => Promise<boolean> | null;
13
+ export declare const getTimelineSelectionAfterDeletingItems: (selections: readonly TimelineSelection[]) => readonly TimelineSelection[];
13
14
  export declare const deleteSelectedTimelineItems: ({ selections, sequences, overrideIdsToNodePaths, setPropStatuses, clientId, confirm, }: {
14
15
  selections: readonly TimelineSelection[];
15
16
  sequences: TSequence[];
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.deleteSelectedTimelineItems = exports.deleteSelectedTimelineItem = void 0;
3
+ exports.deleteSelectedTimelineItems = exports.getTimelineSelectionAfterDeletingItems = exports.deleteSelectedTimelineItem = void 0;
4
4
  const call_api_1 = require("../call-api");
5
5
  const NotificationCenter_1 = require("../Notifications/NotificationCenter");
6
6
  const delete_selected_keyframe_1 = require("./delete-selected-keyframe");
7
+ const TimelineSelection_1 = require("./TimelineSelection");
7
8
  const confirmDeletingDuplicatedSequences = (nodePathInfos, confirm) => {
8
9
  const duplicatedNodePathInfos = nodePathInfos.filter((nodePathInfo) => nodePathInfo.numberOfSequencesWithThisNodePath > 1);
9
10
  if (duplicatedNodePathInfos.length === 0) {
@@ -136,6 +137,31 @@ const isSequenceRowSelection = (selection) => selection.type === 'sequence';
136
137
  const isSequenceEffectSelection = (selection) => selection.type === 'sequence-effect';
137
138
  const isSequenceAllEffectsSelection = (selection) => selection.type === 'sequence-all-effects';
138
139
  const isKeyframeSelection = (selection) => selection.type === 'keyframe';
140
+ const getSequenceSelectionAfterDeletingEffect = (selection) => {
141
+ if (selection.type !== 'sequence-effect' &&
142
+ selection.type !== 'sequence-all-effects') {
143
+ return null;
144
+ }
145
+ return {
146
+ type: 'sequence',
147
+ nodePathInfo: {
148
+ ...selection.nodePathInfo,
149
+ auxiliaryKeys: [],
150
+ },
151
+ };
152
+ };
153
+ const getTimelineSelectionAfterDeletingItems = (selections) => {
154
+ const nextSelections = new Map();
155
+ for (const selection of selections) {
156
+ const nextSelection = getSequenceSelectionAfterDeletingEffect(selection);
157
+ if (!nextSelection) {
158
+ return [];
159
+ }
160
+ nextSelections.set((0, TimelineSelection_1.getTimelineSelectionKey)(nextSelection), nextSelection);
161
+ }
162
+ return Array.from(nextSelections.values());
163
+ };
164
+ exports.getTimelineSelectionAfterDeletingItems = getTimelineSelectionAfterDeletingItems;
139
165
  const areSelectionsOnlyOfType = (selections, type) => selections.every((selection) => selection.type === type);
140
166
  const assertTimelineSelectionsHaveSameType = (selections) => {
141
167
  const firstSelection = selections[0];
@@ -6,8 +6,8 @@ const calculate_timeline_1 = require("../../helpers/calculate-timeline");
6
6
  const findTrackForNodePathInfo = ({ sequences, overrideIdsToNodePaths, nodePathInfo, }) => {
7
7
  const tracks = (0, calculate_timeline_1.calculateTimeline)({ sequences, overrideIdsToNodePaths });
8
8
  return tracks.find((candidate) => candidate.nodePathInfo !== null &&
9
- (0, studio_shared_1.stringifySequenceSubscriptionKey)(candidate.nodePathInfo.sequenceSubscriptionKey) ===
10
- (0, studio_shared_1.stringifySequenceSubscriptionKey)(nodePathInfo.sequenceSubscriptionKey) &&
9
+ (0, studio_shared_1.stringifySequenceExpandedRowKey)(candidate.nodePathInfo.sequenceSubscriptionKey) ===
10
+ (0, studio_shared_1.stringifySequenceExpandedRowKey)(nodePathInfo.sequenceSubscriptionKey) &&
11
11
  candidate.nodePathInfo.index === nodePathInfo.index);
12
12
  };
13
13
  exports.findTrackForNodePathInfo = findTrackForNodePathInfo;
@@ -12,3 +12,10 @@ export declare const getNodeKeyframes: ({ node, nodePath, propStatuses, keyframe
12
12
  frame: number;
13
13
  value: unknown;
14
14
  }[];
15
+ export declare const getNodeHasKeyframes: ({ node, nodePath, propStatuses, getDragOverrides, getEffectDragOverrides, }: {
16
+ node: TimelineTreeNode;
17
+ nodePath: SequencePropsSubscriptionKey;
18
+ propStatuses: PropStatuses;
19
+ getDragOverrides: GetDragOverrides;
20
+ getEffectDragOverrides: GetEffectDragOverrides;
21
+ }) => boolean;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getNodeKeyframes = void 0;
3
+ exports.getNodeHasKeyframes = exports.getNodeKeyframes = void 0;
4
4
  const remotion_1 = require("remotion");
5
5
  const get_timeline_keyframes_1 = require("./get-timeline-keyframes");
6
6
  const hasOverride = (overrides, key) => Object.prototype.hasOwnProperty.call(overrides, key);
@@ -54,3 +54,28 @@ const getNodeKeyframes = ({ node, nodePath, propStatuses, keyframeDisplayOffset,
54
54
  });
55
55
  };
56
56
  exports.getNodeKeyframes = getNodeKeyframes;
57
+ const getNodeHasKeyframes = ({ node, nodePath, propStatuses, getDragOverrides, getEffectDragOverrides, }) => {
58
+ var _a, _b, _c, _d, _e, _f;
59
+ if (node.kind !== 'field' || node.field === null) {
60
+ return false;
61
+ }
62
+ if (node.field.kind === 'sequence-field') {
63
+ const dragOverrides = getDragOverrides(nodePath);
64
+ if (((_a = dragOverrides[node.field.key]) === null || _a === void 0 ? void 0 : _a.type) === 'keyframed') {
65
+ return true;
66
+ }
67
+ return (((_c = (_b = remotion_1.Internals.getPropStatusesCtx(propStatuses, nodePath)) === null || _b === void 0 ? void 0 : _b[node.field.key]) === null || _c === void 0 ? void 0 : _c.status) === 'keyframed');
68
+ }
69
+ const effectDragOverrides = getEffectDragOverrides(nodePath, node.field.effectIndex);
70
+ if (((_d = effectDragOverrides[node.field.key]) === null || _d === void 0 ? void 0 : _d.type) === 'keyframed') {
71
+ return true;
72
+ }
73
+ const effectStatus = remotion_1.Internals.getEffectPropStatusesCtx({
74
+ propStatuses,
75
+ nodePath,
76
+ effectIndex: node.field.effectIndex,
77
+ });
78
+ return (effectStatus.type === 'can-update-effect' &&
79
+ ((_f = (_e = effectStatus.props) === null || _e === void 0 ? void 0 : _e[node.field.key]) === null || _f === void 0 ? void 0 : _f.status) === 'keyframed');
80
+ };
81
+ exports.getNodeHasKeyframes = getNodeHasKeyframes;
@@ -6,7 +6,7 @@ const parseKeyframeFieldFromNodePath = (auxiliaryKeys) => {
6
6
  if (auxiliaryKeys[0] === 'controls' && auxiliaryKeys.length >= 2) {
7
7
  return {
8
8
  type: 'sequence',
9
- fieldKey: auxiliaryKeys[1],
9
+ fieldKey: auxiliaryKeys.slice(1).join('.'),
10
10
  };
11
11
  }
12
12
  // Effect field: ['effects', effectIndex, fieldKey]
@@ -18,7 +18,7 @@ const parseKeyframeFieldFromNodePath = (auxiliaryKeys) => {
18
18
  return {
19
19
  type: 'effect',
20
20
  effectIndex,
21
- fieldKey: auxiliaryKeys[2],
21
+ fieldKey: auxiliaryKeys.slice(2).join('.'),
22
22
  };
23
23
  }
24
24
  return null;
@@ -1,4 +1,4 @@
1
- import type { OverrideIdToNodePaths, PropStatuses, SequencePropsSubscriptionKey, SequenceSchema, TSequence } from 'remotion';
1
+ import type { OverrideIdToNodePaths, PropStatuses, SequencePropsSubscriptionKey, InteractivitySchema, TSequence } from 'remotion';
2
2
  import type { SetPropStatuses } from './save-sequence-prop';
3
3
  import type { TimelineSelection } from './TimelineSelection';
4
4
  type SequencePropResetTarget = {
@@ -8,7 +8,7 @@ type SequencePropResetTarget = {
8
8
  readonly fieldKey: string;
9
9
  readonly value: unknown;
10
10
  readonly defaultValue: string | null;
11
- readonly schema: SequenceSchema;
11
+ readonly schema: InteractivitySchema;
12
12
  };
13
13
  type EffectPropResetTarget = {
14
14
  readonly type: 'effect-prop';
@@ -18,7 +18,7 @@ type EffectPropResetTarget = {
18
18
  readonly fieldKey: string;
19
19
  readonly value: unknown;
20
20
  readonly defaultValue: string | null;
21
- readonly schema: SequenceSchema;
21
+ readonly schema: InteractivitySchema;
22
22
  };
23
23
  type TimelinePropResetTarget = SequencePropResetTarget | EffectPropResetTarget;
24
24
  export declare const getTimelinePropResetTargets: ({ selections, sequences, overrideIdsToNodePaths, propStatuses, }: {
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.resetSelectedTimelineProps = exports.getTimelinePropResetTargets = void 0;
4
+ const studio_shared_1 = require("@remotion/studio-shared");
4
5
  const remotion_1 = require("remotion");
5
6
  const find_track_for_node_path_info_1 = require("./find-track-for-node-path-info");
6
7
  const save_effect_prop_1 = require("./save-effect-prop");
@@ -23,9 +24,12 @@ const isResettablePropStatus = ({ propStatus, defaultValue, }) => {
23
24
  if (defaultValue === undefined) {
24
25
  return false;
25
26
  }
26
- if (propStatus.status === 'keyframed' || propStatus.status === 'computed') {
27
+ if (propStatus.status === 'keyframed') {
27
28
  return true;
28
29
  }
30
+ if (propStatus.status === 'computed') {
31
+ return false;
32
+ }
29
33
  return isNonDefaultCodeValue({
30
34
  propStatus: propStatus.codeValue,
31
35
  defaultValue,
@@ -34,9 +38,11 @@ const isResettablePropStatus = ({ propStatus, defaultValue, }) => {
34
38
  const getDefaultValue = (fieldSchema) => fieldSchema.default !== undefined
35
39
  ? JSON.stringify(fieldSchema.default)
36
40
  : null;
41
+ const getActiveFieldSchema = ({ schema, key, resolveValue, }) => {
42
+ return remotion_1.Internals.flattenActiveSchema(schema, resolveValue)[key];
43
+ };
37
44
  const getTimelinePropResetTargets = ({ selections, sequences, overrideIdsToNodePaths, propStatuses, }) => {
38
45
  var _a;
39
- var _b;
40
46
  const propSelections = selections.filter(isPropResetSelection);
41
47
  if (propSelections.length === 0) {
42
48
  return null;
@@ -52,7 +58,7 @@ const getTimelinePropResetTargets = ({ selections, sequences, overrideIdsToNodeP
52
58
  overrideIdsToNodePaths,
53
59
  nodePathInfo: selection.nodePathInfo,
54
60
  });
55
- const sequence = (_b = track === null || track === void 0 ? void 0 : track.sequence) !== null && _b !== void 0 ? _b : null;
61
+ const sequence = (_a = track === null || track === void 0 ? void 0 : track.sequence) !== null && _a !== void 0 ? _a : null;
56
62
  if (!sequence) {
57
63
  continue;
58
64
  }
@@ -61,11 +67,23 @@ const getTimelinePropResetTargets = ({ selections, sequences, overrideIdsToNodeP
61
67
  if (!sequence.controls) {
62
68
  continue;
63
69
  }
64
- const sequenceFieldSchema = sequence.controls.schema[selection.key];
65
- const sequencePropStatus = (_a = remotion_1.Internals.getPropStatusesCtx(propStatuses, nodePath)) === null || _a === void 0 ? void 0 : _a[selection.key];
70
+ const sequencePropStatus = remotion_1.Internals.getPropStatusesCtx(propStatuses, nodePath);
71
+ const { merged: sequenceValuesDotNotation } = remotion_1.Internals.computeEffectiveSchemaValuesDotNotation({
72
+ schema: sequence.controls.schema,
73
+ currentValue: sequence.controls.currentRuntimeValueDotNotation,
74
+ overrideValues: {},
75
+ propStatus: sequencePropStatus,
76
+ frame: null,
77
+ });
78
+ const sequenceFieldSchema = getActiveFieldSchema({
79
+ schema: sequence.controls.schema,
80
+ key: selection.key,
81
+ resolveValue: (key) => sequenceValuesDotNotation[key],
82
+ });
83
+ const selectedPropStatus = sequencePropStatus === null || sequencePropStatus === void 0 ? void 0 : sequencePropStatus[selection.key];
66
84
  if (!isVisibleFieldSchema(sequenceFieldSchema) ||
67
85
  !isResettablePropStatus({
68
- propStatus: sequencePropStatus,
86
+ propStatus: selectedPropStatus,
69
87
  defaultValue: sequenceFieldSchema.default,
70
88
  })) {
71
89
  continue;
@@ -82,7 +100,16 @@ const getTimelinePropResetTargets = ({ selections, sequences, overrideIdsToNodeP
82
100
  continue;
83
101
  }
84
102
  const effect = sequence.effects[selection.i];
85
- const fieldSchema = effect === null || effect === void 0 ? void 0 : effect.schema[selection.key];
103
+ const field = effect
104
+ ? (0, studio_shared_1.getEffectFieldsToShow)({
105
+ effect,
106
+ effectIndex: selection.i,
107
+ nodePath,
108
+ propStatuses,
109
+ getEffectDragOverrides: () => ({}),
110
+ }).find((candidate) => candidate.key === selection.key)
111
+ : null;
112
+ const fieldSchema = field === null || field === void 0 ? void 0 : field.fieldSchema;
86
113
  const effectStatus = remotion_1.Internals.getEffectPropStatusesCtx({
87
114
  propStatuses,
88
115
  nodePath,
@@ -1,5 +1,5 @@
1
1
  import { type EffectClipboardParam } from '@remotion/studio-shared';
2
- import type { SequencePropsSubscriptionKey, SequenceSchema } from 'remotion';
2
+ import type { SequencePropsSubscriptionKey, InteractivitySchema } from 'remotion';
3
3
  import type { SetPropStatuses } from './save-sequence-prop';
4
4
  type SaveEffectPropBase = {
5
5
  fileName: string;
@@ -7,7 +7,7 @@ type SaveEffectPropBase = {
7
7
  effectIndex: number;
8
8
  fieldKey: string;
9
9
  defaultValue: string | null;
10
- schema: SequenceSchema;
10
+ schema: InteractivitySchema;
11
11
  setPropStatuses: SetPropStatuses;
12
12
  clientId: string;
13
13
  };
@@ -1,4 +1,4 @@
1
- import type { CanUpdateSequencePropsResponse, SequencePropsSubscriptionKey, SequenceSchema } from 'remotion';
1
+ import type { CanUpdateSequencePropsResponse, SequencePropsSubscriptionKey, InteractivitySchema } from 'remotion';
2
2
  export type SetPropStatuses = (nodePath: SequencePropsSubscriptionKey, values: (prev: CanUpdateSequencePropsResponse) => CanUpdateSequencePropsResponse) => void;
3
3
  export type SaveSequencePropChange = {
4
4
  fileName: string;
@@ -6,7 +6,7 @@ export type SaveSequencePropChange = {
6
6
  fieldKey: string;
7
7
  value: unknown;
8
8
  defaultValue: string | null;
9
- schema: SequenceSchema;
9
+ schema: InteractivitySchema;
10
10
  };
11
11
  type SaveSequencePropsOptions = {
12
12
  changes: SaveSequencePropChange[];
@@ -1,4 +1,4 @@
1
- import type { SequenceNodePath, SequenceSchema } from 'remotion';
1
+ import type { SequenceNodePath, InteractivitySchema } from 'remotion';
2
2
  import { callApi } from '../call-api';
3
3
  type SubscribeResult = Awaited<ReturnType<typeof callApi<'/api/subscribe-to-sequence-props'>>>;
4
4
  type ApplyResult = (result: SubscribeResult) => void;
@@ -6,9 +6,9 @@ export declare const acquireSequencePropsSubscription: ({ fileName, line, column
6
6
  fileName: string;
7
7
  line: number;
8
8
  column: number;
9
- schema: SequenceSchema;
9
+ schema: InteractivitySchema;
10
10
  componentIdentity: string | null;
11
- effects: SequenceSchema[];
11
+ effects: InteractivitySchema[];
12
12
  nodePath: SequenceNodePath | null;
13
13
  clientId: string;
14
14
  applyOnce: ApplyResult;
@@ -0,0 +1,12 @@
1
+ import type { SequenceNodePathInfo } from '../../helpers/get-timeline-sequence-sort-key';
2
+ import type { TimelineTreeNode } from '../../helpers/timeline-layout';
3
+ import type { TimelineSelection } from './TimelineSelection';
4
+ export declare const filterTimelineExpandedTree: ({ nodes, shouldShowNode, }: {
5
+ readonly nodes: readonly TimelineTreeNode[];
6
+ readonly shouldShowNode: (node: TimelineTreeNode) => boolean;
7
+ }) => TimelineTreeNode[];
8
+ export declare const getSelectedTimelineExpandedRowKeys: (selectedItems: readonly TimelineSelection[]) => ReadonlySet<string>;
9
+ export declare const isTimelineExpandedNodeSelected: ({ nodePathInfo, selectedRowKeys, }: {
10
+ readonly nodePathInfo: SequenceNodePathInfo;
11
+ readonly selectedRowKeys: ReadonlySet<string>;
12
+ }) => boolean;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isTimelineExpandedNodeSelected = exports.getSelectedTimelineExpandedRowKeys = exports.filterTimelineExpandedTree = void 0;
4
+ const timeline_node_path_key_1 = require("../../helpers/timeline-node-path-key");
5
+ const filterTimelineExpandedTree = ({ nodes, shouldShowNode, }) => {
6
+ const out = [];
7
+ for (const node of nodes) {
8
+ if (node.kind === 'field') {
9
+ if (shouldShowNode(node)) {
10
+ out.push(node);
11
+ }
12
+ continue;
13
+ }
14
+ const children = (0, exports.filterTimelineExpandedTree)({
15
+ nodes: node.children,
16
+ shouldShowNode,
17
+ });
18
+ if (children.length > 0 || shouldShowNode(node)) {
19
+ out.push({
20
+ ...node,
21
+ children,
22
+ });
23
+ }
24
+ }
25
+ return out;
26
+ };
27
+ exports.filterTimelineExpandedTree = filterTimelineExpandedTree;
28
+ const getSelectedTimelineExpandedRowKeys = (selectedItems) => {
29
+ return new Set(selectedItems.flatMap((item) => {
30
+ if (item.type === 'guide') {
31
+ return [];
32
+ }
33
+ return [(0, timeline_node_path_key_1.timelineNodePathInfoToKey)(item.nodePathInfo)];
34
+ }));
35
+ };
36
+ exports.getSelectedTimelineExpandedRowKeys = getSelectedTimelineExpandedRowKeys;
37
+ const isTimelineExpandedNodeSelected = ({ nodePathInfo, selectedRowKeys, }) => selectedRowKeys.has((0, timeline_node_path_key_1.timelineNodePathInfoToKey)(nodePathInfo));
38
+ exports.isTimelineExpandedNodeSelected = isTimelineExpandedNodeSelected;
@@ -0,0 +1,5 @@
1
+ import type { InteractivitySchemaField } from 'remotion';
2
+ export declare const formatTimelineFieldValueForDisplay: ({ fieldSchema, value, }: {
3
+ readonly fieldSchema: InteractivitySchemaField | undefined;
4
+ readonly value: unknown;
5
+ }) => string;