@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
@@ -113,14 +113,41 @@ const SelectedOutlineTransformOriginHandle = ({ outline, onDraggingChange, targe
113
113
  ? JSON.stringify(transformOriginDrag.translateDefault)
114
114
  : null;
115
115
  let last = null;
116
+ let currentPointerX = event.clientX;
117
+ let currentPointerY = event.clientY;
118
+ let axisLocked = event.shiftKey;
116
119
  onDraggingChange(true);
117
120
  (0, ForceSpecificCursor_1.forceSpecificCursor)('crosshair');
118
- const updateFromPointerEvent = (pointerEvent) => {
121
+ const updateFromPointerPosition = () => {
119
122
  const point = {
120
- x: pointerEvent.clientX - svgRect.left,
121
- y: pointerEvent.clientY - svgRect.top,
123
+ x: currentPointerX - svgRect.left,
124
+ y: currentPointerY - svgRect.top,
122
125
  };
123
- const nextUv = (0, selected_outline_uv_1.getUvCoordinateForPoint)(outline.points, point);
126
+ const rawUv = (0, selected_outline_uv_1.getUvCoordinateForPoint)(outline.points, point);
127
+ const lockedAxis = (0, selected_outline_drag_1.getSelectedOutlineTransformOriginLockedAxis)({
128
+ axisLocked,
129
+ dimensions,
130
+ startUv: uv,
131
+ uv: rawUv,
132
+ });
133
+ const axisLockedUv = (0, selected_outline_drag_1.applySelectedOutlineTransformOriginAxisLock)({
134
+ lockedAxis,
135
+ startUv: uv,
136
+ uv: rawUv,
137
+ });
138
+ const snapPoint = lockedAxis === null
139
+ ? point
140
+ : (0, selected_outline_uv_1.getUvHandlePosition)(outline.points, axisLockedUv);
141
+ const snappedUv = (0, selected_outline_drag_1.snapSelectedOutlineTransformOriginUv)({
142
+ point: snapPoint,
143
+ points: outline.points,
144
+ uv: axisLockedUv,
145
+ });
146
+ const nextUv = (0, selected_outline_drag_1.applySelectedOutlineTransformOriginAxisLock)({
147
+ lockedAxis,
148
+ startUv: uv,
149
+ uv: snappedUv,
150
+ });
124
151
  const deltaOrigin = [
125
152
  (nextUv[0] - uv[0]) * dimensions.width,
126
153
  (nextUv[1] - uv[1]) * dimensions.height,
@@ -152,15 +179,31 @@ const SelectedOutlineTransformOriginHandle = ({ outline, onDraggingChange, targe
152
179
  })
153
180
  : remotion_1.Internals.makeStaticDragOverride(translate));
154
181
  };
155
- updateFromPointerEvent(event);
182
+ updateFromPointerPosition();
156
183
  const onPointerMove = (moveEvent) => {
157
184
  moveEvent.preventDefault();
158
- updateFromPointerEvent(moveEvent);
185
+ currentPointerX = moveEvent.clientX;
186
+ currentPointerY = moveEvent.clientY;
187
+ axisLocked = moveEvent.shiftKey;
188
+ updateFromPointerPosition();
189
+ };
190
+ const onKeyChange = (keyEvent) => {
191
+ if (keyEvent.key !== 'Shift') {
192
+ return;
193
+ }
194
+ const nextAxisLocked = keyEvent.type === 'keydown';
195
+ if (nextAxisLocked === axisLocked) {
196
+ return;
197
+ }
198
+ axisLocked = nextAxisLocked;
199
+ updateFromPointerPosition();
159
200
  };
160
201
  const onPointerUp = () => {
161
202
  window.removeEventListener('pointermove', onPointerMove);
162
203
  window.removeEventListener('pointerup', onPointerUp);
163
204
  window.removeEventListener('pointercancel', onPointerUp);
205
+ window.removeEventListener('keydown', onKeyChange);
206
+ window.removeEventListener('keyup', onKeyChange);
164
207
  (0, ForceSpecificCursor_1.stopForcingSpecificCursor)();
165
208
  onDraggingChange(false);
166
209
  if (last === null || (0, selected_outline_drag_1.uvsEqual)(last.uv, uv)) {
@@ -242,6 +285,8 @@ const SelectedOutlineTransformOriginHandle = ({ outline, onDraggingChange, targe
242
285
  window.addEventListener('pointermove', onPointerMove);
243
286
  window.addEventListener('pointerup', onPointerUp);
244
287
  window.addEventListener('pointercancel', onPointerUp);
288
+ window.addEventListener('keydown', onKeyChange);
289
+ window.addEventListener('keyup', onKeyChange);
245
290
  }, [
246
291
  clearDragOverrides,
247
292
  onDraggingChange,
@@ -258,7 +303,9 @@ const SelectedOutlineTransformOriginHandle = ({ outline, onDraggingChange, targe
258
303
  position === null) {
259
304
  return null;
260
305
  }
261
- return (jsx_runtime_1.jsxs("g", { pointerEvents: "all", cursor: "crosshair", onPointerDown: onPointerDown, "aria-hidden": "true", children: [
306
+ return (jsx_runtime_1.jsxs("g", { pointerEvents: "all", cursor: "crosshair", onPointerDown: onPointerDown, "aria-hidden": "true", style: {
307
+ filter: 'drop-shadow(0 0 1px rgba(255, 255, 255, 0.2))',
308
+ }, children: [
262
309
  jsx_runtime_1.jsx("circle", { cx: position.x, cy: position.y, r: 4, stroke: colors_1.BLUE, fill: "none", strokeWidth: 2, vectorEffect: "non-scaling-stroke" }), jsx_runtime_1.jsx("line", { x1: position.x - 8, y1: position.y, x2: position.x + 8, y2: position.y, stroke: colors_1.BLUE, strokeWidth: 2, vectorEffect: "non-scaling-stroke" }), jsx_runtime_1.jsx("line", { x1: position.x, y1: position.y - 8, x2: position.x, y2: position.y + 8, stroke: colors_1.BLUE, strokeWidth: 2, vectorEffect: "non-scaling-stroke" })
263
310
  ] }));
264
311
  };
@@ -506,8 +553,6 @@ const SelectedOutlineScaleEdgeLine = ({ allScaleDragTargets, contextMenuValues,
506
553
  if (interaction.shiftKey || interaction.toggleKey) {
507
554
  return;
508
555
  }
509
- onDraggingChange(true);
510
- (0, ForceSpecificCursor_1.forceSpecificCursor)(edgeInfo.cursor);
511
556
  const startPointer = { x: event.clientX, y: event.clientY };
512
557
  const dragStates = (0, selected_outline_drag_1.getSelectedOutlineScaleDragStates)({
513
558
  dragTargets: selected ? allScaleDragTargets : [scaleDrag],
@@ -515,12 +560,24 @@ const SelectedOutlineScaleEdgeLine = ({ allScaleDragTargets, contextMenuValues,
515
560
  timelinePosition: timelinePositionRef.current,
516
561
  });
517
562
  let lastValues = new Map();
563
+ let dragStarted = false;
518
564
  const onPointerMove = (moveEvent) => {
519
565
  moveEvent.preventDefault();
520
566
  const delta = {
521
567
  x: moveEvent.clientX - startPointer.x,
522
568
  y: moveEvent.clientY - startPointer.y,
523
569
  };
570
+ if (!dragStarted) {
571
+ if (!(0, selected_outline_drag_1.isSelectedOutlineDragPastThreshold)({
572
+ deltaX: delta.x,
573
+ deltaY: delta.y,
574
+ })) {
575
+ return;
576
+ }
577
+ dragStarted = true;
578
+ onDraggingChange(true);
579
+ (0, ForceSpecificCursor_1.forceSpecificCursor)(edgeInfo.cursor);
580
+ }
524
581
  const projectedDelta = (0, selected_outline_measurement_1.dot)(delta, edgeInfo.normal);
525
582
  const scaleFactor = Math.max(0.001, 1 + projectedDelta / edgeInfo.extent);
526
583
  lastValues = (0, selected_outline_drag_1.getSelectedOutlineScaleDragValues)({
@@ -549,8 +606,10 @@ const SelectedOutlineScaleEdgeLine = ({ allScaleDragTargets, contextMenuValues,
549
606
  window.removeEventListener('pointermove', onPointerMove);
550
607
  window.removeEventListener('pointerup', onPointerUp);
551
608
  window.removeEventListener('pointercancel', onPointerUp);
552
- (0, ForceSpecificCursor_1.stopForcingSpecificCursor)();
553
- onDraggingChange(false);
609
+ if (dragStarted) {
610
+ (0, ForceSpecificCursor_1.stopForcingSpecificCursor)();
611
+ onDraggingChange(false);
612
+ }
554
613
  const changes = (0, selected_outline_drag_1.getSelectedOutlineScaleDragChanges)({
555
614
  dragStates,
556
615
  lastValues,
@@ -658,15 +717,17 @@ const SelectedOutlineRotationCornerHandle = ({ allRotationDragTargets, contextMe
658
717
  return;
659
718
  }
660
719
  const interaction = (0, selected_outline_measurement_1.getOutlineSelectionInteraction)(event);
661
- const shouldUpdateSelection = !selected || interaction.shiftKey || interaction.toggleKey;
720
+ const shouldUpdateSelection = !selected || interaction.toggleKey;
662
721
  if (shouldUpdateSelection && target !== undefined) {
663
- onSelect(target.selection, interaction);
722
+ onSelect(target.selection, {
723
+ shiftKey: false,
724
+ toggleKey: interaction.toggleKey,
725
+ });
664
726
  }
665
- if (interaction.shiftKey || interaction.toggleKey) {
727
+ if (interaction.toggleKey) {
666
728
  return;
667
729
  }
668
- onDraggingChange(true);
669
- (0, ForceSpecificCursor_1.forceSpecificCursor)(cornerInfo.cursor);
730
+ const startPointer = { x: event.clientX, y: event.clientY };
670
731
  const svgRect = svg.getBoundingClientRect();
671
732
  const center = svgPointToClientPoint((0, selected_outline_measurement_1.getSelectedOutlineRotationPivot)({
672
733
  dimensions: outline.dimensions,
@@ -683,23 +744,21 @@ const SelectedOutlineRotationCornerHandle = ({ allRotationDragTargets, contextMe
683
744
  y: event.clientY,
684
745
  });
685
746
  let accumulatedDelta = 0;
747
+ let rotationLocked = event.shiftKey;
686
748
  let lastValues = new Map();
687
- const onPointerMove = (moveEvent) => {
688
- moveEvent.preventDefault();
689
- const nextAngle = (0, selected_outline_measurement_1.getAngleDegrees)(center, {
690
- x: moveEvent.clientX,
691
- y: moveEvent.clientY,
692
- });
693
- accumulatedDelta += (0, selected_outline_measurement_1.getSelectedOutlineRotationDeltaDegrees)({
694
- from: previousAngle,
695
- to: nextAngle,
696
- });
697
- previousAngle = nextAngle;
749
+ let dragStarted = false;
750
+ const updateRotationDragOverrides = () => {
751
+ const rotationDeltaDegrees = rotationLocked
752
+ ? (0, selected_outline_drag_1.snapSelectedOutlineRotationDeltaDegrees)({
753
+ dragStates,
754
+ rotationDeltaDegrees: accumulatedDelta,
755
+ })
756
+ : accumulatedDelta;
698
757
  lastValues = (0, selected_outline_drag_1.getSelectedOutlineRotationDragValues)({
699
758
  dragStates,
700
- rotationDeltaDegrees: accumulatedDelta,
759
+ rotationDeltaDegrees,
701
760
  });
702
- (0, ForceSpecificCursor_1.forceSpecificCursor)((0, selected_outline_measurement_1.getRotationCursor)(cornerInfo.cursorDegrees + accumulatedDelta));
761
+ (0, ForceSpecificCursor_1.forceSpecificCursor)((0, selected_outline_measurement_1.getRotationCursor)(cornerInfo.cursorDegrees + rotationDeltaDegrees));
703
762
  for (const dragState of dragStates) {
704
763
  const value = lastValues.get(dragState.key);
705
764
  if (value === undefined) {
@@ -717,12 +776,55 @@ const SelectedOutlineRotationCornerHandle = ({ allRotationDragTargets, contextMe
717
776
  }
718
777
  }
719
778
  };
779
+ const onPointerMove = (moveEvent) => {
780
+ moveEvent.preventDefault();
781
+ const screenDeltaX = moveEvent.clientX - startPointer.x;
782
+ const screenDeltaY = moveEvent.clientY - startPointer.y;
783
+ if (!dragStarted) {
784
+ if (!(0, selected_outline_drag_1.isSelectedOutlineDragPastThreshold)({
785
+ deltaX: screenDeltaX,
786
+ deltaY: screenDeltaY,
787
+ })) {
788
+ return;
789
+ }
790
+ dragStarted = true;
791
+ onDraggingChange(true);
792
+ }
793
+ const nextAngle = (0, selected_outline_measurement_1.getAngleDegrees)(center, {
794
+ x: moveEvent.clientX,
795
+ y: moveEvent.clientY,
796
+ });
797
+ accumulatedDelta += (0, selected_outline_measurement_1.getSelectedOutlineRotationDeltaDegrees)({
798
+ from: previousAngle,
799
+ to: nextAngle,
800
+ });
801
+ previousAngle = nextAngle;
802
+ rotationLocked = moveEvent.shiftKey;
803
+ updateRotationDragOverrides();
804
+ };
805
+ const onKeyChange = (keyEvent) => {
806
+ if (keyEvent.key !== 'Shift') {
807
+ return;
808
+ }
809
+ const nextRotationLocked = keyEvent.type === 'keydown';
810
+ if (nextRotationLocked === rotationLocked) {
811
+ return;
812
+ }
813
+ rotationLocked = nextRotationLocked;
814
+ if (dragStarted) {
815
+ updateRotationDragOverrides();
816
+ }
817
+ };
720
818
  const onPointerUp = () => {
721
819
  window.removeEventListener('pointermove', onPointerMove);
722
820
  window.removeEventListener('pointerup', onPointerUp);
723
821
  window.removeEventListener('pointercancel', onPointerUp);
724
- (0, ForceSpecificCursor_1.stopForcingSpecificCursor)();
725
- onDraggingChange(false);
822
+ window.removeEventListener('keydown', onKeyChange);
823
+ window.removeEventListener('keyup', onKeyChange);
824
+ if (dragStarted) {
825
+ (0, ForceSpecificCursor_1.stopForcingSpecificCursor)();
826
+ onDraggingChange(false);
827
+ }
726
828
  const changes = (0, selected_outline_drag_1.getSelectedOutlineRotationDragChanges)({
727
829
  dragStates,
728
830
  lastValues,
@@ -774,6 +876,8 @@ const SelectedOutlineRotationCornerHandle = ({ allRotationDragTargets, contextMe
774
876
  window.addEventListener('pointermove', onPointerMove);
775
877
  window.addEventListener('pointerup', onPointerUp);
776
878
  window.addEventListener('pointercancel', onPointerUp);
879
+ window.addEventListener('keydown', onKeyChange);
880
+ window.addEventListener('keyup', onKeyChange);
777
881
  }, [
778
882
  allRotationDragTargets,
779
883
  clearDragOverrides,
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- export { applySelectedOutlineDragAxisLock, compensateTranslateForTransformOrigin, getSelectedOutlineDragChanges, getSelectedOutlineDragValues, getSelectedOutlineKeyboardNudgeDelta, getSelectedOutlineKeyboardNudgeDeltas, getSelectedOutlineRotationDragChanges, getSelectedOutlineRotationDragStates, getSelectedOutlineRotationDragValues, getSelectedOutlineScaleDragChanges, getSelectedOutlineScaleDragStates, getSelectedOutlineScaleDragValues, getSelectedOutlineScaleEdgeInfo, isSelectedOutlineDragPastThreshold, } from './selected-outline-drag';
2
+ export { applySelectedOutlineDragAxisLock, applySelectedOutlineTransformOriginAxisLock, compensateTranslateForTransformOrigin, getSelectedOutlineActiveSchema, getSelectedOutlineDragChanges, getSelectedOutlineDragValues, getSelectedOutlineKeyboardNudgeDelta, getSelectedOutlineKeyboardNudgeDeltas, getSelectedOutlineRotationDragChanges, getSelectedOutlineRotationDragStates, getSelectedOutlineRotationDragValues, getSelectedOutlineScaleDragChanges, getSelectedOutlineScaleDragStates, getSelectedOutlineScaleDragValues, getSelectedOutlineScaleEdgeInfo, getSelectedOutlineTransformOriginLockedAxis, isSelectedOutlineDragPastThreshold, selectedOutlineUvSnapThresholdPx, selectedOutlineTransformOriginSnapThresholdPx, snapSelectedOutlineRotationDeltaDegrees, snapSelectedOutlineUv, snapSelectedOutlineTransformOriginUv, } from './selected-outline-drag';
3
3
  export { getOutlineSelectionInteraction, getSelectedEffectFieldsBySequenceKey, getSelectedOutlineRotationCornerInfo, getSelectedOutlineRotationDeltaDegrees, getSelectedOutlineRotationPivot, getSelectedSequenceKeys, getSequencesWithSelectableOutlines, getTransformedSvgViewportPoints, } from './selected-outline-measurement';
4
4
  export { selectedOutlineDragThresholdPx } from './selected-outline-types';
5
5
  export type { SelectedOutlineDragState, SelectedOutlineRotationDragState, SelectedOutlineScaleDragState, } from './selected-outline-types';
@@ -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.selectedOutlineDragThresholdPx = exports.getTransformedSvgViewportPoints = exports.getSequencesWithSelectableOutlines = exports.getSelectedSequenceKeys = exports.getSelectedOutlineRotationPivot = exports.getSelectedOutlineRotationDeltaDegrees = exports.getSelectedOutlineRotationCornerInfo = exports.getSelectedEffectFieldsBySequenceKey = exports.getOutlineSelectionInteraction = exports.isSelectedOutlineDragPastThreshold = exports.getSelectedOutlineScaleEdgeInfo = exports.getSelectedOutlineScaleDragValues = exports.getSelectedOutlineScaleDragStates = exports.getSelectedOutlineScaleDragChanges = exports.getSelectedOutlineRotationDragValues = exports.getSelectedOutlineRotationDragStates = exports.getSelectedOutlineRotationDragChanges = exports.getSelectedOutlineKeyboardNudgeDeltas = exports.getSelectedOutlineKeyboardNudgeDelta = exports.getSelectedOutlineDragValues = exports.getSelectedOutlineDragChanges = exports.compensateTranslateForTransformOrigin = exports.applySelectedOutlineDragAxisLock = void 0;
36
+ exports.SelectedOutlineOverlay = exports.selectedOutlineDragThresholdPx = exports.getTransformedSvgViewportPoints = exports.getSequencesWithSelectableOutlines = exports.getSelectedSequenceKeys = exports.getSelectedOutlineRotationPivot = exports.getSelectedOutlineRotationDeltaDegrees = exports.getSelectedOutlineRotationCornerInfo = exports.getSelectedEffectFieldsBySequenceKey = exports.getOutlineSelectionInteraction = exports.snapSelectedOutlineTransformOriginUv = exports.snapSelectedOutlineUv = exports.snapSelectedOutlineRotationDeltaDegrees = exports.selectedOutlineTransformOriginSnapThresholdPx = exports.selectedOutlineUvSnapThresholdPx = exports.isSelectedOutlineDragPastThreshold = exports.getSelectedOutlineTransformOriginLockedAxis = 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;
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"));
@@ -57,7 +57,9 @@ const timeline_scroll_logic_1 = require("./Timeline/timeline-scroll-logic");
57
57
  const TimelineSelection_1 = require("./Timeline/TimelineSelection");
58
58
  const selected_outline_drag_2 = require("./selected-outline-drag");
59
59
  Object.defineProperty(exports, "applySelectedOutlineDragAxisLock", { enumerable: true, get: function () { return selected_outline_drag_2.applySelectedOutlineDragAxisLock; } });
60
+ Object.defineProperty(exports, "applySelectedOutlineTransformOriginAxisLock", { enumerable: true, get: function () { return selected_outline_drag_2.applySelectedOutlineTransformOriginAxisLock; } });
60
61
  Object.defineProperty(exports, "compensateTranslateForTransformOrigin", { enumerable: true, get: function () { return selected_outline_drag_2.compensateTranslateForTransformOrigin; } });
62
+ Object.defineProperty(exports, "getSelectedOutlineActiveSchema", { enumerable: true, get: function () { return selected_outline_drag_2.getSelectedOutlineActiveSchema; } });
61
63
  Object.defineProperty(exports, "getSelectedOutlineDragChanges", { enumerable: true, get: function () { return selected_outline_drag_2.getSelectedOutlineDragChanges; } });
62
64
  Object.defineProperty(exports, "getSelectedOutlineDragValues", { enumerable: true, get: function () { return selected_outline_drag_2.getSelectedOutlineDragValues; } });
63
65
  Object.defineProperty(exports, "getSelectedOutlineKeyboardNudgeDelta", { enumerable: true, get: function () { return selected_outline_drag_2.getSelectedOutlineKeyboardNudgeDelta; } });
@@ -69,7 +71,13 @@ Object.defineProperty(exports, "getSelectedOutlineScaleDragChanges", { enumerabl
69
71
  Object.defineProperty(exports, "getSelectedOutlineScaleDragStates", { enumerable: true, get: function () { return selected_outline_drag_2.getSelectedOutlineScaleDragStates; } });
70
72
  Object.defineProperty(exports, "getSelectedOutlineScaleDragValues", { enumerable: true, get: function () { return selected_outline_drag_2.getSelectedOutlineScaleDragValues; } });
71
73
  Object.defineProperty(exports, "getSelectedOutlineScaleEdgeInfo", { enumerable: true, get: function () { return selected_outline_drag_2.getSelectedOutlineScaleEdgeInfo; } });
74
+ Object.defineProperty(exports, "getSelectedOutlineTransformOriginLockedAxis", { enumerable: true, get: function () { return selected_outline_drag_2.getSelectedOutlineTransformOriginLockedAxis; } });
72
75
  Object.defineProperty(exports, "isSelectedOutlineDragPastThreshold", { enumerable: true, get: function () { return selected_outline_drag_2.isSelectedOutlineDragPastThreshold; } });
76
+ Object.defineProperty(exports, "selectedOutlineUvSnapThresholdPx", { enumerable: true, get: function () { return selected_outline_drag_2.selectedOutlineUvSnapThresholdPx; } });
77
+ Object.defineProperty(exports, "selectedOutlineTransformOriginSnapThresholdPx", { enumerable: true, get: function () { return selected_outline_drag_2.selectedOutlineTransformOriginSnapThresholdPx; } });
78
+ Object.defineProperty(exports, "snapSelectedOutlineRotationDeltaDegrees", { enumerable: true, get: function () { return selected_outline_drag_2.snapSelectedOutlineRotationDeltaDegrees; } });
79
+ Object.defineProperty(exports, "snapSelectedOutlineUv", { enumerable: true, get: function () { return selected_outline_drag_2.snapSelectedOutlineUv; } });
80
+ Object.defineProperty(exports, "snapSelectedOutlineTransformOriginUv", { enumerable: true, get: function () { return selected_outline_drag_2.snapSelectedOutlineTransformOriginUv; } });
73
81
  const selected_outline_measurement_2 = require("./selected-outline-measurement");
74
82
  Object.defineProperty(exports, "getOutlineSelectionInteraction", { enumerable: true, get: function () { return selected_outline_measurement_2.getOutlineSelectionInteraction; } });
75
83
  Object.defineProperty(exports, "getSelectedEffectFieldsBySequenceKey", { enumerable: true, get: function () { return selected_outline_measurement_2.getSelectedEffectFieldsBySequenceKey; } });
@@ -127,8 +135,7 @@ const SelectedOutlineOverlay = ({ scale }) => {
127
135
  sequences,
128
136
  overrideIdsToNodePaths: overrideIdToNodePathMappings,
129
137
  }).map(({ key, keyframeDisplayOffset, nodePathInfo, sequence }) => {
130
- var _a;
131
- var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
138
+ var _a, _b, _c, _d, _e, _f;
132
139
  if (sequence.refForOutline === null) {
133
140
  throw new Error('Expected sequence to have a ref for outline');
134
141
  }
@@ -136,26 +143,36 @@ const SelectedOutlineOverlay = ({ scale }) => {
136
143
  const containsSelection = sequenceKeysContainingSelection.has(key);
137
144
  const nodePath = nodePathInfo.sequenceSubscriptionKey;
138
145
  const { controls } = sequence;
139
- const fieldSchema = controls === null || controls === void 0 ? void 0 : controls.schema[selected_outline_types_1.translateFieldKey];
140
146
  const nodePropStatuses = remotion_1.Internals.getPropStatusesCtx(propStatuses, nodePath);
147
+ const sourceFrame = timelinePosition - keyframeDisplayOffset;
148
+ const dragOverrides = (_a = getDragOverrides(nodePath)) !== null && _a !== void 0 ? _a : {};
149
+ const activeSchema = controls
150
+ ? (0, selected_outline_drag_1.getSelectedOutlineActiveSchema)({
151
+ schema: controls.schema,
152
+ currentRuntimeValueDotNotation: controls.currentRuntimeValueDotNotation,
153
+ dragOverrides,
154
+ propStatus: nodePropStatuses,
155
+ frame: sourceFrame,
156
+ })
157
+ : null;
158
+ const fieldSchema = activeSchema === null || activeSchema === void 0 ? void 0 : activeSchema[selected_outline_types_1.translateFieldKey];
141
159
  const propStatus = nodePropStatuses === null || nodePropStatuses === void 0 ? void 0 : nodePropStatuses[selected_outline_types_1.translateFieldKey];
142
- const scaleFieldSchema = controls === null || controls === void 0 ? void 0 : controls.schema[selected_outline_types_1.scaleFieldKey];
160
+ const scaleFieldSchema = activeSchema === null || activeSchema === void 0 ? void 0 : activeSchema[selected_outline_types_1.scaleFieldKey];
143
161
  const scalePropStatus = nodePropStatuses === null || nodePropStatuses === void 0 ? void 0 : nodePropStatuses[selected_outline_types_1.scaleFieldKey];
144
- const rotationFieldSchema = controls === null || controls === void 0 ? void 0 : controls.schema[selected_outline_types_1.rotateFieldKey];
145
- const rotationPropStatus = (_a = remotion_1.Internals.getPropStatusesCtx(propStatuses, nodePath)) === null || _a === void 0 ? void 0 : _a[selected_outline_types_1.rotateFieldKey];
146
- const transformOriginFieldSchema = controls === null || controls === void 0 ? void 0 : controls.schema[selected_outline_types_1.transformOriginFieldKey];
162
+ const rotationFieldSchema = activeSchema === null || activeSchema === void 0 ? void 0 : activeSchema[selected_outline_types_1.rotateFieldKey];
163
+ const rotationPropStatus = nodePropStatuses === null || nodePropStatuses === void 0 ? void 0 : nodePropStatuses[selected_outline_types_1.rotateFieldKey];
164
+ const transformOriginFieldSchema = activeSchema === null || activeSchema === void 0 ? void 0 : activeSchema[selected_outline_types_1.transformOriginFieldKey];
147
165
  const transformOriginPropStatus = nodePropStatuses === null || nodePropStatuses === void 0 ? void 0 : nodePropStatuses[selected_outline_types_1.transformOriginFieldKey];
148
- const rotationSourceFrame = timelinePosition - keyframeDisplayOffset;
149
166
  const transformOriginValueForRotation = (transformOriginFieldSchema === null || transformOriginFieldSchema === void 0 ? void 0 : transformOriginFieldSchema.type) === 'transform-origin' &&
150
167
  ((transformOriginPropStatus === null || transformOriginPropStatus === void 0 ? void 0 : transformOriginPropStatus.status) === 'static' ||
151
168
  (transformOriginPropStatus === null || transformOriginPropStatus === void 0 ? void 0 : transformOriginPropStatus.status) === 'keyframed')
152
- ? String((_c = remotion_1.Internals.getEffectiveVisualModeValue({
169
+ ? String((_b = remotion_1.Internals.getEffectiveVisualModeValue({
153
170
  propStatus: transformOriginPropStatus,
154
- dragOverrideValue: ((_b = getDragOverrides(nodePath)) !== null && _b !== void 0 ? _b : {})[selected_outline_types_1.transformOriginFieldKey],
171
+ dragOverrideValue: dragOverrides[selected_outline_types_1.transformOriginFieldKey],
155
172
  defaultValue: transformOriginFieldSchema.default,
156
- frame: rotationSourceFrame,
173
+ frame: sourceFrame,
157
174
  shouldResortToDefaultValueIfUndefined: true,
158
- })) !== null && _c !== void 0 ? _c : transformOriginFieldSchema.default)
175
+ })) !== null && _b !== void 0 ? _b : transformOriginFieldSchema.default)
159
176
  : '50% 50%';
160
177
  const canDragStatus = (propStatus === null || propStatus === void 0 ? void 0 : propStatus.status) === 'static' ||
161
178
  ((propStatus === null || propStatus === void 0 ? void 0 : propStatus.status) === 'keyframed' &&
@@ -181,7 +198,7 @@ const SelectedOutlineOverlay = ({ scale }) => {
181
198
  const selectedForTransformOrigin = (selectedTransformOriginInfo === null || selectedTransformOriginInfo === void 0 ? void 0 : selectedTransformOriginInfo.sequenceKey) === key;
182
199
  const transformOriginSourceFrame = (selectedTransformOriginInfo === null || selectedTransformOriginInfo === void 0 ? void 0 : selectedTransformOriginInfo.displayFrame) === null ||
183
200
  (selectedTransformOriginInfo === null || selectedTransformOriginInfo === void 0 ? void 0 : selectedTransformOriginInfo.displayFrame) === undefined
184
- ? timelinePosition - keyframeDisplayOffset
201
+ ? sourceFrame
185
202
  : selectedTransformOriginInfo.displayFrame - keyframeDisplayOffset;
186
203
  const canTransformOriginStatus = (transformOriginPropStatus === null || transformOriginPropStatus === void 0 ? void 0 : transformOriginPropStatus.status) === 'static' ||
187
204
  ((transformOriginPropStatus === null || transformOriginPropStatus === void 0 ? void 0 : transformOriginPropStatus.status) === 'keyframed' &&
@@ -234,8 +251,7 @@ const SelectedOutlineOverlay = ({ scale }) => {
234
251
  nodePath,
235
252
  fieldKey: selected_outline_types_1.scaleFieldKey,
236
253
  defaultValue: (() => {
237
- var _a;
238
- const dragOverrideValue = ((_a = getDragOverrides(nodePath)) !== null && _a !== void 0 ? _a : {})[selected_outline_types_1.scaleFieldKey];
254
+ const dragOverrideValue = dragOverrides[selected_outline_types_1.scaleFieldKey];
239
255
  const effectiveValue = remotion_1.Internals.getEffectiveVisualModeValue({
240
256
  propStatus: scalePropStatus,
241
257
  dragOverrideValue,
@@ -269,48 +285,48 @@ const SelectedOutlineOverlay = ({ scale }) => {
269
285
  nodePath,
270
286
  originDefault: transformOriginFieldSchema.default,
271
287
  originPropStatus: transformOriginPropStatus,
272
- originValue: String((_e = remotion_1.Internals.getEffectiveVisualModeValue({
288
+ originValue: String((_c = remotion_1.Internals.getEffectiveVisualModeValue({
273
289
  propStatus: transformOriginPropStatus,
274
- dragOverrideValue: ((_d = getDragOverrides(nodePath)) !== null && _d !== void 0 ? _d : {})[selected_outline_types_1.transformOriginFieldKey],
290
+ dragOverrideValue: dragOverrides[selected_outline_types_1.transformOriginFieldKey],
275
291
  defaultValue: transformOriginFieldSchema.default,
276
292
  frame: transformOriginSourceFrame,
277
293
  shouldResortToDefaultValueIfUndefined: true,
278
- })) !== null && _e !== void 0 ? _e : transformOriginFieldSchema.default),
294
+ })) !== null && _c !== void 0 ? _c : transformOriginFieldSchema.default),
279
295
  rotateValue: String((rotationPropStatus === null || rotationPropStatus === void 0 ? void 0 : rotationPropStatus.status) === 'static' ||
280
296
  (rotationPropStatus === null || rotationPropStatus === void 0 ? void 0 : rotationPropStatus.status) === 'keyframed'
281
- ? ((_g = remotion_1.Internals.getEffectiveVisualModeValue({
297
+ ? ((_d = remotion_1.Internals.getEffectiveVisualModeValue({
282
298
  propStatus: rotationPropStatus,
283
- dragOverrideValue: ((_f = getDragOverrides(nodePath)) !== null && _f !== void 0 ? _f : {})[selected_outline_types_1.rotateFieldKey],
299
+ dragOverrideValue: dragOverrides[selected_outline_types_1.rotateFieldKey],
284
300
  defaultValue: (rotationFieldSchema === null || rotationFieldSchema === void 0 ? void 0 : rotationFieldSchema.type) === 'rotation-css'
285
301
  ? rotationFieldSchema.default
286
302
  : '0deg',
287
303
  frame: transformOriginSourceFrame,
288
304
  shouldResortToDefaultValueIfUndefined: true,
289
- })) !== null && _g !== void 0 ? _g : '0deg')
305
+ })) !== null && _d !== void 0 ? _d : '0deg')
290
306
  : '0deg'),
291
307
  scaleValue: (scalePropStatus === null || scalePropStatus === void 0 ? void 0 : scalePropStatus.status) === 'static' ||
292
308
  (scalePropStatus === null || scalePropStatus === void 0 ? void 0 : scalePropStatus.status) === 'keyframed'
293
- ? String((_j = remotion_1.Internals.getEffectiveVisualModeValue({
309
+ ? String((_e = remotion_1.Internals.getEffectiveVisualModeValue({
294
310
  propStatus: scalePropStatus,
295
- dragOverrideValue: ((_h = getDragOverrides(nodePath)) !== null && _h !== void 0 ? _h : {})[selected_outline_types_1.scaleFieldKey],
311
+ dragOverrideValue: dragOverrides[selected_outline_types_1.scaleFieldKey],
296
312
  defaultValue: (scaleFieldSchema === null || scaleFieldSchema === void 0 ? void 0 : scaleFieldSchema.type) === 'scale'
297
313
  ? scaleFieldSchema.default
298
314
  : 1,
299
315
  frame: transformOriginSourceFrame,
300
316
  shouldResortToDefaultValueIfUndefined: true,
301
- })) !== null && _j !== void 0 ? _j : 1)
317
+ })) !== null && _e !== void 0 ? _e : 1)
302
318
  : '1',
303
319
  schema: controls.schema,
304
320
  sourceFrame: transformOriginSourceFrame,
305
321
  translateDefault: fieldSchema.default,
306
322
  translatePropStatus: propStatus,
307
- translateValue: String((_l = remotion_1.Internals.getEffectiveVisualModeValue({
323
+ translateValue: String((_f = remotion_1.Internals.getEffectiveVisualModeValue({
308
324
  propStatus,
309
- dragOverrideValue: ((_k = getDragOverrides(nodePath)) !== null && _k !== void 0 ? _k : {})[selected_outline_types_1.translateFieldKey],
325
+ dragOverrideValue: dragOverrides[selected_outline_types_1.translateFieldKey],
310
326
  defaultValue: fieldSchema.default,
311
327
  frame: transformOriginSourceFrame,
312
328
  shouldResortToDefaultValueIfUndefined: true,
313
- })) !== null && _l !== void 0 ? _l : fieldSchema.default),
329
+ })) !== null && _f !== void 0 ? _f : fieldSchema.default),
314
330
  }
315
331
  : null,
316
332
  uvHandles: containsSelection
@@ -604,6 +620,6 @@ const SelectedOutlineOverlay = ({ scale }) => {
604
620
  if (outlineTargets.length === 0) {
605
621
  return null;
606
622
  }
607
- return (jsx_runtime_1.jsxs("svg", { ref: overlayRef, style: outlineContainer, width: "100%", height: "100%", "aria-hidden": "true", children: [outlines.map((outline) => (jsx_runtime_1.jsx(SelectedOutlineElement_1.SelectedOutlineElement, { allDragTargets: allDragTargets, allRotationDragTargets: allRotationDragTargets, allScaleDragTargets: allScaleDragTargets, dragging: draggingOutline, hovered: hoveredOutlineKey === outline.key, outline: outline, onDraggingChange: onDraggingChange, onHoverChange: setHoveredOutlineKey, onSelect: selectItem, scale: scale, target: targetsByKey.get(outline.key) }, outline.key))), outlines.map((outline) => (jsx_runtime_1.jsx(SelectedOutlineUvControls_1.SelectedOutlineUvHandleConnectionLayer, { outline: outline, target: targetsByKey.get(outline.key) }, `${outline.key}-uv-connection-lines`))), outlines.map((outline) => (jsx_runtime_1.jsx(SelectedOutlineUvControls_1.SelectedOutlineUvHandleCircleLayer, { onDraggingChange: onDraggingChange, outline: outline, target: targetsByKey.get(outline.key) }, `${outline.key}-uv-handles`)))] }));
623
+ return (jsx_runtime_1.jsxs("svg", { ref: overlayRef, style: outlineContainer, width: "100%", height: "100%", "aria-hidden": "true", children: [outlines.map((outline) => (jsx_runtime_1.jsx(SelectedOutlineElement_1.SelectedOutlineElement, { allDragTargets: allDragTargets, allRotationDragTargets: allRotationDragTargets, allScaleDragTargets: allScaleDragTargets, dragging: draggingOutline, hovered: hoveredOutlineKey === outline.key, outline: outline, onDraggingChange: onDraggingChange, onHoverChange: setHoveredOutlineKey, onSelect: selectItem, scale: scale, target: targetsByKey.get(outline.key) }, outline.key))), outlines.map((outline) => (jsx_runtime_1.jsx(SelectedOutlineUvControls_1.SelectedOutlineUvHandleConnectionLayer, { outline: outline, target: targetsByKey.get(outline.key) }, `${outline.key}-uv-connection-lines`))), outlines.map((outline) => (jsx_runtime_1.jsx(SelectedOutlineUvControls_1.SelectedOutlineUvHandleCircleLayer, { onDraggingChange: onDraggingChange, onSelect: selectItem, outline: outline, target: targetsByKey.get(outline.key) }, `${outline.key}-uv-handles`)))] }));
608
624
  };
609
625
  exports.SelectedOutlineOverlay = SelectedOutlineOverlay;
@@ -1,8 +1,16 @@
1
1
  import React from 'react';
2
+ import type { SequenceNodePathInfo } from '../helpers/get-timeline-sequence-sort-key';
2
3
  import type { SelectedOutline } from './selected-outline-geometry';
3
4
  import { type SelectedOutlineUvHandle } from './selected-outline-uv';
5
+ import type { TimelineSelection, TimelineSelectionInteraction } from './Timeline/TimelineSelection';
6
+ export declare const getSelectedOutlineUvHandleTimelineSelection: ({ effectIndex, fieldKey, nodePathInfo, }: {
7
+ readonly effectIndex: number;
8
+ readonly fieldKey: string;
9
+ readonly nodePathInfo: SequenceNodePathInfo;
10
+ }) => TimelineSelection;
4
11
  type UvTarget = {
5
12
  readonly containsSelection: boolean;
13
+ readonly nodePathInfo: SequenceNodePathInfo;
6
14
  readonly uvHandles: readonly SelectedOutlineUvHandle[];
7
15
  };
8
16
  export declare const SelectedOutlineUvHandleConnectionLayer: React.FC<{
@@ -11,6 +19,7 @@ export declare const SelectedOutlineUvHandleConnectionLayer: React.FC<{
11
19
  }>;
12
20
  export declare const SelectedOutlineUvHandleCircleLayer: React.FC<{
13
21
  readonly onDraggingChange: (dragging: boolean) => void;
22
+ readonly onSelect: (item: TimelineSelection, interaction?: TimelineSelectionInteraction) => void;
14
23
  readonly outline: SelectedOutline;
15
24
  readonly target: UvTarget | undefined;
16
25
  }>;