@remotion/studio 4.0.499 → 4.0.500

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 (132) hide show
  1. package/dist/components/AssetSelector.js +8 -6
  2. package/dist/components/AssetSelectorItem.d.ts +24 -0
  3. package/dist/components/AssetSelectorItem.js +113 -80
  4. package/dist/components/CompositionSelector.js +2 -32
  5. package/dist/components/ControlButton.js +1 -0
  6. package/dist/components/ExplorerPanel.js +2 -1
  7. package/dist/components/ExplorerPanelRef.d.ts +2 -0
  8. package/dist/components/GlobalKeybindings.js +7 -1
  9. package/dist/components/InlineAction.d.ts +2 -1
  10. package/dist/components/InlineAction.js +2 -2
  11. package/dist/components/InlineDropdown.d.ts +1 -1
  12. package/dist/components/InlineDropdown.js +3 -2
  13. package/dist/components/InspectorPanel/AlignmentControls.d.ts +2 -2
  14. package/dist/components/InspectorPanel/AlignmentControls.js +5 -2
  15. package/dist/components/InspectorPanel/CompositionInspector.js +8 -7
  16. package/dist/components/InspectorPanel/CompositionMetadata.js +170 -57
  17. package/dist/components/InspectorPanel/ConnectedCompositionsSection.d.ts +2 -2
  18. package/dist/components/InspectorPanel/SequenceInspectorHeader.d.ts +3 -3
  19. package/dist/components/InspectorPanel/SequenceSelectionInspector.js +7 -7
  20. package/dist/components/InspectorPanel/common.d.ts +17 -4
  21. package/dist/components/InspectorPanel/common.js +60 -6
  22. package/dist/components/InspectorPanel/use-composition-actions.js +1 -0
  23. package/dist/components/InspectorPanel/use-track-for-selection.d.ts +1 -1
  24. package/dist/components/InspectorSequenceSection.js +43 -19
  25. package/dist/components/KeyboardShortcutsExplainer.js +4 -2
  26. package/dist/components/Menu/MenuItem.js +2 -1
  27. package/dist/components/MenuCompositionName.js +30 -7
  28. package/dist/components/MenuToolbar.d.ts +0 -1
  29. package/dist/components/MenuToolbar.js +8 -7
  30. package/dist/components/MobilePanel.d.ts +2 -1
  31. package/dist/components/MobilePanel.js +29 -25
  32. package/dist/components/ModalContainer.d.ts +1 -0
  33. package/dist/components/ModalContainer.js +2 -2
  34. package/dist/components/Modals.js +1 -1
  35. package/dist/components/NewComposition/DismissableModal.d.ts +1 -0
  36. package/dist/components/NewComposition/DismissableModal.js +2 -2
  37. package/dist/components/NewComposition/InputDragger.d.ts +7 -0
  38. package/dist/components/NewComposition/InputDragger.js +119 -8
  39. package/dist/components/OutlineToggle.d.ts +1 -3
  40. package/dist/components/OutlineToggle.js +2 -2
  41. package/dist/components/PreviewToolbar.js +10 -4
  42. package/dist/components/QuickSwitcher/ExplorerQuickSwitcherTrigger.d.ts +7 -0
  43. package/dist/components/QuickSwitcher/ExplorerQuickSwitcherTrigger.js +44 -0
  44. package/dist/components/QuickSwitcher/NoResults.d.ts +1 -1
  45. package/dist/components/QuickSwitcher/NoResults.js +1 -0
  46. package/dist/components/QuickSwitcher/QuickSwitcher.d.ts +5 -0
  47. package/dist/components/QuickSwitcher/QuickSwitcher.js +6 -2
  48. package/dist/components/QuickSwitcher/QuickSwitcherContent.d.ts +5 -0
  49. package/dist/components/QuickSwitcher/QuickSwitcherContent.js +76 -12
  50. package/dist/components/QuickSwitcher/QuickSwitcherResult.d.ts +4 -0
  51. package/dist/components/QuickSwitcher/QuickSwitcherResult.js +11 -8
  52. package/dist/components/QuickSwitcher/asset-search.d.ts +9 -0
  53. package/dist/components/QuickSwitcher/asset-search.js +42 -0
  54. package/dist/components/SelectedOutlineCropControls.d.ts +8 -0
  55. package/dist/components/SelectedOutlineCropControls.js +299 -0
  56. package/dist/components/SelectedOutlineElement.js +83 -43
  57. package/dist/components/SelectedOutlineOverlay.d.ts +2 -2
  58. package/dist/components/SelectedOutlineOverlay.js +130 -8
  59. package/dist/components/SequencePropsSubscriptionProvider.d.ts +2 -0
  60. package/dist/components/SequencePropsSubscriptionProvider.js +31 -3
  61. package/dist/components/SidebarCollapserControls.d.ts +3 -1
  62. package/dist/components/SidebarCollapserControls.js +34 -29
  63. package/dist/components/SnappingToggle.d.ts +1 -3
  64. package/dist/components/SnappingToggle.js +2 -2
  65. package/dist/components/Timeline/TimelineAssetField.d.ts +9 -1
  66. package/dist/components/Timeline/TimelineAssetField.js +52 -100
  67. package/dist/components/Timeline/TimelineClipboardKeybindings.d.ts +7 -3
  68. package/dist/components/Timeline/TimelineClipboardKeybindings.js +65 -38
  69. package/dist/components/Timeline/TimelineColorField.js +20 -1
  70. package/dist/components/Timeline/TimelineEffectPropItem.js +8 -77
  71. package/dist/components/Timeline/TimelineExpandedKeyframeRow.js +1 -0
  72. package/dist/components/Timeline/TimelineHeightContainer.d.ts +2 -2
  73. package/dist/components/Timeline/TimelineKeyframeTracksContext.d.ts +3 -3
  74. package/dist/components/Timeline/TimelineList.d.ts +2 -2
  75. package/dist/components/Timeline/TimelinePrimitiveFieldValue.js +7 -1
  76. package/dist/components/Timeline/TimelineSelection.d.ts +5 -5
  77. package/dist/components/Timeline/TimelineSelection.js +8 -6
  78. package/dist/components/Timeline/TimelineSequence.js +1 -5
  79. package/dist/components/Timeline/TimelineSequenceItem.js +57 -10
  80. package/dist/components/Timeline/TimelineSequencePropItem.js +27 -75
  81. package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +0 -1
  82. package/dist/components/Timeline/TimelineTrack.d.ts +2 -2
  83. package/dist/components/Timeline/TimelineTracks.d.ts +2 -2
  84. package/dist/components/Timeline/find-track-for-node-path-info.d.ts +1 -1
  85. package/dist/components/Timeline/get-sequence-context-menu-items.js +14 -12
  86. package/dist/components/Timeline/reset-selected-timeline-props.js +18 -10
  87. package/dist/components/Timeline/save-effect-prop.d.ts +10 -0
  88. package/dist/components/Timeline/save-effect-prop.js +52 -1
  89. package/dist/components/Timeline/should-show-track-in-timeline.d.ts +2 -2
  90. package/dist/components/Timeline/timeline-asset-link.js +17 -1
  91. package/dist/components/Timeline/use-sequence-freeze-frame-menu-item.d.ts +4 -0
  92. package/dist/components/Timeline/use-sequence-freeze-frame-menu-item.js +9 -3
  93. package/dist/components/Timeline/use-timeline-height.d.ts +2 -2
  94. package/dist/components/TopPanel.js +2 -2
  95. package/dist/components/UndoRedoButtons.js +27 -5
  96. package/dist/components/composition-drop-preview.js +1 -0
  97. package/dist/components/menu-toolbar-height.d.ts +1 -0
  98. package/dist/components/menu-toolbar-height.js +4 -0
  99. package/dist/components/selected-outline-drag.d.ts +41 -4
  100. package/dist/components/selected-outline-drag.js +179 -2
  101. package/dist/components/selected-outline-geometry.d.ts +1 -0
  102. package/dist/components/selected-outline-measurement.d.ts +11 -0
  103. package/dist/components/selected-outline-measurement.js +64 -3
  104. package/dist/components/selected-outline-types.d.ts +44 -1
  105. package/dist/components/selected-outline-types.js +21 -1
  106. package/dist/error-overlay/remotion-overlay/Overlay.js +3 -3
  107. package/dist/error-overlay/remotion-overlay/ShortcutHint.js +2 -3
  108. package/dist/esm/{chunk-pk1zwsn1.js → chunk-dr1y1vm3.js} +8417 -7127
  109. package/dist/esm/internals.mjs +8417 -7127
  110. package/dist/esm/previewEntry.mjs +51241 -49953
  111. package/dist/esm/renderEntry.mjs +1 -1
  112. package/dist/helpers/calculate-timeline.d.ts +2 -2
  113. package/dist/helpers/calculate-timeline.js +8 -28
  114. package/dist/helpers/get-timeline-sequence-sort-key.d.ts +3 -10
  115. package/dist/helpers/get-timeline-sequence-sort-key.js +5 -13
  116. package/dist/helpers/interactivity-enabled.d.ts +1 -0
  117. package/dist/helpers/interactivity-enabled.js +7 -2
  118. package/dist/helpers/is-mac.d.ts +1 -0
  119. package/dist/helpers/is-mac.js +4 -0
  120. package/dist/helpers/open-in-editor.d.ts +5 -1
  121. package/dist/helpers/open-in-editor.js +15 -1
  122. package/dist/helpers/sort-by-nonce-history.js +97 -19
  123. package/dist/helpers/use-keybinding.js +2 -3
  124. package/dist/helpers/use-menu-structure.js +10 -1
  125. package/dist/icons/caret.d.ts +1 -0
  126. package/dist/icons/caret.js +2 -2
  127. package/dist/icons/pen.d.ts +5 -0
  128. package/dist/icons/pen.js +8 -0
  129. package/dist/state/modals.d.ts +5 -0
  130. package/package.json +12 -12
  131. package/dist/helpers/get-timeline-sequence-hash.d.ts +0 -6
  132. package/dist/helpers/get-timeline-sequence-hash.js +0 -33
@@ -43,6 +43,7 @@ const colors_1 = require("../helpers/colors");
43
43
  const format_file_location_1 = require("../helpers/format-file-location");
44
44
  const get_connected_compositions_1 = require("../helpers/get-connected-compositions");
45
45
  const get_sequence_double_click_action_1 = require("../helpers/get-sequence-double-click-action");
46
+ const interactivity_enabled_1 = require("../helpers/interactivity-enabled");
46
47
  const open_in_editor_1 = require("../helpers/open-in-editor");
47
48
  const editor_snapping_1 = require("../state/editor-snapping");
48
49
  const modals_1 = require("../state/modals");
@@ -58,6 +59,7 @@ const selected_outline_measurement_1 = require("./selected-outline-measurement")
58
59
  const selected_outline_snap_1 = require("./selected-outline-snap");
59
60
  const selected_outline_types_1 = require("./selected-outline-types");
60
61
  const selected_outline_uv_1 = require("./selected-outline-uv");
62
+ const SelectedOutlineCropControls_1 = require("./SelectedOutlineCropControls");
61
63
  const call_add_keyframe_1 = require("./Timeline/call-add-keyframe");
62
64
  const disable_sequence_interactivity_1 = require("./Timeline/disable-sequence-interactivity");
63
65
  const duplicate_selected_timeline_item_1 = require("./Timeline/duplicate-selected-timeline-item");
@@ -71,10 +73,12 @@ const transform_origin_utils_1 = require("./Timeline/transform-origin-utils");
71
73
  const use_select_asset_1 = require("./use-select-asset");
72
74
  const emptyContextMenuValues = [];
73
75
  const SelectedOutlineTransformOriginHandle = ({ outline, onDraggingChange, target }) => {
74
- var _a;
76
+ var _a, _b;
75
77
  const { setDragOverrides, clearDragOverrides, setPropStatuses } = (0, react_1.useContext)(remotion_1.Internals.VisualModeSettersContext);
76
78
  const { editorSnapping } = (0, react_1.useContext)(editor_snapping_1.EditorSnappingContext);
77
79
  const transformOriginDrag = (_a = target === null || target === void 0 ? void 0 : target.transformOriginDrag) !== null && _a !== void 0 ? _a : null;
80
+ const crop = target === null || target === void 0 ? void 0 : target.crop;
81
+ const transformOriginPoints = (_b = outline.uncroppedPoints) !== null && _b !== void 0 ? _b : outline.points;
78
82
  const parsed = (0, react_1.useMemo)(() => transformOriginDrag === null
79
83
  ? null
80
84
  : (0, transform_origin_utils_1.parseTransformOrigin)(transformOriginDrag.originValue), [transformOriginDrag]);
@@ -88,7 +92,7 @@ const SelectedOutlineTransformOriginHandle = ({ outline, onDraggingChange, targe
88
92
  height: outline.dimensions.height,
89
93
  });
90
94
  }, [outline.dimensions, parsed]);
91
- const position = (0, react_1.useMemo)(() => (uv === null ? null : (0, selected_outline_uv_1.getUvHandlePosition)(outline.points, uv)), [outline.points, uv]);
95
+ const position = (0, react_1.useMemo)(() => (uv === null ? null : (0, selected_outline_uv_1.getUvHandlePosition)(transformOriginPoints, uv)), [transformOriginPoints, uv]);
92
96
  const onPointerDown = react_1.default.useCallback((event) => {
93
97
  if (event.button !== 0 ||
94
98
  transformOriginDrag === null ||
@@ -125,7 +129,7 @@ const SelectedOutlineTransformOriginHandle = ({ outline, onDraggingChange, targe
125
129
  x: currentPointerX - svgRect.left,
126
130
  y: currentPointerY - svgRect.top,
127
131
  };
128
- const rawUv = (0, selected_outline_uv_1.getUvCoordinateForPoint)(outline.points, point);
132
+ const rawUv = (0, selected_outline_uv_1.getUvCoordinateForPoint)(transformOriginPoints, point);
129
133
  const lockedAxis = (0, selected_outline_drag_1.getSelectedOutlineTransformOriginLockedAxis)({
130
134
  axisLocked,
131
135
  dimensions,
@@ -139,11 +143,13 @@ const SelectedOutlineTransformOriginHandle = ({ outline, onDraggingChange, targe
139
143
  });
140
144
  const snapPoint = lockedAxis === null
141
145
  ? point
142
- : (0, selected_outline_uv_1.getUvHandlePosition)(outline.points, axisLockedUv);
146
+ : (0, selected_outline_uv_1.getUvHandlePosition)(transformOriginPoints, axisLockedUv);
143
147
  const snappedUv = editorSnapping
144
148
  ? (0, selected_outline_drag_1.snapSelectedOutlineTransformOriginUv)({
149
+ crop: crop !== null && crop !== void 0 ? crop : null,
145
150
  point: snapPoint,
146
- points: outline.points,
151
+ points: transformOriginPoints,
152
+ thresholdPx: null,
147
153
  uv: axisLockedUv,
148
154
  })
149
155
  : axisLockedUv;
@@ -273,6 +279,7 @@ const SelectedOutlineTransformOriginHandle = ({ outline, onDraggingChange, targe
273
279
  window.addEventListener('keyup', onKeyChange);
274
280
  }, [
275
281
  clearDragOverrides,
282
+ crop,
276
283
  editorSnapping,
277
284
  onDraggingChange,
278
285
  outline,
@@ -280,6 +287,7 @@ const SelectedOutlineTransformOriginHandle = ({ outline, onDraggingChange, targe
280
287
  setDragOverrides,
281
288
  setPropStatuses,
282
289
  transformOriginDrag,
290
+ transformOriginPoints,
283
291
  uv,
284
292
  ]);
285
293
  if (transformOriginDrag === null ||
@@ -743,6 +751,7 @@ const SelectedOutlineRotationCornerHandle = ({ allRotationDragTargets, contextMe
743
751
  const circleRef = (0, react_1.useRef)(null);
744
752
  const cornerInfo = (0, react_1.useMemo)(() => (0, selected_outline_measurement_1.getSelectedOutlineRotationCornerInfo)(outline.points, corner), [corner, outline.points]);
745
753
  const onPointerDown = react_1.default.useCallback((event) => {
754
+ var _a;
746
755
  if (event.button !== 0 || rotationDrag === null) {
747
756
  return;
748
757
  }
@@ -770,7 +779,7 @@ const SelectedOutlineRotationCornerHandle = ({ allRotationDragTargets, contextMe
770
779
  const svgRect = svg.getBoundingClientRect();
771
780
  const center = svgPointToClientPoint((0, selected_outline_measurement_1.getSelectedOutlineRotationPivot)({
772
781
  dimensions: outline.dimensions,
773
- points: outline.points,
782
+ points: (_a = outline.uncroppedPoints) !== null && _a !== void 0 ? _a : outline.points,
774
783
  transformOriginValue: rotationDrag.transformOriginValue,
775
784
  }), svgRect);
776
785
  const dragStates = (0, selected_outline_drag_1.getSelectedOutlineRotationDragStates)({
@@ -924,6 +933,7 @@ const SelectedOutlineRotationCornerHandle = ({ allRotationDragTargets, contextMe
924
933
  onDraggingChange,
925
934
  outline.dimensions,
926
935
  outline.points,
936
+ outline.uncroppedPoints,
927
937
  onSelect,
928
938
  rotationDrag,
929
939
  selected,
@@ -1006,7 +1016,7 @@ const SelectedOutlineElement = ({ allDragTargets, allDragOutlines, allRotationDr
1006
1016
  selectComposition,
1007
1017
  ]);
1008
1018
  const onContextMenuOpen = react_1.default.useCallback(async () => {
1009
- if (target === undefined || previewServerState.type !== 'connected') {
1019
+ if (target === undefined) {
1010
1020
  return false;
1011
1021
  }
1012
1022
  if (!target.selected) {
@@ -1025,11 +1035,15 @@ const SelectedOutlineElement = ({ allDragTargets, allDragOutlines, allRotationDr
1025
1035
  : null;
1026
1036
  const assetLinkInfo = mediaSrc ? (0, timeline_asset_link_1.getTimelineAssetLinkInfo)(mediaSrc) : null;
1027
1037
  const canOpenInEditor = Boolean(window.remotion_editorName && originalLocation);
1028
- const disableInteractivityDisabled = !target.sequence.showInTimeline;
1029
- const sourceEditDisabled = !target.sequence.controls || !nodePath.absolutePath;
1038
+ const sourceEditingEnabled = (0, interactivity_enabled_1.isStudioInteractivityEnabled)();
1039
+ const disableInteractivityDisabled = !sourceEditingEnabled || !target.sequence.showInTimeline;
1040
+ const sourceEditDisabled = !sourceEditingEnabled ||
1041
+ !target.sequence.controls ||
1042
+ !nodePath.absolutePath;
1030
1043
  const canAddEffect = target.nodePathInfo.supportsEffects &&
1031
1044
  !sourceEditDisabled &&
1032
1045
  previewServerState.type === 'connected';
1046
+ const canCrop = target.canCrop && !sourceEditDisabled;
1033
1047
  return (0, get_sequence_context_menu_items_1.getSequenceContextMenuItems)({
1034
1048
  assetLinkInfo,
1035
1049
  canOpenInEditor,
@@ -1037,7 +1051,7 @@ const SelectedOutlineElement = ({ allDragTargets, allDragOutlines, allRotationDr
1037
1051
  disableInteractivityDisabled,
1038
1052
  duplicateDisabled: sourceEditDisabled,
1039
1053
  fileLocation,
1040
- includeSourceEditItems: true,
1054
+ includeSourceEditItems: sourceEditingEnabled,
1041
1055
  onDeleteSequenceFromSource: async () => {
1042
1056
  if (sourceEditDisabled || previewServerState.type !== 'connected') {
1043
1057
  return;
@@ -1103,39 +1117,65 @@ const SelectedOutlineElement = ({ allDragTargets, allDragOutlines, allRotationDr
1103
1117
  originalLocation,
1104
1118
  selectAsset,
1105
1119
  sequence: target.sequence,
1106
- sourceActions: [
1107
- ...(target.nodePathInfo.supportsEffects
1108
- ? [
1109
- {
1110
- type: 'item',
1111
- id: 'add-effect',
1112
- keyHint: null,
1113
- label: 'Add effect...',
1114
- leftItem: null,
1115
- disabled: !canAddEffect,
1116
- onClick: () => {
1117
- if (!canAddEffect ||
1118
- previewServerState.type !== 'connected') {
1119
- return;
1120
- }
1121
- setSelectedModal({
1122
- type: 'add-effect',
1123
- clientId: previewServerState.clientId,
1124
- fileName: nodePath.absolutePath,
1125
- nodePath,
1126
- });
1120
+ sourceActions: sourceEditingEnabled
1121
+ ? [
1122
+ ...(target.nodePathInfo.supportsEffects
1123
+ ? [
1124
+ {
1125
+ type: 'item',
1126
+ id: 'add-effect',
1127
+ keyHint: null,
1128
+ label: 'Add effect...',
1129
+ leftItem: null,
1130
+ disabled: !canAddEffect,
1131
+ onClick: () => {
1132
+ if (!canAddEffect ||
1133
+ previewServerState.type !== 'connected') {
1134
+ return;
1135
+ }
1136
+ setSelectedModal({
1137
+ type: 'add-effect',
1138
+ clientId: previewServerState.clientId,
1139
+ fileName: nodePath.absolutePath,
1140
+ nodePath,
1141
+ });
1142
+ },
1143
+ quickSwitcherLabel: null,
1144
+ subMenu: null,
1145
+ value: 'add-effect',
1127
1146
  },
1128
- quickSwitcherLabel: null,
1129
- subMenu: null,
1130
- value: 'add-effect',
1131
- },
1132
- {
1133
- type: 'divider',
1134
- id: 'add-effect-divider',
1147
+ ]
1148
+ : []),
1149
+ {
1150
+ type: 'item',
1151
+ id: 'crop',
1152
+ keyHint: null,
1153
+ label: 'Crop',
1154
+ leftItem: null,
1155
+ disabled: !canCrop,
1156
+ onClick: () => {
1157
+ if (!canCrop) {
1158
+ return;
1159
+ }
1160
+ onSelect({
1161
+ type: 'sequence-prop',
1162
+ nodePathInfo: {
1163
+ ...target.nodePathInfo,
1164
+ auxiliaryKeys: ['controls', selected_outline_types_1.cropFieldKeys.left],
1165
+ },
1166
+ key: selected_outline_types_1.cropFieldKeys.left,
1167
+ }, { shiftKey: false, toggleKey: false });
1135
1168
  },
1136
- ]
1137
- : []),
1138
- ],
1169
+ quickSwitcherLabel: null,
1170
+ subMenu: null,
1171
+ value: 'crop',
1172
+ },
1173
+ {
1174
+ type: 'divider',
1175
+ id: 'crop-divider',
1176
+ },
1177
+ ]
1178
+ : [],
1139
1179
  });
1140
1180
  }, [
1141
1181
  confirm,
@@ -1148,9 +1188,9 @@ const SelectedOutlineElement = ({ allDragTargets, allDragOutlines, allRotationDr
1148
1188
  target,
1149
1189
  ]);
1150
1190
  return (jsx_runtime_1.jsxs(jsx_runtime_1.Fragment, { children: [
1151
- jsx_runtime_1.jsx(SelectedOutlinePolygon, { allDragTargets: allDragTargets, allDragOutlines: allDragOutlines, contextMenuValues: emptyContextMenuValues, dragging: dragging, hovered: hovered, outline: outline, onContextMenuOpen: onContextMenuOpen, onDraggingChange: onDraggingChange, onHoverChange: onHoverChange, onSnapPointsChange: onSnapPointsChange, onSelect: onSelect, onDoubleClickTarget: onDoubleClickTarget, scale: scale, snapTargets: snapTargets, target: target }), (target === null || target === void 0 ? void 0 : target.containsSelection) || hovered
1191
+ jsx_runtime_1.jsx(SelectedOutlinePolygon, { allDragTargets: allDragTargets, allDragOutlines: allDragOutlines, contextMenuValues: emptyContextMenuValues, dragging: dragging, hovered: hovered, outline: outline, onContextMenuOpen: onContextMenuOpen, onDraggingChange: onDraggingChange, onHoverChange: onHoverChange, onSnapPointsChange: onSnapPointsChange, onSelect: onSelect, onDoubleClickTarget: onDoubleClickTarget, scale: scale, snapTargets: snapTargets, target: target }), jsx_runtime_1.jsx(SelectedOutlineCropControls_1.SelectedOutlineCropControls, { outline: outline, onDraggingChange: onDraggingChange, target: target }), (target === null || target === void 0 ? void 0 : target.cropDrag) === null && (target.containsSelection || hovered)
1152
1192
  ? ['top', 'right', 'bottom', 'left'].map((edge) => (jsx_runtime_1.jsx(SelectedOutlineScaleEdgeLine, { allScaleDragTargets: allScaleDragTargets, contextMenuValues: emptyContextMenuValues, dragging: dragging, edge: edge, outline: outline, onContextMenuOpen: onContextMenuOpen, onDraggingChange: onDraggingChange, onHoverChange: onHoverChange, onSelect: onSelect, target: target }, edge)))
1153
- : null, (target === null || target === void 0 ? void 0 : target.containsSelection) || hovered
1193
+ : null, (target === null || target === void 0 ? void 0 : target.cropDrag) === null && (target.containsSelection || hovered)
1154
1194
  ? ['top-left', 'top-right', 'bottom-right', 'bottom-left'].map((corner) => (jsx_runtime_1.jsx(SelectedOutlineRotationCornerHandle, { allRotationDragTargets: allRotationDragTargets, contextMenuValues: emptyContextMenuValues, corner: corner, dragging: dragging, outline: outline, onContextMenuOpen: onContextMenuOpen, onDraggingChange: onDraggingChange, onHoverChange: onHoverChange, onSelect: onSelect, target: target }, corner)))
1155
1195
  : null] }));
1156
1196
  };
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
2
  import { type SelectedOutline } from './selected-outline-geometry';
3
3
  import { type SelectedOutlineTarget } from './selected-outline-types';
4
- export { applySelectedOutlineDragAxisLock, applySelectedOutlineTransformOriginAxisLock, compensateTranslateForTransformOrigin, getSelectedOutlineActiveSchema, getSelectedOutlineDragChanges, getSelectedOutlineDragValues, getSelectedOutlineKeyboardNudgeDelta, getSelectedOutlineKeyboardNudgeDeltas, getSelectedOutlineRotationDragChanges, getSelectedOutlineRotationDragStates, getSelectedOutlineRotationDragValues, getSelectedOutlineScaleDragChanges, getSelectedOutlineScaleDragStates, getSelectedOutlineScaleDragValues, getSelectedOutlineScaleEdgeInfo, getSelectedOutlineTransformOriginDragChanges, getSelectedOutlineTransformOriginLockedAxis, isSelectedOutlineDragPastThreshold, selectedOutlineTransformOriginSnapThresholdPx, selectedOutlineUvSnapThresholdPx, snapSelectedOutlineRotationDeltaDegrees, snapSelectedOutlineTransformOriginUv, snapSelectedOutlineUv, } from './selected-outline-drag';
5
- export { getOutlineSelectionInteraction, getSelectedEffectFieldsBySequenceKey, getSelectedOutlineRotationCornerInfo, getSelectedOutlineRotationDeltaDegrees, getSelectedOutlineRotationPivot, getSelectedSequenceKeys, getSequencesWithSelectableOutlines, getTransformedSvgViewportPoints, } from './selected-outline-measurement';
4
+ export { applySelectedOutlineDragAxisLock, applySelectedOutlineTransformOriginAxisLock, compensateTranslateForTransformOrigin, getSelectedOutlineActiveSchema, getSelectedOutlineCropDragChanges, getSelectedOutlineCropDragValues, getSelectedOutlineCropFollowingTransformOrigin, getSelectedOutlineDragChanges, getSelectedOutlineDragValues, getSelectedOutlineKeyboardNudgeDelta, getSelectedOutlineKeyboardNudgeDeltas, getSelectedOutlineRotationDragChanges, getSelectedOutlineRotationDragStates, getSelectedOutlineRotationDragValues, getSelectedOutlineScaleDragChanges, getSelectedOutlineScaleDragStates, getSelectedOutlineScaleDragValues, getSelectedOutlineScaleEdgeInfo, getSelectedOutlineTransformOriginDragChanges, getSelectedOutlineTransformOriginLockedAxis, isSelectedOutlineDragPastThreshold, selectedOutlineTransformOriginSnapThresholdPx, selectedOutlineUvSnapThresholdPx, snapSelectedOutlineRotationDeltaDegrees, snapSelectedOutlineTransformOriginUv, snapSelectedOutlineUv, } from './selected-outline-drag';
5
+ export { getOutlineSelectionInteraction, getSelectedCropInfo, getSelectedEffectFieldsBySequenceKey, getSelectedOutlineRotationCornerInfo, getSelectedOutlineRotationDeltaDegrees, getSelectedOutlineRotationPivot, getSelectedSequenceKeys, getSequencesWithSelectableOutlines, getTransformedSvgViewportPoints, } from './selected-outline-measurement';
6
6
  export { selectedOutlineDragThresholdPx } from './selected-outline-types';
7
7
  export type { SelectedOutlineDragState, SelectedOutlineRotationDragState, SelectedOutlineScaleDragState, } from './selected-outline-types';
8
8
  type OutlineSequenceParent = {
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.SelectedOutlineOverlay = exports.orderOutlinesForRendering = exports.selectedOutlineDragThresholdPx = exports.getTransformedSvgViewportPoints = exports.getSequencesWithSelectableOutlines = exports.getSelectedSequenceKeys = exports.getSelectedOutlineRotationPivot = exports.getSelectedOutlineRotationDeltaDegrees = exports.getSelectedOutlineRotationCornerInfo = exports.getSelectedEffectFieldsBySequenceKey = exports.getOutlineSelectionInteraction = exports.snapSelectedOutlineUv = exports.snapSelectedOutlineTransformOriginUv = exports.snapSelectedOutlineRotationDeltaDegrees = exports.selectedOutlineUvSnapThresholdPx = exports.selectedOutlineTransformOriginSnapThresholdPx = exports.isSelectedOutlineDragPastThreshold = exports.getSelectedOutlineTransformOriginLockedAxis = exports.getSelectedOutlineTransformOriginDragChanges = exports.getSelectedOutlineScaleEdgeInfo = exports.getSelectedOutlineScaleDragValues = exports.getSelectedOutlineScaleDragStates = exports.getSelectedOutlineScaleDragChanges = exports.getSelectedOutlineRotationDragValues = exports.getSelectedOutlineRotationDragStates = exports.getSelectedOutlineRotationDragChanges = exports.getSelectedOutlineKeyboardNudgeDeltas = exports.getSelectedOutlineKeyboardNudgeDelta = exports.getSelectedOutlineDragValues = exports.getSelectedOutlineDragChanges = exports.getSelectedOutlineActiveSchema = exports.compensateTranslateForTransformOrigin = exports.applySelectedOutlineTransformOriginAxisLock = exports.applySelectedOutlineDragAxisLock = void 0;
36
+ exports.SelectedOutlineOverlay = exports.orderOutlinesForRendering = exports.selectedOutlineDragThresholdPx = exports.getTransformedSvgViewportPoints = exports.getSequencesWithSelectableOutlines = exports.getSelectedSequenceKeys = exports.getSelectedOutlineRotationPivot = exports.getSelectedOutlineRotationDeltaDegrees = exports.getSelectedOutlineRotationCornerInfo = exports.getSelectedEffectFieldsBySequenceKey = exports.getSelectedCropInfo = exports.getOutlineSelectionInteraction = exports.snapSelectedOutlineUv = exports.snapSelectedOutlineTransformOriginUv = exports.snapSelectedOutlineRotationDeltaDegrees = exports.selectedOutlineUvSnapThresholdPx = exports.selectedOutlineTransformOriginSnapThresholdPx = exports.isSelectedOutlineDragPastThreshold = exports.getSelectedOutlineTransformOriginLockedAxis = exports.getSelectedOutlineTransformOriginDragChanges = exports.getSelectedOutlineScaleEdgeInfo = exports.getSelectedOutlineScaleDragValues = exports.getSelectedOutlineScaleDragStates = exports.getSelectedOutlineScaleDragChanges = exports.getSelectedOutlineRotationDragValues = exports.getSelectedOutlineRotationDragStates = exports.getSelectedOutlineRotationDragChanges = exports.getSelectedOutlineKeyboardNudgeDeltas = exports.getSelectedOutlineKeyboardNudgeDelta = exports.getSelectedOutlineDragValues = exports.getSelectedOutlineDragChanges = exports.getSelectedOutlineCropFollowingTransformOrigin = exports.getSelectedOutlineCropDragValues = exports.getSelectedOutlineCropDragChanges = exports.getSelectedOutlineActiveSchema = exports.compensateTranslateForTransformOrigin = exports.applySelectedOutlineTransformOriginAxisLock = exports.applySelectedOutlineDragAxisLock = void 0;
37
37
  const jsx_runtime_1 = require("react/jsx-runtime");
38
38
  const player_1 = require("@remotion/player");
39
39
  const react_1 = __importStar(require("react"));
@@ -63,6 +63,9 @@ Object.defineProperty(exports, "applySelectedOutlineDragAxisLock", { enumerable:
63
63
  Object.defineProperty(exports, "applySelectedOutlineTransformOriginAxisLock", { enumerable: true, get: function () { return selected_outline_drag_2.applySelectedOutlineTransformOriginAxisLock; } });
64
64
  Object.defineProperty(exports, "compensateTranslateForTransformOrigin", { enumerable: true, get: function () { return selected_outline_drag_2.compensateTranslateForTransformOrigin; } });
65
65
  Object.defineProperty(exports, "getSelectedOutlineActiveSchema", { enumerable: true, get: function () { return selected_outline_drag_2.getSelectedOutlineActiveSchema; } });
66
+ Object.defineProperty(exports, "getSelectedOutlineCropDragChanges", { enumerable: true, get: function () { return selected_outline_drag_2.getSelectedOutlineCropDragChanges; } });
67
+ Object.defineProperty(exports, "getSelectedOutlineCropDragValues", { enumerable: true, get: function () { return selected_outline_drag_2.getSelectedOutlineCropDragValues; } });
68
+ Object.defineProperty(exports, "getSelectedOutlineCropFollowingTransformOrigin", { enumerable: true, get: function () { return selected_outline_drag_2.getSelectedOutlineCropFollowingTransformOrigin; } });
66
69
  Object.defineProperty(exports, "getSelectedOutlineDragChanges", { enumerable: true, get: function () { return selected_outline_drag_2.getSelectedOutlineDragChanges; } });
67
70
  Object.defineProperty(exports, "getSelectedOutlineDragValues", { enumerable: true, get: function () { return selected_outline_drag_2.getSelectedOutlineDragValues; } });
68
71
  Object.defineProperty(exports, "getSelectedOutlineKeyboardNudgeDelta", { enumerable: true, get: function () { return selected_outline_drag_2.getSelectedOutlineKeyboardNudgeDelta; } });
@@ -84,6 +87,7 @@ Object.defineProperty(exports, "snapSelectedOutlineTransformOriginUv", { enumera
84
87
  Object.defineProperty(exports, "snapSelectedOutlineUv", { enumerable: true, get: function () { return selected_outline_drag_2.snapSelectedOutlineUv; } });
85
88
  const selected_outline_measurement_2 = require("./selected-outline-measurement");
86
89
  Object.defineProperty(exports, "getOutlineSelectionInteraction", { enumerable: true, get: function () { return selected_outline_measurement_2.getOutlineSelectionInteraction; } });
90
+ Object.defineProperty(exports, "getSelectedCropInfo", { enumerable: true, get: function () { return selected_outline_measurement_2.getSelectedCropInfo; } });
87
91
  Object.defineProperty(exports, "getSelectedEffectFieldsBySequenceKey", { enumerable: true, get: function () { return selected_outline_measurement_2.getSelectedEffectFieldsBySequenceKey; } });
88
92
  Object.defineProperty(exports, "getSelectedOutlineRotationCornerInfo", { enumerable: true, get: function () { return selected_outline_measurement_2.getSelectedOutlineRotationCornerInfo; } });
89
93
  Object.defineProperty(exports, "getSelectedOutlineRotationDeltaDegrees", { enumerable: true, get: function () { return selected_outline_measurement_2.getSelectedOutlineRotationDeltaDegrees; } });
@@ -93,6 +97,50 @@ Object.defineProperty(exports, "getSequencesWithSelectableOutlines", { enumerabl
93
97
  Object.defineProperty(exports, "getTransformedSvgViewportPoints", { enumerable: true, get: function () { return selected_outline_measurement_2.getTransformedSvgViewportPoints; } });
94
98
  const selected_outline_types_2 = require("./selected-outline-types");
95
99
  Object.defineProperty(exports, "selectedOutlineDragThresholdPx", { enumerable: true, get: function () { return selected_outline_types_2.selectedOutlineDragThresholdPx; } });
100
+ const getEffectiveCropValue = ({ activeSchema, controls, dragOverrides, fieldKey, frame, propStatuses, }) => {
101
+ var _a;
102
+ const fieldSchema = activeSchema === null || activeSchema === void 0 ? void 0 : activeSchema[fieldKey];
103
+ if ((fieldSchema === null || fieldSchema === void 0 ? void 0 : fieldSchema.type) !== 'number') {
104
+ return 0;
105
+ }
106
+ const propStatus = propStatuses === null || propStatuses === void 0 ? void 0 : propStatuses[fieldKey];
107
+ const value = (propStatus === null || propStatus === void 0 ? void 0 : propStatus.status) === 'static' || (propStatus === null || propStatus === void 0 ? void 0 : propStatus.status) === 'keyframed'
108
+ ? remotion_1.Internals.getEffectiveVisualModeValue({
109
+ propStatus,
110
+ dragOverrideValue: dragOverrides[fieldKey],
111
+ defaultValue: fieldSchema.default,
112
+ frame,
113
+ shouldResortToDefaultValueIfUndefined: true,
114
+ })
115
+ : ((_a = controls === null || controls === void 0 ? void 0 : controls.currentRuntimeValueDotNotation[fieldKey]) !== null && _a !== void 0 ? _a : fieldSchema.default);
116
+ return typeof value === 'number' && Number.isFinite(value) ? value : 0;
117
+ };
118
+ const getCropDragFields = ({ activeSchema, cropValues, propStatuses, }) => {
119
+ if (!(0, selected_outline_types_1.canEditSelectedOutlineCrop)({
120
+ schema: activeSchema,
121
+ propStatuses,
122
+ })) {
123
+ return null;
124
+ }
125
+ const fields = {};
126
+ for (const fieldKey of Object.values(selected_outline_types_1.cropFieldKeys)) {
127
+ const fieldSchema = activeSchema === null || activeSchema === void 0 ? void 0 : activeSchema[fieldKey];
128
+ const propStatus = propStatuses === null || propStatuses === void 0 ? void 0 : propStatuses[fieldKey];
129
+ const canEditStatus = (propStatus === null || propStatus === void 0 ? void 0 : propStatus.status) === 'static' ||
130
+ ((propStatus === null || propStatus === void 0 ? void 0 : propStatus.status) === 'keyframed' &&
131
+ propStatus.interpolationFunction === 'interpolate');
132
+ if ((fieldSchema === null || fieldSchema === void 0 ? void 0 : fieldSchema.type) !== 'number' || !canEditStatus) {
133
+ return null;
134
+ }
135
+ fields[fieldKey] = {
136
+ defaultValue: fieldSchema.default,
137
+ fieldSchema,
138
+ propStatus,
139
+ value: cropValues[fieldKey],
140
+ };
141
+ }
142
+ return fields;
143
+ };
96
144
  const outlineContainer = {
97
145
  position: 'absolute',
98
146
  inset: 0,
@@ -382,6 +430,8 @@ const SelectedOutlineOverlay = ({ compositionHeight, compositionWidth, scale, tr
382
430
  const overlayRef = (0, react_1.useRef)(null);
383
431
  const keyboardNudgeSessionRef = (0, react_1.useRef)(null);
384
432
  const saveKeyboardNudgeSessionRef = (0, react_1.useRef)(() => undefined);
433
+ const previewInteractive = previewServerState.type === 'connected' && (0, interactivity_enabled_1.isStudioInteractivityEnabled)();
434
+ const previewSelectionAvailable = previewServerState.type === 'connected' || window.remotion_isReadOnlyStudio;
385
435
  const onDraggingChange = react_1.default.useCallback((dragging) => {
386
436
  setDraggingOutline(dragging);
387
437
  if (dragging) {
@@ -398,13 +448,16 @@ const SelectedOutlineOverlay = ({ compositionHeight, compositionWidth, scale, tr
398
448
  selectItem(item, interaction, undefined, { reveal: true });
399
449
  }, [selectItem]);
400
450
  const outlineTargets = (0, react_1.useMemo)(() => {
401
- if (!(0, interactivity_enabled_1.isStudioInteractivityEnabled)() || !editorShowOutlines) {
451
+ if (!(0, interactivity_enabled_1.isStudioSelectionEnabled)() ||
452
+ !previewSelectionAvailable ||
453
+ !editorShowOutlines) {
402
454
  return [];
403
455
  }
404
456
  const selectedSequenceKeys = (0, selected_outline_measurement_1.getSelectedSequenceKeys)(selectedItems);
405
457
  const sequenceKeysContainingSelection = (0, selected_outline_measurement_1.getSequenceKeysContainingSelection)(selectedItems);
406
458
  const selectedEffectsBySequenceKey = (0, selected_outline_measurement_1.getSelectedEffectFieldsBySequenceKey)(selectedItems);
407
459
  const selectedTransformOriginInfo = (0, selected_outline_measurement_1.getSelectedTransformOriginInfo)(selectedItems);
460
+ const selectedCropInfo = (0, selected_outline_measurement_1.getSelectedCropInfo)(selectedItems);
408
461
  const clientId = previewServerState.type === 'connected'
409
462
  ? previewServerState.clientId
410
463
  : null;
@@ -434,6 +487,46 @@ const SelectedOutlineOverlay = ({ compositionHeight, compositionWidth, scale, tr
434
487
  frame: sourceFrame,
435
488
  })
436
489
  : null;
490
+ const cropValues = {
491
+ cropLeft: getEffectiveCropValue({
492
+ activeSchema,
493
+ controls,
494
+ dragOverrides,
495
+ fieldKey: selected_outline_types_1.cropFieldKeys.left,
496
+ frame: sourceFrame,
497
+ propStatuses: nodePropStatuses,
498
+ }),
499
+ cropRight: getEffectiveCropValue({
500
+ activeSchema,
501
+ controls,
502
+ dragOverrides,
503
+ fieldKey: selected_outline_types_1.cropFieldKeys.right,
504
+ frame: sourceFrame,
505
+ propStatuses: nodePropStatuses,
506
+ }),
507
+ cropTop: getEffectiveCropValue({
508
+ activeSchema,
509
+ controls,
510
+ dragOverrides,
511
+ fieldKey: selected_outline_types_1.cropFieldKeys.top,
512
+ frame: sourceFrame,
513
+ propStatuses: nodePropStatuses,
514
+ }),
515
+ cropBottom: getEffectiveCropValue({
516
+ activeSchema,
517
+ controls,
518
+ dragOverrides,
519
+ fieldKey: selected_outline_types_1.cropFieldKeys.bottom,
520
+ frame: sourceFrame,
521
+ propStatuses: nodePropStatuses,
522
+ }),
523
+ };
524
+ const crop = remotion_1.Internals.resolveSequenceCrop(cropValues);
525
+ const cropFields = getCropDragFields({
526
+ activeSchema,
527
+ cropValues,
528
+ propStatuses: nodePropStatuses,
529
+ });
437
530
  const fieldSchema = activeSchema === null || activeSchema === void 0 ? void 0 : activeSchema[selected_outline_types_1.translateFieldKey];
438
531
  const propStatus = nodePropStatuses === null || nodePropStatuses === void 0 ? void 0 : nodePropStatuses[selected_outline_types_1.translateFieldKey];
439
532
  const scaleFieldSchema = activeSchema === null || activeSchema === void 0 ? void 0 : activeSchema[selected_outline_types_1.scaleFieldKey];
@@ -459,18 +552,18 @@ const SelectedOutlineOverlay = ({ compositionHeight, compositionWidth, scale, tr
459
552
  const canRotationDragStatus = (rotationPropStatus === null || rotationPropStatus === void 0 ? void 0 : rotationPropStatus.status) === 'static' ||
460
553
  ((rotationPropStatus === null || rotationPropStatus === void 0 ? void 0 : rotationPropStatus.status) === 'keyframed' &&
461
554
  rotationPropStatus.interpolationFunction === 'interpolate');
462
- const canDrag = previewServerState.type === 'connected' &&
555
+ const canDrag = previewInteractive &&
463
556
  controls !== null &&
464
557
  (fieldSchema === null || fieldSchema === void 0 ? void 0 : fieldSchema.type) === 'translate' &&
465
558
  canDragStatus;
466
559
  const canScaleDragStatus = (scalePropStatus === null || scalePropStatus === void 0 ? void 0 : scalePropStatus.status) === 'static' ||
467
560
  ((scalePropStatus === null || scalePropStatus === void 0 ? void 0 : scalePropStatus.status) === 'keyframed' &&
468
561
  scalePropStatus.interpolationFunction === 'interpolate');
469
- const canScaleDrag = previewServerState.type === 'connected' &&
562
+ const canScaleDrag = previewInteractive &&
470
563
  controls !== null &&
471
564
  (scaleFieldSchema === null || scaleFieldSchema === void 0 ? void 0 : scaleFieldSchema.type) === 'scale' &&
472
565
  canScaleDragStatus;
473
- const canRotationDrag = previewServerState.type === 'connected' &&
566
+ const canRotationDrag = previewInteractive &&
474
567
  controls !== null &&
475
568
  (rotationFieldSchema === null || rotationFieldSchema === void 0 ? void 0 : rotationFieldSchema.type) === 'rotation-css' &&
476
569
  canRotationDragStatus;
@@ -485,17 +578,44 @@ const SelectedOutlineOverlay = ({ compositionHeight, compositionWidth, scale, tr
485
578
  const canTransformOriginTranslateStatus = (propStatus === null || propStatus === void 0 ? void 0 : propStatus.status) === 'static' ||
486
579
  ((propStatus === null || propStatus === void 0 ? void 0 : propStatus.status) === 'keyframed' &&
487
580
  propStatus.interpolationFunction === 'interpolate');
488
- const canTransformOriginDrag = previewServerState.type === 'connected' &&
581
+ const canTransformOriginDrag = previewInteractive &&
489
582
  selectedForTransformOrigin &&
490
583
  controls !== null &&
491
584
  (transformOriginFieldSchema === null || transformOriginFieldSchema === void 0 ? void 0 : transformOriginFieldSchema.type) === 'transform-origin' &&
492
585
  (fieldSchema === null || fieldSchema === void 0 ? void 0 : fieldSchema.type) === 'translate' &&
493
586
  canTransformOriginStatus &&
494
587
  canTransformOriginTranslateStatus;
495
- const canDropEffect = previewServerState.type === 'connected' &&
496
- (controls === null || controls === void 0 ? void 0 : controls.supportsEffects) === true;
588
+ const selectedForCrop = (selectedCropInfo === null || selectedCropInfo === void 0 ? void 0 : selectedCropInfo.sequenceKey) === key;
589
+ const cropSourceFrame = (selectedCropInfo === null || selectedCropInfo === void 0 ? void 0 : selectedCropInfo.displayFrame) === null ||
590
+ (selectedCropInfo === null || selectedCropInfo === void 0 ? void 0 : selectedCropInfo.displayFrame) === undefined
591
+ ? sourceFrame
592
+ : selectedCropInfo.displayFrame - keyframeDisplayOffset;
593
+ const canCropDrag = previewInteractive &&
594
+ selectedForCrop &&
595
+ controls !== null &&
596
+ cropFields !== null;
597
+ const canDropEffect = previewInteractive && (controls === null || controls === void 0 ? void 0 : controls.supportsEffects) === true;
497
598
  return {
498
599
  key,
600
+ canCrop: previewInteractive && controls !== null && cropFields !== null,
601
+ crop,
602
+ cropDrag: canCropDrag
603
+ ? {
604
+ clientId: previewServerState.clientId,
605
+ fields: cropFields,
606
+ nodePath,
607
+ schema: controls.schema,
608
+ sourceFrame: cropSourceFrame,
609
+ transformOrigin: (transformOriginFieldSchema === null || transformOriginFieldSchema === void 0 ? void 0 : transformOriginFieldSchema.type) === 'transform-origin' &&
610
+ transformOriginPropStatus !== undefined
611
+ ? {
612
+ defaultValue: transformOriginFieldSchema.default,
613
+ propStatus: transformOriginPropStatus,
614
+ value: transformOriginValueForRotation,
615
+ }
616
+ : null,
617
+ }
618
+ : null,
499
619
  containsSelection,
500
620
  effectDrop: canDropEffect
501
621
  ? {
@@ -628,6 +748,8 @@ const SelectedOutlineOverlay = ({ compositionHeight, compositionWidth, scale, tr
628
748
  getScaleLockState,
629
749
  editorShowOutlines,
630
750
  overrideIdToNodePathMappings,
751
+ previewInteractive,
752
+ previewSelectionAvailable,
631
753
  previewServerState,
632
754
  selectedItems,
633
755
  sequences,
@@ -1,3 +1,5 @@
1
+ import type { OverrideIdToNodePaths, TSequence } from 'remotion';
2
+ export declare const getReadOnlyOverrideIdToNodePathMappings: (sequences: readonly TSequence[]) => OverrideIdToNodePaths;
1
3
  export declare const SequencePropsSubscriptionProvider: React.FC<{
2
4
  readonly children: React.ReactNode;
3
5
  }>;
@@ -1,11 +1,37 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SequencePropsSubscriptionProvider = void 0;
3
+ exports.SequencePropsSubscriptionProvider = exports.getReadOnlyOverrideIdToNodePathMappings = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const react_1 = require("react");
6
6
  const remotion_1 = require("remotion");
7
+ const getReadOnlyOverrideIdToNodePathMappings = (sequences) => {
8
+ return Object.fromEntries(sequences.flatMap((sequence) => {
9
+ var _a;
10
+ const overrideId = (_a = sequence.controls) === null || _a === void 0 ? void 0 : _a.overrideId;
11
+ if (!overrideId) {
12
+ return [];
13
+ }
14
+ return [
15
+ [
16
+ overrideId,
17
+ {
18
+ absolutePath: '',
19
+ effectKeys: [],
20
+ nodePath: ['readonly-sequence', overrideId],
21
+ sequenceKeys: [],
22
+ videoConfigValues: null,
23
+ },
24
+ ],
25
+ ];
26
+ }));
27
+ };
28
+ exports.getReadOnlyOverrideIdToNodePathMappings = getReadOnlyOverrideIdToNodePathMappings;
7
29
  const SequencePropsSubscriptionProvider = ({ children }) => {
30
+ const { sequences } = (0, react_1.useContext)(remotion_1.Internals.SequenceManager);
8
31
  const [overrideToNodePathMap, setOverrideIdToNodePathMap] = (0, react_1.useState)({});
32
+ const readOnlyOverrideToNodePathMap = (0, react_1.useMemo)(() => window.remotion_isReadOnlyStudio
33
+ ? (0, exports.getReadOnlyOverrideIdToNodePathMappings)(sequences)
34
+ : null, [sequences]);
9
35
  const setOverrideIdToNodePath = (0, react_1.useCallback)((overrideId, state) => {
10
36
  setOverrideIdToNodePathMap((prev) => {
11
37
  const existing = prev[overrideId];
@@ -16,8 +42,10 @@ const SequencePropsSubscriptionProvider = ({ children }) => {
16
42
  });
17
43
  }, []);
18
44
  const getters = (0, react_1.useMemo)(() => {
19
- return { overrideIdToNodePathMappings: overrideToNodePathMap };
20
- }, [overrideToNodePathMap]);
45
+ return {
46
+ overrideIdToNodePathMappings: readOnlyOverrideToNodePathMap !== null && readOnlyOverrideToNodePathMap !== void 0 ? readOnlyOverrideToNodePathMap : overrideToNodePathMap,
47
+ };
48
+ }, [overrideToNodePathMap, readOnlyOverrideToNodePathMap]);
21
49
  const setters = (0, react_1.useMemo)(() => {
22
50
  return { setOverrideIdToNodePath };
23
51
  }, [setOverrideIdToNodePath]);
@@ -1,2 +1,4 @@
1
1
  import React from 'react';
2
- export declare const SidebarCollapserControls: React.FC<{}>;
2
+ export declare const SidebarCollapserControl: React.FC<{
3
+ readonly side: 'left' | 'right';
4
+ }>;