@remotion/studio 4.0.477 → 4.0.479

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 (191) hide show
  1. package/dist/components/AssetSelector.js +8 -14
  2. package/dist/components/Button.d.ts +1 -0
  3. package/dist/components/Button.js +8 -5
  4. package/dist/components/CanvasIfSizeIsAvailable.js +2 -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/DefaultPropsEditor.d.ts +12 -2
  13. package/dist/components/DefaultPropsEditor.js +2 -2
  14. package/dist/components/EditorGuides/Guide.js +37 -9
  15. package/dist/components/EditorRuler/Ruler.js +4 -14
  16. package/dist/components/EditorRuler/index.js +9 -4
  17. package/dist/components/EffectPickerModal.d.ts +5 -0
  18. package/dist/components/EffectPickerModal.js +179 -0
  19. package/dist/components/InlineAction.js +1 -0
  20. package/dist/components/InspectorInfoHeader.d.ts +11 -0
  21. package/dist/components/InspectorInfoHeader.js +55 -0
  22. package/dist/components/InspectorPanel/DefaultInspector.d.ts +8 -0
  23. package/dist/components/InspectorPanel/DefaultInspector.js +93 -0
  24. package/dist/components/InspectorPanel/EasingInspector.d.ts +5 -0
  25. package/dist/components/InspectorPanel/EasingInspector.js +41 -0
  26. package/dist/components/InspectorPanel/GuideInspector.d.ts +7 -0
  27. package/dist/components/InspectorPanel/GuideInspector.js +55 -0
  28. package/dist/components/InspectorPanel/KeyframeInspector.d.ts +7 -0
  29. package/dist/components/InspectorPanel/KeyframeInspector.js +109 -0
  30. package/dist/components/InspectorPanel/SelectedInspector.d.ts +5 -0
  31. package/dist/components/InspectorPanel/SelectedInspector.js +26 -0
  32. package/dist/components/InspectorPanel/SequenceSelectionInspector.d.ts +5 -0
  33. package/dist/components/InspectorPanel/SequenceSelectionInspector.js +116 -0
  34. package/dist/components/InspectorPanel/common.d.ts +15 -0
  35. package/dist/components/InspectorPanel/common.js +18 -0
  36. package/dist/components/InspectorPanel/inspector-selection.d.ts +10 -0
  37. package/dist/components/InspectorPanel/inspector-selection.js +34 -0
  38. package/dist/components/InspectorPanel/styles.d.ts +27 -0
  39. package/dist/components/InspectorPanel/styles.js +178 -0
  40. package/dist/components/InspectorPanel/use-track-for-selection.d.ts +2 -0
  41. package/dist/components/InspectorPanel/use-track-for-selection.js +22 -0
  42. package/dist/components/InspectorPanel.d.ts +8 -0
  43. package/dist/components/InspectorPanel.js +26 -0
  44. package/dist/components/InspectorPanelLayout.d.ts +1 -0
  45. package/dist/components/InspectorPanelLayout.js +4 -0
  46. package/dist/components/InspectorSequenceSection.d.ts +16 -0
  47. package/dist/components/InspectorSequenceSection.js +147 -0
  48. package/dist/components/InspectorSourceLocation.d.ts +7 -0
  49. package/dist/components/InspectorSourceLocation.js +71 -0
  50. package/dist/components/MenuToolbar.d.ts +1 -0
  51. package/dist/components/MenuToolbar.js +4 -1
  52. package/dist/components/Modals.js +3 -3
  53. package/dist/components/NewComposition/InputDragger.js +1 -1
  54. package/dist/components/NewComposition/RemInput.d.ts +1 -0
  55. package/dist/components/NewComposition/RemInput.js +8 -2
  56. package/dist/components/NewComposition/RemTextarea.d.ts +1 -0
  57. package/dist/components/NewComposition/RemTextarea.js +8 -2
  58. package/dist/components/NewComposition/ValidationMessage.d.ts +3 -0
  59. package/dist/components/NewComposition/ValidationMessage.js +16 -5
  60. package/dist/components/OptionsPanel.d.ts +1 -1
  61. package/dist/components/OptionsPanel.js +8 -17
  62. package/dist/components/QuickSwitcher/QuickSwitcherContent.js +2 -7
  63. package/dist/components/QuickSwitcher/QuickSwitcherResult.js +3 -10
  64. package/dist/components/QuickSwitcher/shared.d.ts +4 -0
  65. package/dist/components/QuickSwitcher/shared.js +24 -0
  66. package/dist/components/RenderModal/DataEditor.d.ts +29 -2
  67. package/dist/components/RenderModal/DataEditor.js +107 -56
  68. package/dist/components/RenderModal/RenderModalJSONPropsEditor.d.ts +1 -0
  69. package/dist/components/RenderModal/RenderModalJSONPropsEditor.js +25 -7
  70. package/dist/components/RenderModal/SchemaEditor/Fieldset.d.ts +2 -1
  71. package/dist/components/RenderModal/SchemaEditor/Fieldset.js +10 -5
  72. package/dist/components/RenderModal/SchemaEditor/SchemaEditor.d.ts +4 -0
  73. package/dist/components/RenderModal/SchemaEditor/SchemaEditor.js +27 -4
  74. package/dist/components/RenderModal/SchemaEditor/SchemaErrorMessages.d.ts +12 -4
  75. package/dist/components/RenderModal/SchemaEditor/SchemaErrorMessages.js +23 -9
  76. package/dist/components/RenderModal/SchemaEditor/SchemaLabel.js +3 -3
  77. package/dist/components/RenderModal/SchemaEditor/SchemaSeparationLine.js +8 -1
  78. package/dist/components/RenderModal/SchemaEditor/ZodColorEditor.js +1 -1
  79. package/dist/components/RenderModal/SchemaEditor/ZodDateEditor.js +1 -1
  80. package/dist/components/RenderModal/SchemaEditor/ZodDiscriminatedUnionEditor.js +1 -1
  81. package/dist/components/RenderModal/SchemaEditor/ZodEnumEditor.js +1 -1
  82. package/dist/components/RenderModal/SchemaEditor/ZodErrorMessages.d.ts +1 -0
  83. package/dist/components/RenderModal/SchemaEditor/ZodErrorMessages.js +23 -6
  84. package/dist/components/RenderModal/SchemaEditor/ZodFieldValidation.js +2 -2
  85. package/dist/components/RenderModal/SchemaEditor/ZodNonEditableValue.js +2 -1
  86. package/dist/components/RenderModal/SchemaEditor/ZodNumberEditor.js +1 -1
  87. package/dist/components/RenderModal/SchemaEditor/ZodObjectEditor.js +9 -11
  88. package/dist/components/RenderModal/SchemaEditor/ZodOrNullishEditor.js +1 -1
  89. package/dist/components/RenderModal/SchemaEditor/ZodStaticFileEditor.js +1 -1
  90. package/dist/components/RenderModal/SchemaEditor/ZodStringEditor.js +1 -1
  91. package/dist/components/RenderModal/SchemaEditor/ZodTextareaEditor.js +1 -1
  92. package/dist/components/RenderModal/WarningIndicatorButton.d.ts +1 -0
  93. package/dist/components/RenderModal/WarningIndicatorButton.js +17 -4
  94. package/dist/components/RenderModal/get-render-modal-warnings.d.ts +2 -1
  95. package/dist/components/RenderModal/get-render-modal-warnings.js +6 -3
  96. package/dist/components/RendersTab.js +1 -1
  97. package/dist/components/SegmentedControl.d.ts +3 -0
  98. package/dist/components/SegmentedControl.js +11 -5
  99. package/dist/components/SelectedOutlineElement.js +135 -31
  100. package/dist/components/SelectedOutlineOverlay.d.ts +1 -1
  101. package/dist/components/SelectedOutlineOverlay.js +45 -29
  102. package/dist/components/SelectedOutlineUvControls.d.ts +9 -0
  103. package/dist/components/SelectedOutlineUvControls.js +64 -10
  104. package/dist/components/Tabs/index.js +4 -4
  105. package/dist/components/Timeline/EasingEditorModal.d.ts +5 -4
  106. package/dist/components/Timeline/EasingEditorModal.js +597 -124
  107. package/dist/components/Timeline/KeyframeSettingsModal.d.ts +2 -2
  108. package/dist/components/Timeline/SubscribeToNodePaths.d.ts +2 -2
  109. package/dist/components/Timeline/TimelineClipboardKeybindings.d.ts +15 -3
  110. package/dist/components/Timeline/TimelineClipboardKeybindings.js +85 -1
  111. package/dist/components/Timeline/TimelineDeleteKeybindings.js +10 -3
  112. package/dist/components/Timeline/TimelineEffectItem.d.ts +2 -2
  113. package/dist/components/Timeline/TimelineEffectPropItem.d.ts +8 -0
  114. package/dist/components/Timeline/TimelineEffectPropItem.js +24 -20
  115. package/dist/components/Timeline/TimelineExpandedRow.d.ts +5 -2
  116. package/dist/components/Timeline/TimelineExpandedRow.js +4 -4
  117. package/dist/components/Timeline/TimelineExpandedSection.d.ts +1 -1
  118. package/dist/components/Timeline/TimelineExpandedSection.js +5 -19
  119. package/dist/components/Timeline/TimelineKeyframeControls.d.ts +8 -2
  120. package/dist/components/Timeline/TimelineKeyframeControls.js +24 -3
  121. package/dist/components/Timeline/TimelineKeyframeEasingLine.js +2 -47
  122. package/dist/components/Timeline/TimelineKeyframedValue.d.ts +1 -1
  123. package/dist/components/Timeline/TimelineKeyframedValue.js +8 -10
  124. package/dist/components/Timeline/TimelineNumberField.js +5 -11
  125. package/dist/components/Timeline/TimelineRotationField.js +5 -6
  126. package/dist/components/Timeline/TimelineScaleField.js +4 -8
  127. package/dist/components/Timeline/TimelineSelection.d.ts +6 -0
  128. package/dist/components/Timeline/TimelineSelection.js +109 -14
  129. package/dist/components/Timeline/TimelineSequence.js +22 -14
  130. package/dist/components/Timeline/TimelineSequenceItem.js +12 -67
  131. package/dist/components/Timeline/TimelineSequencePropItem.d.ts +12 -2
  132. package/dist/components/Timeline/TimelineSequencePropItem.js +56 -52
  133. package/dist/components/Timeline/TimelineTransformOriginField.js +4 -5
  134. package/dist/components/Timeline/TimelineTranslateField.js +4 -5
  135. package/dist/components/Timeline/TimelineUvCoordinateField.js +4 -4
  136. package/dist/components/Timeline/TimelineVideoInfo.d.ts +1 -0
  137. package/dist/components/Timeline/TimelineVideoInfo.js +93 -8
  138. package/dist/components/Timeline/call-add-keyframe.d.ts +4 -4
  139. package/dist/components/Timeline/call-delete-keyframe.d.ts +4 -4
  140. package/dist/components/Timeline/call-move-keyframe.d.ts +2 -2
  141. package/dist/components/Timeline/call-update-keyframe-settings.d.ts +3 -3
  142. package/dist/components/Timeline/delete-selected-timeline-item.d.ts +2 -1
  143. package/dist/components/Timeline/delete-selected-timeline-item.js +27 -1
  144. package/dist/components/Timeline/duplicate-selected-timeline-item.d.ts +7 -0
  145. package/dist/components/Timeline/duplicate-selected-timeline-item.js +32 -3
  146. package/dist/components/Timeline/parse-keyframe-field-from-node-path.js +2 -2
  147. package/dist/components/Timeline/reset-selected-timeline-props.d.ts +3 -3
  148. package/dist/components/Timeline/reset-selected-timeline-props.js +19 -5
  149. package/dist/components/Timeline/save-effect-prop.d.ts +2 -2
  150. package/dist/components/Timeline/save-sequence-prop.d.ts +2 -2
  151. package/dist/components/Timeline/sequence-props-subscription-store.d.ts +3 -3
  152. package/dist/components/Timeline/timeline-field-display-utils.d.ts +5 -0
  153. package/dist/components/Timeline/timeline-field-display-utils.js +244 -0
  154. package/dist/components/Timeline/timeline-video-filmstrip-times.d.ts +17 -0
  155. package/dist/components/Timeline/timeline-video-filmstrip-times.js +22 -0
  156. package/dist/components/Timeline/update-selected-easing.d.ts +47 -4
  157. package/dist/components/Timeline/update-selected-easing.js +40 -9
  158. package/dist/components/Timeline/use-sequence-freeze-frame-menu-item.d.ts +13 -0
  159. package/dist/components/Timeline/use-sequence-freeze-frame-menu-item.js +73 -0
  160. package/dist/components/Timeline/use-sequence-props-subscription.d.ts +3 -3
  161. package/dist/components/Timeline/use-timeline-expanded-tree.d.ts +11 -0
  162. package/dist/components/Timeline/use-timeline-expanded-tree.js +33 -0
  163. package/dist/components/VisualControls/VisualControlsContent.d.ts +1 -1
  164. package/dist/components/VisualControls/VisualControlsContent.js +4 -5
  165. package/dist/components/effect-drag-and-drop.d.ts +10 -0
  166. package/dist/components/effect-drag-and-drop.js +17 -8
  167. package/dist/components/effect-picker-search.d.ts +5 -0
  168. package/dist/components/effect-picker-search.js +77 -0
  169. package/dist/components/import-assets.d.ts +11 -2
  170. package/dist/components/import-assets.js +61 -6
  171. package/dist/components/selected-outline-drag.d.ts +44 -2
  172. package/dist/components/selected-outline-drag.js +74 -1
  173. package/dist/components/selected-outline-types.d.ts +7 -7
  174. package/dist/components/selected-outline-uv.d.ts +4 -3
  175. package/dist/components/selected-outline-uv.js +6 -2
  176. package/dist/error-overlay/remotion-overlay/Overlay.js +3 -0
  177. package/dist/esm/{chunk-t8fjnw2d.js → chunk-fge2mq5p.js} +17004 -13432
  178. package/dist/esm/internals.mjs +17004 -13432
  179. package/dist/esm/previewEntry.mjs +26617 -23041
  180. package/dist/esm/renderEntry.mjs +1 -1
  181. package/dist/helpers/editor-guide-selection.js +1 -1
  182. package/dist/helpers/get-preview-file-type.js +1 -1
  183. package/dist/helpers/render-codec-label.d.ts +2 -0
  184. package/dist/helpers/render-codec-label.js +49 -0
  185. package/dist/helpers/ruler-canvas-size.d.ts +5 -0
  186. package/dist/helpers/ruler-canvas-size.js +17 -0
  187. package/dist/helpers/timeline-layout.d.ts +4 -4
  188. package/dist/helpers/use-media-metadata.d.ts +8 -2
  189. package/dist/helpers/use-media-metadata.js +17 -4
  190. package/dist/state/modals.d.ts +9 -4
  191. package/package.json +12 -12
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KeyframeInspector = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const remotion_1 = require("remotion");
7
+ const timeline_layout_1 = require("../../helpers/timeline-layout");
8
+ const is_menu_item_1 = require("../Menu/is-menu-item");
9
+ const parse_keyframe_field_from_node_path_1 = require("../Timeline/parse-keyframe-field-from-node-path");
10
+ const TimelineEffectPropItem_1 = require("../Timeline/TimelineEffectPropItem");
11
+ const TimelineSequencePropItem_1 = require("../Timeline/TimelineSequencePropItem");
12
+ const common_1 = require("./common");
13
+ const styles_1 = require("./styles");
14
+ const use_track_for_selection_1 = require("./use-track-for-selection");
15
+ const KeyframeInspector = ({ selection }) => {
16
+ const track = (0, use_track_for_selection_1.useTrackForSelection)(selection);
17
+ const { propStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModePropStatusesContext);
18
+ const { getDragOverrides, getEffectDragOverrides } = (0, react_1.useContext)(remotion_1.Internals.VisualModeDragOverridesContext);
19
+ const details = (0, react_1.useMemo)(() => {
20
+ var _a;
21
+ var _b, _c, _d, _e, _f, _g;
22
+ if (!track || !track.sequence.controls) {
23
+ return null;
24
+ }
25
+ const keyframeField = (0, parse_keyframe_field_from_node_path_1.parseKeyframeFieldFromNodePath)(selection.nodePathInfo.auxiliaryKeys);
26
+ if (keyframeField === null) {
27
+ return null;
28
+ }
29
+ const nodePath = selection.nodePathInfo.sequenceSubscriptionKey;
30
+ const { keyframeDisplayOffset } = track;
31
+ const sourceFrame = selection.frame - keyframeDisplayOffset;
32
+ if (keyframeField.type === 'sequence') {
33
+ const sequenceFields = (0, timeline_layout_1.getFieldsToShow)({
34
+ schema: track.sequence.controls.schema,
35
+ currentRuntimeValueDotNotation: track.sequence.controls.currentRuntimeValueDotNotation,
36
+ getDragOverrides,
37
+ propStatuses,
38
+ nodePath,
39
+ });
40
+ const sequenceField = (_b = sequenceFields === null || sequenceFields === void 0 ? void 0 : sequenceFields.find((candidate) => candidate.key === keyframeField.fieldKey)) !== null && _b !== void 0 ? _b : null;
41
+ const sequencePropStatus = (_c = (_a = remotion_1.Internals.getPropStatusesCtx(propStatuses, nodePath)) === null || _a === void 0 ? void 0 : _a[keyframeField.fieldKey]) !== null && _c !== void 0 ? _c : null;
42
+ if (!sequenceField || (sequencePropStatus === null || sequencePropStatus === void 0 ? void 0 : sequencePropStatus.status) !== 'keyframed') {
43
+ return null;
44
+ }
45
+ return {
46
+ type: 'sequence',
47
+ field: sequenceField,
48
+ fieldLabel: (_d = sequenceField.description) !== null && _d !== void 0 ? _d : sequenceField.key,
49
+ fileName: nodePath.absolutePath,
50
+ nodePath,
51
+ propStatus: sequencePropStatus,
52
+ schema: track.sequence.controls.schema,
53
+ sourceFrame,
54
+ };
55
+ }
56
+ const effect = track.sequence.effects[keyframeField.effectIndex];
57
+ if (!effect) {
58
+ return null;
59
+ }
60
+ const effectFields = (0, timeline_layout_1.getEffectFieldsToShow)({
61
+ effect,
62
+ effectIndex: keyframeField.effectIndex,
63
+ nodePath,
64
+ propStatuses,
65
+ getEffectDragOverrides,
66
+ });
67
+ const effectField = (_e = effectFields.find((candidate) => candidate.key === keyframeField.fieldKey)) !== null && _e !== void 0 ? _e : null;
68
+ const effectStatus = remotion_1.Internals.getEffectPropStatusesCtx({
69
+ propStatuses,
70
+ nodePath,
71
+ effectIndex: keyframeField.effectIndex,
72
+ });
73
+ const effectPropStatus = effectStatus.type === 'can-update-effect'
74
+ ? ((_f = effectStatus.props[keyframeField.fieldKey]) !== null && _f !== void 0 ? _f : null)
75
+ : null;
76
+ if (!effectField || (effectPropStatus === null || effectPropStatus === void 0 ? void 0 : effectPropStatus.status) !== 'keyframed') {
77
+ return null;
78
+ }
79
+ return {
80
+ type: 'effect',
81
+ field: effectField,
82
+ fieldLabel: (_g = effectField.description) !== null && _g !== void 0 ? _g : effectField.key,
83
+ nodePath,
84
+ sourceFrame,
85
+ validatedLocation: {
86
+ source: nodePath.absolutePath,
87
+ line: 1,
88
+ column: 0,
89
+ },
90
+ };
91
+ }, [
92
+ getDragOverrides,
93
+ getEffectDragOverrides,
94
+ propStatuses,
95
+ selection,
96
+ track,
97
+ ]);
98
+ if (details === null) {
99
+ return jsx_runtime_1.jsx(common_1.InspectorMessage, { children: "Keyframe unavailable" });
100
+ }
101
+ return (jsx_runtime_1.jsxs("div", { style: styles_1.selectedContainer, className: is_menu_item_1.VERTICAL_SCROLLBAR_CLASSNAME, children: [
102
+ jsx_runtime_1.jsx(common_1.InspectorSectionHeader, { children: "Keyframe" }), jsx_runtime_1.jsxs("div", { style: styles_1.detailsContainer, children: [
103
+ jsx_runtime_1.jsx(common_1.InspectorDetailRow, { label: "Frame", children: selection.frame }), jsx_runtime_1.jsxs("div", { style: styles_1.keyframeEditorRow, children: [
104
+ jsx_runtime_1.jsx("div", { style: styles_1.keyframeEditorLabel, children: details.fieldLabel }), jsx_runtime_1.jsx("div", { style: styles_1.keyframeEditorValue, children: details.type === 'sequence' ? (jsx_runtime_1.jsx(TimelineSequencePropItem_1.TimelineSequenceKeyframedValue, { field: details.field, fileName: details.fileName, nodePath: details.nodePath, schema: details.schema, propStatus: details.propStatus, sourceFrame: details.sourceFrame })) : (jsx_runtime_1.jsx(TimelineEffectPropItem_1.TimelineEffectPropValue, { field: details.field, nodePath: details.nodePath, validatedLocation: details.validatedLocation, sourceFrame: details.sourceFrame })) })
105
+ ] })
106
+ ] })
107
+ ] }));
108
+ };
109
+ exports.KeyframeInspector = KeyframeInspector;
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import type { TimelineSelection } from '../Timeline/TimelineSelection';
3
+ export declare const SelectedInspector: React.FC<{
4
+ readonly selection: TimelineSelection;
5
+ }>;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SelectedInspector = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const common_1 = require("./common");
6
+ const EasingInspector_1 = require("./EasingInspector");
7
+ const GuideInspector_1 = require("./GuideInspector");
8
+ const inspector_selection_1 = require("./inspector-selection");
9
+ const KeyframeInspector_1 = require("./KeyframeInspector");
10
+ const SequenceSelectionInspector_1 = require("./SequenceSelectionInspector");
11
+ const SelectedInspector = ({ selection }) => {
12
+ if ((0, inspector_selection_1.isSequenceSectionSelection)(selection)) {
13
+ return jsx_runtime_1.jsx(SequenceSelectionInspector_1.SequenceSelectionInspector, { selection: selection });
14
+ }
15
+ if (selection.type === 'keyframe') {
16
+ return jsx_runtime_1.jsx(KeyframeInspector_1.KeyframeInspector, { selection: selection });
17
+ }
18
+ if (selection.type === 'easing') {
19
+ return jsx_runtime_1.jsx(EasingInspector_1.EasingInspector, { selection: selection });
20
+ }
21
+ if (selection.type === 'guide') {
22
+ return jsx_runtime_1.jsx(GuideInspector_1.GuideInspector, { selection: selection });
23
+ }
24
+ return jsx_runtime_1.jsx(common_1.InspectorMessage, { children: "Inspector unavailable" });
25
+ };
26
+ exports.SelectedInspector = SelectedInspector;
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import type { SequenceSectionSelection } from './inspector-selection';
3
+ export declare const SequenceSelectionInspector: React.FC<{
4
+ readonly selection: SequenceSectionSelection;
5
+ }>;
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SequenceSelectionInspector = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const remotion_1 = require("remotion");
7
+ const client_id_1 = require("../../helpers/client-id");
8
+ const InspectorSequenceSection_1 = require("../InspectorSequenceSection");
9
+ const InspectorSourceLocation_1 = require("../InspectorSourceLocation");
10
+ const is_menu_item_1 = require("../Menu/is-menu-item");
11
+ const TimelineSelection_1 = require("../Timeline/TimelineSelection");
12
+ const use_open_sequence_in_editor_1 = require("../Timeline/use-open-sequence-in-editor");
13
+ const common_1 = require("./common");
14
+ const styles_1 = require("./styles");
15
+ const use_track_for_selection_1 = require("./use-track-for-selection");
16
+ const useSequenceDisplayName = (track) => {
17
+ var _a;
18
+ var _b;
19
+ const { propStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModePropStatusesContext);
20
+ const nodePath = (_b = (_a = track.nodePathInfo) === null || _a === void 0 ? void 0 : _a.sequenceSubscriptionKey) !== null && _b !== void 0 ? _b : null;
21
+ return (0, react_1.useMemo)(() => {
22
+ const propStatusesForOverride = nodePath
23
+ ? remotion_1.Internals.getPropStatusesCtx(propStatuses, nodePath)
24
+ : undefined;
25
+ const codeNameStatus = propStatusesForOverride === null || propStatusesForOverride === void 0 ? void 0 : propStatusesForOverride.name;
26
+ const displayName = codeNameStatus &&
27
+ codeNameStatus.status === 'static' &&
28
+ typeof codeNameStatus.codeValue === 'string'
29
+ ? codeNameStatus.codeValue
30
+ : track.sequence.displayName;
31
+ return displayName || '<Sequence>';
32
+ }, [nodePath, propStatuses, track.sequence.displayName]);
33
+ };
34
+ const SequenceExpandedInspector = ({ track }) => {
35
+ const { previewServerState } = (0, react_1.useContext)(client_id_1.StudioServerConnectionCtx);
36
+ const { selectedItems, selectItems } = (0, TimelineSelection_1.useTimelineSelection)();
37
+ const { canOpenInEditor, openInEditor, originalLocation } = (0, use_open_sequence_in_editor_1.useOpenSequenceInEditor)(track.sequence);
38
+ const sequenceDisplayName = useSequenceDisplayName(track);
39
+ const { documentationLink } = track.sequence;
40
+ const validatedLocation = (0, react_1.useMemo)(() => {
41
+ var _a;
42
+ if (!originalLocation ||
43
+ !originalLocation.source ||
44
+ !originalLocation.line) {
45
+ return null;
46
+ }
47
+ return {
48
+ source: originalLocation.source,
49
+ line: originalLocation.line,
50
+ column: (_a = originalLocation.column) !== null && _a !== void 0 ? _a : 0,
51
+ };
52
+ }, [originalLocation]);
53
+ const openFileLocation = (0, react_1.useCallback)(() => {
54
+ if (!canOpenInEditor) {
55
+ return;
56
+ }
57
+ openInEditor();
58
+ }, [canOpenInEditor, openInEditor]);
59
+ const openDocumentationLink = (0, react_1.useCallback)(() => {
60
+ if (!documentationLink) {
61
+ return;
62
+ }
63
+ window.open(documentationLink, '_blank', 'noopener,noreferrer');
64
+ }, [documentationLink]);
65
+ const titleStyle = (0, react_1.useMemo)(() => {
66
+ return {
67
+ ...styles_1.sequenceHeaderTitle,
68
+ cursor: documentationLink ? 'pointer' : 'default',
69
+ };
70
+ }, [documentationLink]);
71
+ const sequenceSelection = (0, react_1.useMemo)(() => {
72
+ if (!track.nodePathInfo) {
73
+ return null;
74
+ }
75
+ return {
76
+ type: 'sequence',
77
+ nodePathInfo: track.nodePathInfo,
78
+ };
79
+ }, [track.nodePathInfo]);
80
+ const sequenceSelected = (0, react_1.useMemo)(() => {
81
+ if (sequenceSelection === null || selectedItems.length !== 1) {
82
+ return false;
83
+ }
84
+ return ((0, TimelineSelection_1.getTimelineSelectionKey)(selectedItems[0]) ===
85
+ (0, TimelineSelection_1.getTimelineSelectionKey)(sequenceSelection));
86
+ }, [selectedItems, sequenceSelection]);
87
+ const selectSequenceOnInspectorPointerDown = (0, react_1.useCallback)((event) => {
88
+ if (event.button !== 0 || sequenceSelection === null) {
89
+ return;
90
+ }
91
+ event.stopPropagation();
92
+ if (sequenceSelected) {
93
+ return;
94
+ }
95
+ selectItems([sequenceSelection]);
96
+ }, [selectItems, sequenceSelected, sequenceSelection]);
97
+ if (previewServerState.type !== 'connected') {
98
+ return jsx_runtime_1.jsx(common_1.InspectorMessage, { children: "Studio server disconnected" });
99
+ }
100
+ if (!track.nodePathInfo ||
101
+ !(0, InspectorSequenceSection_1.hasSequenceControls)(track.sequence) ||
102
+ !validatedLocation) {
103
+ return jsx_runtime_1.jsx(common_1.InspectorMessage, { children: "Sequence inspector unavailable" });
104
+ }
105
+ return (jsx_runtime_1.jsxs("div", { style: styles_1.selectedContainer, className: is_menu_item_1.VERTICAL_SCROLLBAR_CLASSNAME, onPointerDown: selectSequenceOnInspectorPointerDown, children: [
106
+ jsx_runtime_1.jsxs("div", { style: styles_1.sequenceHeader, children: [documentationLink ? (jsx_runtime_1.jsx("button", { type: "button", style: titleStyle, title: "Open component docs", onClick: openDocumentationLink, children: sequenceDisplayName })) : (jsx_runtime_1.jsx("div", { style: titleStyle, children: sequenceDisplayName })), jsx_runtime_1.jsx(InspectorSourceLocation_1.InspectorSourceLocation, { location: validatedLocation, canOpen: canOpenInEditor, onOpen: openFileLocation })
107
+ ] }), jsx_runtime_1.jsx(InspectorSequenceSection_1.InspectorSequenceSection, { sequence: track.sequence, validatedLocation: validatedLocation, nodePathInfo: track.nodePathInfo, keyframeDisplayOffset: track.keyframeDisplayOffset, renderSectionHeader: (children) => (jsx_runtime_1.jsx(common_1.InspectorSectionHeader, { children: children })) })] }));
108
+ };
109
+ const SequenceSelectionInspector = ({ selection }) => {
110
+ const track = (0, use_track_for_selection_1.useTrackForSelection)(selection);
111
+ if (!track) {
112
+ return jsx_runtime_1.jsx(common_1.InspectorMessage, { children: "Sequence inspector unavailable" });
113
+ }
114
+ return jsx_runtime_1.jsx(SequenceExpandedInspector, { track: track });
115
+ };
116
+ exports.SequenceSelectionInspector = SequenceSelectionInspector;
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import type { RenderModalWarning } from '../RenderModal/DataEditor';
3
+ export declare const InspectorSectionHeader: React.FC<{
4
+ readonly children: React.ReactNode;
5
+ }>;
6
+ export declare const InspectorMessage: React.FC<{
7
+ readonly children: React.ReactNode;
8
+ }>;
9
+ export declare const InspectorDetailRow: React.FC<{
10
+ readonly label: string;
11
+ readonly children: React.ReactNode;
12
+ }>;
13
+ export declare const InspectorDefaultPropsWarnings: React.FC<{
14
+ readonly warnings: RenderModalWarning[];
15
+ }>;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InspectorDefaultPropsWarnings = exports.InspectorDetailRow = exports.InspectorMessage = exports.InspectorSectionHeader = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const ValidationMessage_1 = require("../NewComposition/ValidationMessage");
6
+ const styles_1 = require("./styles");
7
+ const InspectorSectionHeader = ({ children }) => jsx_runtime_1.jsx("div", { style: styles_1.sectionHeader, children: children });
8
+ exports.InspectorSectionHeader = InspectorSectionHeader;
9
+ const InspectorMessage = ({ children }) => jsx_runtime_1.jsx("div", { style: styles_1.centeredMessage, children: children });
10
+ exports.InspectorMessage = InspectorMessage;
11
+ const InspectorDetailRow = ({ label, children }) => (jsx_runtime_1.jsxs("div", { style: styles_1.detailRow, children: [
12
+ jsx_runtime_1.jsx("div", { style: styles_1.detailLabel, children: label }), jsx_runtime_1.jsx("div", { style: styles_1.detailValue, children: children })
13
+ ] }));
14
+ exports.InspectorDetailRow = InspectorDetailRow;
15
+ const InspectorDefaultPropsWarnings = ({ warnings }) => {
16
+ return (jsx_runtime_1.jsx("div", { style: styles_1.defaultPropsWarningMessages, children: warnings.map((warning) => (jsx_runtime_1.jsx(ValidationMessage_1.ValidationMessage, { message: warning.message, align: "flex-start", type: "warning", size: "compact", action: warning.resolveLink ? (jsx_runtime_1.jsx("a", { href: warning.resolveLink, target: "_blank", rel: "noopener noreferrer", style: styles_1.resolveLinkStyle, children: "Resolve" })) : null }, warning.id))) }));
17
+ };
18
+ exports.InspectorDefaultPropsWarnings = InspectorDefaultPropsWarnings;
@@ -0,0 +1,10 @@
1
+ import { type TimelineSelection } from '../Timeline/TimelineSelection';
2
+ export type SequenceSectionSelection = Extract<TimelineSelection, {
3
+ type: 'sequence' | 'sequence-prop' | 'sequence-all-effects' | 'sequence-effect' | 'sequence-effect-prop';
4
+ }>;
5
+ export declare const isSequenceSectionSelection: (selection: TimelineSelection) => selection is SequenceSectionSelection;
6
+ type SequencePropSelection = Extract<TimelineSelection, {
7
+ type: 'sequence-prop' | 'sequence-effect-prop';
8
+ }>;
9
+ export declare const getSameSequencePropInspectorSelection: (selections: readonly TimelineSelection[]) => SequencePropSelection | null;
10
+ export {};
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSameSequencePropInspectorSelection = exports.isSequenceSectionSelection = void 0;
4
+ const TimelineSelection_1 = require("../Timeline/TimelineSelection");
5
+ const isSequenceSectionSelection = (selection) => {
6
+ return (selection.type === 'sequence' ||
7
+ selection.type === 'sequence-prop' ||
8
+ selection.type === 'sequence-all-effects' ||
9
+ selection.type === 'sequence-effect' ||
10
+ selection.type === 'sequence-effect-prop');
11
+ };
12
+ exports.isSequenceSectionSelection = isSequenceSectionSelection;
13
+ const isSequencePropSelection = (selection) => {
14
+ return (selection.type === 'sequence-prop' ||
15
+ selection.type === 'sequence-effect-prop');
16
+ };
17
+ const getSameSequencePropInspectorSelection = (selections) => {
18
+ const firstSelection = selections[0];
19
+ if (!firstSelection || !isSequencePropSelection(firstSelection)) {
20
+ return null;
21
+ }
22
+ const rootSequenceKey = (0, TimelineSelection_1.getTimelineSequenceSelectionKey)(firstSelection.nodePathInfo);
23
+ for (const selection of selections) {
24
+ if (!isSequencePropSelection(selection)) {
25
+ return null;
26
+ }
27
+ if ((0, TimelineSelection_1.getTimelineSequenceSelectionKey)(selection.nodePathInfo) !==
28
+ rootSequenceKey) {
29
+ return null;
30
+ }
31
+ }
32
+ return firstSelection;
33
+ };
34
+ exports.getSameSequencePropInspectorSelection = getSameSequencePropInspectorSelection;
@@ -0,0 +1,27 @@
1
+ import type React from 'react';
2
+ export declare const container: React.CSSProperties;
3
+ export declare const scrollableContainer: React.CSSProperties;
4
+ export declare const defaultPropsSection: React.CSSProperties;
5
+ export declare const visualControlsSection: React.CSSProperties;
6
+ export declare const compositionSection: React.CSSProperties;
7
+ export declare const inspectorSectionDivider: React.CSSProperties;
8
+ export declare const sectionHeader: React.CSSProperties;
9
+ export declare const sequenceHeader: React.CSSProperties;
10
+ export declare const sequenceHeaderTitle: React.CSSProperties;
11
+ export declare const sectionHeaderRow: React.CSSProperties;
12
+ export declare const sectionHeaderTitle: React.CSSProperties;
13
+ export declare const sectionHeaderStart: React.CSSProperties;
14
+ export declare const sectionHeaderEnd: React.CSSProperties;
15
+ export declare const defaultPropsWarningContainer: React.CSSProperties;
16
+ export declare const defaultPropsWarningMessages: React.CSSProperties;
17
+ export declare const resolveLinkStyle: React.CSSProperties;
18
+ export declare const selectedContainer: React.CSSProperties;
19
+ export declare const centeredMessage: React.CSSProperties;
20
+ export declare const detailsContainer: React.CSSProperties;
21
+ export declare const guideDetailsContainer: React.CSSProperties;
22
+ export declare const detailRow: React.CSSProperties;
23
+ export declare const detailLabel: React.CSSProperties;
24
+ export declare const detailValue: React.CSSProperties;
25
+ export declare const keyframeEditorRow: React.CSSProperties;
26
+ export declare const keyframeEditorLabel: React.CSSProperties;
27
+ export declare const keyframeEditorValue: React.CSSProperties;
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.keyframeEditorValue = exports.keyframeEditorLabel = exports.keyframeEditorRow = exports.detailValue = exports.detailLabel = exports.detailRow = exports.guideDetailsContainer = exports.detailsContainer = exports.centeredMessage = exports.selectedContainer = exports.resolveLinkStyle = exports.defaultPropsWarningMessages = exports.defaultPropsWarningContainer = exports.sectionHeaderEnd = exports.sectionHeaderStart = exports.sectionHeaderTitle = exports.sectionHeaderRow = exports.sequenceHeaderTitle = exports.sequenceHeader = exports.sectionHeader = exports.inspectorSectionDivider = exports.compositionSection = exports.visualControlsSection = exports.defaultPropsSection = exports.scrollableContainer = exports.container = void 0;
4
+ const colors_1 = require("../../helpers/colors");
5
+ const InspectorPanelLayout_1 = require("../InspectorPanelLayout");
6
+ exports.container = {
7
+ backgroundColor: colors_1.BACKGROUND,
8
+ color: 'white',
9
+ display: 'flex',
10
+ flex: 1,
11
+ flexDirection: 'column',
12
+ height: '100%',
13
+ minHeight: 0,
14
+ };
15
+ exports.scrollableContainer = {
16
+ ...exports.container,
17
+ overflowY: 'auto',
18
+ };
19
+ exports.defaultPropsSection = {
20
+ display: 'flex',
21
+ flexDirection: 'column',
22
+ };
23
+ exports.visualControlsSection = {
24
+ display: 'flex',
25
+ flexDirection: 'column',
26
+ };
27
+ exports.compositionSection = {
28
+ display: 'flex',
29
+ flexDirection: 'column',
30
+ };
31
+ exports.inspectorSectionDivider = {
32
+ borderBottom: `1px solid ${colors_1.LINE_COLOR}`,
33
+ };
34
+ exports.sectionHeader = {
35
+ color: colors_1.LIGHT_TEXT,
36
+ fontSize: 12,
37
+ fontWeight: 'bold',
38
+ padding: `8px ${InspectorPanelLayout_1.INSPECTOR_PANEL_HORIZONTAL_PADDING}px`,
39
+ };
40
+ exports.sequenceHeader = {
41
+ backgroundColor: colors_1.BACKGROUND,
42
+ display: 'flex',
43
+ flexDirection: 'column',
44
+ minWidth: 0,
45
+ padding: `6px ${InspectorPanelLayout_1.INSPECTOR_PANEL_HORIZONTAL_PADDING}px 4px`,
46
+ };
47
+ exports.sequenceHeaderTitle = {
48
+ alignSelf: 'flex-start',
49
+ backgroundColor: colors_1.BACKGROUND,
50
+ border: 'none',
51
+ color: 'white',
52
+ display: 'inline-flex',
53
+ fontFamily: 'sans-serif',
54
+ fontSize: 12,
55
+ lineHeight: '18px',
56
+ margin: 0,
57
+ maxWidth: '100%',
58
+ minWidth: 0,
59
+ overflow: 'hidden',
60
+ padding: 0,
61
+ textAlign: 'left',
62
+ textOverflow: 'ellipsis',
63
+ whiteSpace: 'nowrap',
64
+ };
65
+ exports.sectionHeaderRow = {
66
+ alignItems: 'center',
67
+ display: 'flex',
68
+ gap: 8,
69
+ justifyContent: 'space-between',
70
+ minWidth: 0,
71
+ };
72
+ exports.sectionHeaderTitle = {
73
+ color: colors_1.LIGHT_TEXT,
74
+ flexShrink: 0,
75
+ fontSize: 12,
76
+ fontWeight: 'bold',
77
+ lineHeight: '16px',
78
+ minWidth: 0,
79
+ overflow: 'hidden',
80
+ textOverflow: 'ellipsis',
81
+ whiteSpace: 'nowrap',
82
+ };
83
+ exports.sectionHeaderStart = {
84
+ alignItems: 'center',
85
+ display: 'flex',
86
+ gap: 8,
87
+ minWidth: 0,
88
+ };
89
+ exports.sectionHeaderEnd = {
90
+ alignItems: 'center',
91
+ display: 'flex',
92
+ flexShrink: 0,
93
+ };
94
+ exports.defaultPropsWarningContainer = {
95
+ alignItems: 'flex-start',
96
+ display: 'flex',
97
+ flexDirection: 'column',
98
+ gap: 8,
99
+ padding: `0 ${InspectorPanelLayout_1.INSPECTOR_PANEL_HORIZONTAL_PADDING}px 8px`,
100
+ };
101
+ exports.defaultPropsWarningMessages = {
102
+ display: 'flex',
103
+ flexDirection: 'column',
104
+ gap: 8,
105
+ };
106
+ exports.resolveLinkStyle = {
107
+ color: colors_1.BLUE,
108
+ fontFamily: 'sans-serif',
109
+ fontSize: 12,
110
+ textDecoration: 'underline',
111
+ whiteSpace: 'nowrap',
112
+ };
113
+ exports.selectedContainer = {
114
+ backgroundColor: colors_1.BACKGROUND,
115
+ flex: 1,
116
+ minHeight: 0,
117
+ overflowY: 'auto',
118
+ };
119
+ exports.centeredMessage = {
120
+ alignItems: 'center',
121
+ color: colors_1.LIGHT_TEXT,
122
+ display: 'flex',
123
+ flex: 1,
124
+ fontSize: 14,
125
+ justifyContent: 'center',
126
+ padding: 24,
127
+ textAlign: 'center',
128
+ };
129
+ exports.detailsContainer = {
130
+ padding: `0 ${InspectorPanelLayout_1.INSPECTOR_PANEL_HORIZONTAL_PADDING}px ${InspectorPanelLayout_1.INSPECTOR_PANEL_HORIZONTAL_PADDING}px`,
131
+ };
132
+ exports.guideDetailsContainer = {
133
+ padding: `0 ${InspectorPanelLayout_1.INSPECTOR_PANEL_HORIZONTAL_PADDING}px ${InspectorPanelLayout_1.INSPECTOR_PANEL_HORIZONTAL_PADDING}px`,
134
+ };
135
+ exports.detailRow = {
136
+ alignItems: 'center',
137
+ display: 'flex',
138
+ gap: 12,
139
+ justifyContent: 'space-between',
140
+ padding: '10px 0',
141
+ };
142
+ exports.detailLabel = {
143
+ color: colors_1.LIGHT_TEXT,
144
+ fontSize: 13,
145
+ };
146
+ exports.detailValue = {
147
+ color: 'white',
148
+ fontSize: 13,
149
+ fontVariantNumeric: 'tabular-nums',
150
+ minWidth: 0,
151
+ textAlign: 'right',
152
+ wordBreak: 'break-word',
153
+ };
154
+ exports.keyframeEditorRow = {
155
+ alignItems: 'flex-start',
156
+ display: 'flex',
157
+ gap: 12,
158
+ justifyContent: 'space-between',
159
+ minWidth: 0,
160
+ padding: '10px 0',
161
+ };
162
+ exports.keyframeEditorLabel = {
163
+ color: colors_1.LIGHT_TEXT,
164
+ fontSize: 13,
165
+ lineHeight: '22px',
166
+ minWidth: 0,
167
+ overflow: 'hidden',
168
+ textOverflow: 'ellipsis',
169
+ whiteSpace: 'nowrap',
170
+ };
171
+ exports.keyframeEditorValue = {
172
+ alignItems: 'center',
173
+ display: 'flex',
174
+ flexShrink: 0,
175
+ justifyContent: 'flex-end',
176
+ minHeight: 22,
177
+ minWidth: 0,
178
+ };
@@ -0,0 +1,2 @@
1
+ import type { TimelineSelection } from '../Timeline/TimelineSelection';
2
+ export declare const useTrackForSelection: (selection: TimelineSelection) => import("../../helpers/get-timeline-sequence-sort-key").TrackWithHash | null;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useTrackForSelection = void 0;
4
+ const react_1 = require("react");
5
+ const remotion_1 = require("remotion");
6
+ const find_track_for_node_path_info_1 = require("../Timeline/find-track-for-node-path-info");
7
+ const useTrackForSelection = (selection) => {
8
+ const { sequences } = (0, react_1.useContext)(remotion_1.Internals.SequenceManager);
9
+ const { overrideIdToNodePathMappings } = (0, react_1.useContext)(remotion_1.Internals.OverrideIdsToNodePathsGettersContext);
10
+ return (0, react_1.useMemo)(() => {
11
+ var _a;
12
+ if (selection.type === 'guide') {
13
+ return null;
14
+ }
15
+ return ((_a = (0, find_track_for_node_path_info_1.findTrackForNodePathInfo)({
16
+ sequences,
17
+ overrideIdsToNodePaths: overrideIdToNodePathMappings,
18
+ nodePathInfo: selection.nodePathInfo,
19
+ })) !== null && _a !== void 0 ? _a : null);
20
+ }, [overrideIdToNodePathMappings, selection, sequences]);
21
+ };
22
+ exports.useTrackForSelection = useTrackForSelection;
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import type { _InternalTypes } from 'remotion';
3
+ import type { UpdaterFunction } from './RenderModal/SchemaEditor/ZodSwitch';
4
+ export declare const InspectorPanel: React.FC<{
5
+ readonly composition: _InternalTypes['AnyComposition'] | null;
6
+ readonly currentDefaultProps: Record<string, unknown>;
7
+ readonly setDefaultProps: UpdaterFunction<Record<string, unknown>>;
8
+ }>;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InspectorPanel = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const common_1 = require("./InspectorPanel/common");
7
+ const DefaultInspector_1 = require("./InspectorPanel/DefaultInspector");
8
+ const inspector_selection_1 = require("./InspectorPanel/inspector-selection");
9
+ const SelectedInspector_1 = require("./InspectorPanel/SelectedInspector");
10
+ const styles_1 = require("./InspectorPanel/styles");
11
+ const TimelineSelection_1 = require("./Timeline/TimelineSelection");
12
+ const InspectorPanel = ({ composition, currentDefaultProps, setDefaultProps }) => {
13
+ const { selectedItems } = (0, TimelineSelection_1.useTimelineSelection)();
14
+ const sameSequencePropInspectorSelection = (0, react_1.useMemo)(() => (0, inspector_selection_1.getSameSequencePropInspectorSelection)(selectedItems), [selectedItems]);
15
+ if (selectedItems.length === 0) {
16
+ return (jsx_runtime_1.jsx(DefaultInspector_1.DefaultInspector, { composition: composition, currentDefaultProps: currentDefaultProps, setDefaultProps: setDefaultProps }));
17
+ }
18
+ if (selectedItems.length > 1) {
19
+ if (sameSequencePropInspectorSelection) {
20
+ return (jsx_runtime_1.jsx("div", { style: styles_1.container, children: jsx_runtime_1.jsx(SelectedInspector_1.SelectedInspector, { selection: sameSequencePropInspectorSelection }) }));
21
+ }
22
+ return (jsx_runtime_1.jsx("div", { style: styles_1.container, children: jsx_runtime_1.jsxs(common_1.InspectorMessage, { children: [selectedItems.length, " items selected"] }) }));
23
+ }
24
+ return (jsx_runtime_1.jsx("div", { style: styles_1.container, children: jsx_runtime_1.jsx(SelectedInspector_1.SelectedInspector, { selection: selectedItems[0] }) }));
25
+ };
26
+ exports.InspectorPanel = InspectorPanel;
@@ -0,0 +1 @@
1
+ export declare const INSPECTOR_PANEL_HORIZONTAL_PADDING = 12;
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.INSPECTOR_PANEL_HORIZONTAL_PADDING = void 0;
4
+ exports.INSPECTOR_PANEL_HORIZONTAL_PADDING = 12;
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ import type { TSequence } from 'remotion';
3
+ import type { CodePosition } from '../error-overlay/react-overlay/utils/get-source-map';
4
+ import type { SequenceNodePathInfo } from '../helpers/get-timeline-sequence-sort-key';
5
+ type SequenceWithControls = TSequence & {
6
+ readonly controls: NonNullable<TSequence['controls']>;
7
+ };
8
+ export declare const hasSequenceControls: (sequence: TSequence) => sequence is SequenceWithControls;
9
+ export declare const InspectorSequenceSection: React.FC<{
10
+ readonly sequence: SequenceWithControls;
11
+ readonly validatedLocation: CodePosition;
12
+ readonly nodePathInfo: SequenceNodePathInfo;
13
+ readonly keyframeDisplayOffset: number;
14
+ readonly renderSectionHeader: (children: React.ReactNode) => React.ReactNode;
15
+ }>;
16
+ export {};