@remotion/studio 4.0.502 → 4.0.503

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 (121) hide show
  1. package/dist/components/AssetSelectorItem.js +2 -2
  2. package/dist/components/Canvas.js +34 -54
  3. package/dist/components/ColorPicker/AlphaSlider.js +14 -10
  4. package/dist/components/ColorPicker/HueSlider.js +14 -10
  5. package/dist/components/ColorPicker/SaturationValueArea.js +14 -12
  6. package/dist/components/CompositionContextButton.js +1 -1
  7. package/dist/components/ConfigureDefaultEditorModal.d.ts +2 -0
  8. package/dist/components/ConfigureDefaultEditorModal.js +151 -0
  9. package/dist/components/ConfirmationDialog.js +6 -3
  10. package/dist/components/ContextMenu.js +0 -2
  11. package/dist/components/Editor.js +1 -4
  12. package/dist/components/EditorGuides/Guide.js +48 -74
  13. package/dist/components/EditorRuler/Ruler.d.ts +1 -0
  14. package/dist/components/EditorRuler/Ruler.js +3 -1
  15. package/dist/components/EditorRuler/index.js +26 -23
  16. package/dist/components/ElementInstallConfirmation.d.ts +12 -0
  17. package/dist/components/ElementInstallConfirmation.js +205 -0
  18. package/dist/components/ForceSpecificCursor.js +14 -0
  19. package/dist/components/InlineAction.d.ts +2 -1
  20. package/dist/components/InlineAction.js +3 -3
  21. package/dist/components/InspectorLocationCopy.d.ts +1 -0
  22. package/dist/components/InspectorLocationCopy.js +7 -3
  23. package/dist/components/InspectorOpenInEditor.d.ts +5 -0
  24. package/dist/components/InspectorOpenInEditor.js +135 -0
  25. package/dist/components/InspectorPanel/AlignmentControls.js +1 -1
  26. package/dist/components/InspectorPanel/CompositionInspectorHeader.js +3 -3
  27. package/dist/components/InspectorPanel/CompositionMetadata.js +1 -1
  28. package/dist/components/InspectorPanel/KeyframeEasingNavigator.js +2 -2
  29. package/dist/components/InspectorPanel/SequenceInspectorHeader.js +2 -2
  30. package/dist/components/InspectorSequenceSection.js +2 -2
  31. package/dist/components/Menu/MenuItem.js +13 -6
  32. package/dist/components/Menu/MenuSubItem.js +3 -1
  33. package/dist/components/MenuBuildIndicator.js +1 -1
  34. package/dist/components/MenuCompositionName.js +1 -1
  35. package/dist/components/MobilePanel.js +5 -1
  36. package/dist/components/ModalContainer.js +1 -1
  37. package/dist/components/ModalFooter.d.ts +1 -0
  38. package/dist/components/ModalFooter.js +2 -2
  39. package/dist/components/Modals.js +11 -2
  40. package/dist/components/NewComposition/InputDragger.js +19 -29
  41. package/dist/components/PreviewToolbarOverflowButton.js +1 -1
  42. package/dist/components/RenderModal/InlineEyeIcon.js +1 -1
  43. package/dist/components/RenderModal/InlineRemoveButton.js +1 -1
  44. package/dist/components/RenderModal/RenderModalOutputName.js +1 -1
  45. package/dist/components/RenderModal/SchemaEditor/SchemaResetButton.js +1 -1
  46. package/dist/components/RenderQueue/RenderQueueCopyToClipboard.js +1 -1
  47. package/dist/components/RenderQueue/RenderQueueDownloadItem.js +1 -1
  48. package/dist/components/RenderQueue/RenderQueueItemCancelButton.js +1 -1
  49. package/dist/components/RenderQueue/RenderQueueOpenInFolder.js +1 -1
  50. package/dist/components/RenderQueue/RenderQueueRemoveItem.js +1 -1
  51. package/dist/components/RenderQueue/RenderQueueRepeat.js +1 -1
  52. package/dist/components/SelectedOutlineCropControls.js +7 -6
  53. package/dist/components/SelectedOutlineElement.js +28 -26
  54. package/dist/components/SelectedOutlineUvControls.js +25 -24
  55. package/dist/components/ShowGuidesProvider.js +2 -0
  56. package/dist/components/SidebarCollapserControls.js +2 -2
  57. package/dist/components/SidebarRenderButton.js +1 -1
  58. package/dist/components/Splitter/SplitterHandle.js +17 -68
  59. package/dist/components/Timeline/EasingEditorModal.js +27 -19
  60. package/dist/components/Timeline/TimelineAssetField.js +1 -1
  61. package/dist/components/Timeline/TimelineDragHandler.js +38 -7
  62. package/dist/components/Timeline/TimelineInOutDragHandler.js +26 -11
  63. package/dist/components/Timeline/TimelineLayerEye.js +36 -4
  64. package/dist/components/Timeline/TimelineSelection.js +14 -21
  65. package/dist/components/Timeline/TimelineSequence.js +7 -3
  66. package/dist/components/Timeline/TimelineSequenceItem.js +24 -18
  67. package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.d.ts +1 -1
  68. package/dist/components/Timeline/TimelineSequenceRightEdgeDragHandle.js +76 -43
  69. package/dist/components/Timeline/TimelineStack/get-stack.js +7 -2
  70. package/dist/components/Timeline/get-sequence-context-menu-items.d.ts +4 -2
  71. package/dist/components/Timeline/get-sequence-context-menu-items.js +38 -2
  72. package/dist/components/Timeline/should-subscribe-to-source-file.d.ts +1 -0
  73. package/dist/components/Timeline/should-subscribe-to-source-file.js +11 -0
  74. package/dist/components/Timeline/use-open-sequence-in-editor.d.ts +3 -1
  75. package/dist/components/Timeline/use-open-sequence-in-editor.js +5 -2
  76. package/dist/components/Timeline/use-sequence-props-subscription.js +2 -0
  77. package/dist/components/Timeline/use-timeline-asset-drop.js +0 -4
  78. package/dist/components/Timeline/use-timeline-keyframe-drag.js +31 -16
  79. package/dist/components/UndoRedoButtons.js +1 -1
  80. package/dist/components/UpdateCheck.d.ts +2 -0
  81. package/dist/components/UpdateCheck.js +12 -7
  82. package/dist/components/UpdateModal/UpdateModal.js +26 -10
  83. package/dist/components/VisualControls/ClickableFileName.js +5 -2
  84. package/dist/components/composition-menu-items.js +1 -1
  85. package/dist/components/element-install-request.d.ts +3 -0
  86. package/dist/components/element-install-request.js +17 -0
  87. package/dist/components/folder-menu-items.js +1 -1
  88. package/dist/components/handle-drop.d.ts +2 -3
  89. package/dist/components/handle-drop.js +11 -4
  90. package/dist/components/import-assets.d.ts +5 -5
  91. package/dist/components/import-assets.js +4 -15
  92. package/dist/components/use-default-editor-info.d.ts +4 -0
  93. package/dist/components/use-default-editor-info.js +47 -0
  94. package/dist/error-overlay/remotion-overlay/OpenInEditor.js +1 -1
  95. package/dist/error-overlay/remotion-overlay/StackFrame.js +1 -1
  96. package/dist/esm/{chunk-fjv75ty4.js → chunk-bj1r1hh5.js} +7068 -6120
  97. package/dist/esm/internals.mjs +7068 -6120
  98. package/dist/esm/previewEntry.mjs +7077 -6129
  99. package/dist/esm/renderEntry.mjs +1 -1
  100. package/dist/helpers/inject-css.js +18 -44
  101. package/dist/helpers/open-in-editor.d.ts +3 -3
  102. package/dist/helpers/open-in-editor.js +10 -6
  103. package/dist/helpers/pointer-session.d.ts +9 -0
  104. package/dist/helpers/pointer-session.js +94 -0
  105. package/dist/helpers/use-menu-structure.js +24 -2
  106. package/dist/icons/custom-editor.d.ts +4 -0
  107. package/dist/icons/custom-editor.js +11 -0
  108. package/dist/icons/editor.d.ts +6 -0
  109. package/dist/icons/editor.js +52 -0
  110. package/dist/state/editor-guides.d.ts +1 -0
  111. package/dist/state/editor-guides.js +1 -0
  112. package/dist/state/modals.d.ts +2 -0
  113. package/dist/state/z-index.d.ts +1 -0
  114. package/dist/state/z-index.js +34 -18
  115. package/package.json +12 -13
  116. package/dist/components/StudioCanvasCapture.d.ts +0 -5
  117. package/dist/components/StudioCanvasCapture.js +0 -40
  118. package/dist/components/canvas-capture-enabled.d.ts +0 -1
  119. package/dist/components/canvas-capture-enabled.js +0 -4
  120. package/dist/components/use-element-overwrite-confirmation.d.ts +0 -2
  121. package/dist/components/use-element-overwrite-confirmation.js +0 -73
@@ -44,6 +44,6 @@ const RenderQueueRepeatItem = ({ job }) => {
44
44
  const renderAction = (0, react_1.useCallback)((color) => {
45
45
  return (jsx_runtime_1.jsx("svg", { style: icon, viewBox: "0 0 512 512", children: jsx_runtime_1.jsx("path", { fill: color, d: "M386.3 160H336c-17.7 0-32 14.3-32 32s14.3 32 32 32H464c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32s-32 14.3-32 32v51.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0s-87.5 229.3 0 316.8s229.3 87.5 316.8 0c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3s163.8-62.5 226.3 0L386.3 160z" }) }));
46
46
  }, [icon]);
47
- return jsx_runtime_1.jsx(InlineAction_1.InlineAction, { onClick: onClick, renderAction: renderAction });
47
+ return (jsx_runtime_1.jsx(InlineAction_1.InlineAction, { onClick: onClick, renderAction: renderAction, variant: null }));
48
48
  };
49
49
  exports.RenderQueueRepeatItem = RenderQueueRepeatItem;
@@ -38,6 +38,7 @@ const jsx_runtime_1 = require("react/jsx-runtime");
38
38
  const react_1 = __importStar(require("react"));
39
39
  const remotion_1 = require("remotion");
40
40
  const colors_1 = require("../helpers/colors");
41
+ const pointer_session_1 = require("../helpers/pointer-session");
41
42
  const ForceSpecificCursor_1 = require("./ForceSpecificCursor");
42
43
  const NotificationCenter_1 = require("./Notifications/NotificationCenter");
43
44
  const selected_outline_drag_1 = require("./selected-outline-drag");
@@ -232,9 +233,6 @@ const CropHandle = ({ handle, outline, onDraggingChange, target }) => {
232
233
  }
233
234
  };
234
235
  const onPointerUp = () => {
235
- window.removeEventListener('pointermove', onPointerMove);
236
- window.removeEventListener('pointerup', onPointerUp);
237
- window.removeEventListener('pointercancel', onPointerUp);
238
236
  if (dragStarted) {
239
237
  (0, ForceSpecificCursor_1.stopForcingSpecificCursor)();
240
238
  onDraggingChange(false);
@@ -270,9 +268,12 @@ const CropHandle = ({ handle, outline, onDraggingChange, target }) => {
270
268
  clearDragOverrides(cropDrag.nodePath);
271
269
  });
272
270
  };
273
- window.addEventListener('pointermove', onPointerMove);
274
- window.addEventListener('pointerup', onPointerUp);
275
- window.addEventListener('pointercancel', onPointerUp);
271
+ (0, pointer_session_1.startPointerSession)({
272
+ event,
273
+ target: event.currentTarget,
274
+ onMove: onPointerMove,
275
+ onEnd: onPointerUp,
276
+ });
276
277
  }, [
277
278
  clearDragOverrides,
278
279
  cropDrag,
@@ -45,6 +45,7 @@ const get_connected_compositions_1 = require("../helpers/get-connected-compositi
45
45
  const get_sequence_double_click_action_1 = require("../helpers/get-sequence-double-click-action");
46
46
  const interactivity_enabled_1 = require("../helpers/interactivity-enabled");
47
47
  const open_in_editor_1 = require("../helpers/open-in-editor");
48
+ const pointer_session_1 = require("../helpers/pointer-session");
48
49
  const editor_snapping_1 = require("../state/editor-snapping");
49
50
  const modals_1 = require("../state/modals");
50
51
  const call_api_1 = require("./call-api");
@@ -227,9 +228,6 @@ const SelectedOutlineTransformOriginHandle = ({ outline, onDraggingChange, targe
227
228
  updateFromPointerPosition();
228
229
  };
229
230
  const onPointerUp = () => {
230
- window.removeEventListener('pointermove', onPointerMove);
231
- window.removeEventListener('pointerup', onPointerUp);
232
- window.removeEventListener('pointercancel', onPointerUp);
233
231
  window.removeEventListener('keydown', onKeyChange);
234
232
  window.removeEventListener('keyup', onKeyChange);
235
233
  (0, ForceSpecificCursor_1.stopForcingSpecificCursor)();
@@ -272,9 +270,12 @@ const SelectedOutlineTransformOriginHandle = ({ outline, onDraggingChange, targe
272
270
  clearDragOverrides(transformOriginDrag.nodePath);
273
271
  });
274
272
  };
275
- window.addEventListener('pointermove', onPointerMove);
276
- window.addEventListener('pointerup', onPointerUp);
277
- window.addEventListener('pointercancel', onPointerUp);
273
+ (0, pointer_session_1.startPointerSession)({
274
+ event,
275
+ target: event.currentTarget,
276
+ onMove: onPointerMove,
277
+ onEnd: onPointerUp,
278
+ });
278
279
  window.addEventListener('keydown', onKeyChange);
279
280
  window.addEventListener('keyup', onKeyChange);
280
281
  }, [
@@ -437,9 +438,6 @@ const SelectedOutlinePolygon = ({ allDragTargets, allDragOutlines, contextMenuVa
437
438
  updateDragOverrides();
438
439
  };
439
440
  const onPointerUp = () => {
440
- window.removeEventListener('pointermove', onPointerMove);
441
- window.removeEventListener('pointerup', onPointerUp);
442
- window.removeEventListener('pointercancel', onPointerUp);
443
441
  window.removeEventListener('keydown', onKeyChange);
444
442
  window.removeEventListener('keyup', onKeyChange);
445
443
  if (dragStarted) {
@@ -486,9 +484,12 @@ const SelectedOutlinePolygon = ({ allDragTargets, allDragOutlines, contextMenuVa
486
484
  (0, selected_outline_drag_1.clearSelectedOutlineDragOverrides)({ clearDragOverrides, dragStates });
487
485
  });
488
486
  };
489
- window.addEventListener('pointermove', onPointerMove);
490
- window.addEventListener('pointerup', onPointerUp);
491
- window.addEventListener('pointercancel', onPointerUp);
487
+ (0, pointer_session_1.startPointerSession)({
488
+ event,
489
+ target: event.currentTarget,
490
+ onMove: onPointerMove,
491
+ onEnd: onPointerUp,
492
+ });
492
493
  window.addEventListener('keydown', onKeyChange);
493
494
  window.addEventListener('keyup', onKeyChange);
494
495
  }, [
@@ -648,9 +649,6 @@ const SelectedOutlineScaleEdgeLine = ({ allScaleDragTargets, contextMenuValues,
648
649
  }
649
650
  };
650
651
  const onPointerUp = () => {
651
- window.removeEventListener('pointermove', onPointerMove);
652
- window.removeEventListener('pointerup', onPointerUp);
653
- window.removeEventListener('pointercancel', onPointerUp);
654
652
  if (dragStarted) {
655
653
  (0, ForceSpecificCursor_1.stopForcingSpecificCursor)();
656
654
  onDraggingChange(false);
@@ -701,9 +699,12 @@ const SelectedOutlineScaleEdgeLine = ({ allScaleDragTargets, contextMenuValues,
701
699
  });
702
700
  });
703
701
  };
704
- window.addEventListener('pointermove', onPointerMove);
705
- window.addEventListener('pointerup', onPointerUp);
706
- window.addEventListener('pointercancel', onPointerUp);
702
+ (0, pointer_session_1.startPointerSession)({
703
+ event,
704
+ target: event.currentTarget,
705
+ onMove: onPointerMove,
706
+ onEnd: onPointerUp,
707
+ });
707
708
  }, [
708
709
  allScaleDragTargets,
709
710
  clearDragOverrides,
@@ -864,9 +865,6 @@ const SelectedOutlineRotationCornerHandle = ({ allRotationDragTargets, contextMe
864
865
  }
865
866
  };
866
867
  const onPointerUp = () => {
867
- window.removeEventListener('pointermove', onPointerMove);
868
- window.removeEventListener('pointerup', onPointerUp);
869
- window.removeEventListener('pointercancel', onPointerUp);
870
868
  window.removeEventListener('keydown', onKeyChange);
871
869
  window.removeEventListener('keyup', onKeyChange);
872
870
  if (dragStarted) {
@@ -919,9 +917,12 @@ const SelectedOutlineRotationCornerHandle = ({ allRotationDragTargets, contextMe
919
917
  });
920
918
  });
921
919
  };
922
- window.addEventListener('pointermove', onPointerMove);
923
- window.addEventListener('pointerup', onPointerUp);
924
- window.addEventListener('pointercancel', onPointerUp);
920
+ (0, pointer_session_1.startPointerSession)({
921
+ event,
922
+ target: event.currentTarget,
923
+ onMove: onPointerMove,
924
+ onEnd: onPointerUp,
925
+ });
925
926
  window.addEventListener('keydown', onKeyChange);
926
927
  window.addEventListener('keyup', onKeyChange);
927
928
  }, [
@@ -1003,7 +1004,7 @@ const SelectedOutlineElement = ({ allDragTargets, allDragOutlines, allRotationDr
1003
1004
  if (originalLocation === null) {
1004
1005
  return;
1005
1006
  }
1006
- await (0, open_in_editor_1.openOriginalPositionInEditor)(originalLocation);
1007
+ await (0, open_in_editor_1.openOriginalPositionInEditor)(originalLocation, null);
1007
1008
  };
1008
1009
  openTargetInEditor().catch((err) => {
1009
1010
  (0, NotificationCenter_1.showNotification)(err.message, 2000);
@@ -1050,6 +1051,7 @@ const SelectedOutlineElement = ({ allDragTargets, allDragOutlines, allRotationDr
1050
1051
  deleteDisabled: sourceEditDisabled,
1051
1052
  disableInteractivityDisabled,
1052
1053
  duplicateDisabled: sourceEditDisabled,
1054
+ editorInfo: null,
1053
1055
  fileLocation,
1054
1056
  includeSourceEditItems: sourceEditingEnabled,
1055
1057
  onDeleteSequenceFromSource: async () => {
@@ -1107,7 +1109,7 @@ const SelectedOutlineElement = ({ allDragTargets, allDragOutlines, allRotationDr
1107
1109
  if (!originalLocation) {
1108
1110
  return;
1109
1111
  }
1110
- (0, open_in_editor_1.openOriginalPositionInEditor)(originalLocation).catch((err) => {
1112
+ (0, open_in_editor_1.openOriginalPositionInEditor)(originalLocation, null).catch((err) => {
1111
1113
  (0, NotificationCenter_1.showNotification)(err.message, 2000);
1112
1114
  });
1113
1115
  },
@@ -38,6 +38,7 @@ const jsx_runtime_1 = require("react/jsx-runtime");
38
38
  const react_1 = __importStar(require("react"));
39
39
  const remotion_1 = require("remotion");
40
40
  const colors_1 = require("../helpers/colors");
41
+ const pointer_session_1 = require("../helpers/pointer-session");
41
42
  const editor_snapping_1 = require("../state/editor-snapping");
42
43
  const ForceSpecificCursor_1 = require("./ForceSpecificCursor");
43
44
  const selected_outline_drag_1 = require("./selected-outline-drag");
@@ -217,9 +218,6 @@ const SelectedUvEllipseStartHandle = ({ control, onDraggingChange, outline }) =>
217
218
  updateFromPointerEvent(moveEvent);
218
219
  };
219
220
  const onPointerUp = () => {
220
- window.removeEventListener('pointermove', onPointerMove);
221
- window.removeEventListener('pointerup', onPointerUp);
222
- window.removeEventListener('pointercancel', onPointerUp);
223
221
  if (dragging) {
224
222
  (0, ForceSpecificCursor_1.stopForcingSpecificCursor)();
225
223
  onDraggingChange(false);
@@ -236,9 +234,12 @@ const SelectedUvEllipseStartHandle = ({ control, onDraggingChange, outline }) =>
236
234
  sourceFrame: control.handle.sourceFrame,
237
235
  });
238
236
  };
239
- window.addEventListener('pointermove', onPointerMove);
240
- window.addEventListener('pointerup', onPointerUp);
241
- window.addEventListener('pointercancel', onPointerUp);
237
+ (0, pointer_session_1.startPointerSession)({
238
+ event,
239
+ target: event.currentTarget,
240
+ onMove: onPointerMove,
241
+ onEnd: onPointerUp,
242
+ });
242
243
  }, [
243
244
  clearEffectDragOverrides,
244
245
  control.handle,
@@ -317,9 +318,6 @@ const SelectedUvEllipseResizeHandle = ({ axis, control, onDraggingChange, outlin
317
318
  updateFromPointerEvent(moveEvent);
318
319
  };
319
320
  const onPointerUp = () => {
320
- window.removeEventListener('pointermove', onPointerMove);
321
- window.removeEventListener('pointerup', onPointerUp);
322
- window.removeEventListener('pointercancel', onPointerUp);
323
321
  if (dragging) {
324
322
  (0, ForceSpecificCursor_1.stopForcingSpecificCursor)();
325
323
  onDraggingChange(false);
@@ -336,9 +334,12 @@ const SelectedUvEllipseResizeHandle = ({ axis, control, onDraggingChange, outlin
336
334
  sourceFrame: control.handle.sourceFrame,
337
335
  });
338
336
  };
339
- window.addEventListener('pointermove', onPointerMove);
340
- window.addEventListener('pointerup', onPointerUp);
341
- window.addEventListener('pointercancel', onPointerUp);
337
+ (0, pointer_session_1.startPointerSession)({
338
+ event,
339
+ target: event.currentTarget,
340
+ onMove: onPointerMove,
341
+ onEnd: onPointerUp,
342
+ });
342
343
  }, [
343
344
  axis,
344
345
  clearEffectDragOverrides,
@@ -470,9 +471,6 @@ const SelectedUvEllipseRotationHandle = ({ control, onDraggingChange }) => {
470
471
  }
471
472
  };
472
473
  const onPointerUp = () => {
473
- window.removeEventListener('pointermove', onPointerMove);
474
- window.removeEventListener('pointerup', onPointerUp);
475
- window.removeEventListener('pointercancel', onPointerUp);
476
474
  window.removeEventListener('keydown', onKeyChange);
477
475
  window.removeEventListener('keyup', onKeyChange);
478
476
  if (dragging) {
@@ -491,9 +489,12 @@ const SelectedUvEllipseRotationHandle = ({ control, onDraggingChange }) => {
491
489
  sourceFrame: control.handle.sourceFrame,
492
490
  });
493
491
  };
494
- window.addEventListener('pointermove', onPointerMove);
495
- window.addEventListener('pointerup', onPointerUp);
496
- window.addEventListener('pointercancel', onPointerUp);
492
+ (0, pointer_session_1.startPointerSession)({
493
+ event,
494
+ target: event.currentTarget,
495
+ onMove: onPointerMove,
496
+ onEnd: onPointerUp,
497
+ });
497
498
  window.addEventListener('keydown', onKeyChange);
498
499
  window.addEventListener('keyup', onKeyChange);
499
500
  }, [
@@ -595,9 +596,6 @@ const SelectedUvHandleCircle = ({ handle, nodePathInfo, onDraggingChange, onSele
595
596
  updateDragFromPointerEvent(moveEvent);
596
597
  };
597
598
  const onPointerUp = () => {
598
- window.removeEventListener('pointermove', onPointerMove);
599
- window.removeEventListener('pointerup', onPointerUp);
600
- window.removeEventListener('pointercancel', onPointerUp);
601
599
  if (dragging) {
602
600
  (0, ForceSpecificCursor_1.stopForcingSpecificCursor)();
603
601
  onDraggingChange(false);
@@ -645,9 +643,12 @@ const SelectedUvHandleCircle = ({ handle, nodePathInfo, onDraggingChange, onSele
645
643
  clearEffectDragOverrides(handle.nodePath, handle.effectIndex);
646
644
  });
647
645
  };
648
- window.addEventListener('pointermove', onPointerMove);
649
- window.addEventListener('pointerup', onPointerUp);
650
- window.addEventListener('pointercancel', onPointerUp);
646
+ (0, pointer_session_1.startPointerSession)({
647
+ event,
648
+ target: event.currentTarget,
649
+ onMove: onPointerMove,
650
+ onEnd: onPointerUp,
651
+ });
651
652
  }, [
652
653
  clearEffectDragOverrides,
653
654
  editorSnapping,
@@ -7,6 +7,7 @@ const editor_guides_1 = require("../state/editor-guides");
7
7
  const ShowGuidesProvider = ({ children }) => {
8
8
  const [guidesList, setGuidesList] = (0, react_1.useState)(() => (0, editor_guides_1.loadGuidesList)());
9
9
  const [draggingGuideId, setDraggingGuideId] = (0, react_1.useState)(null);
10
+ const moveGuidePointerRef = (0, react_1.useRef)(null);
10
11
  const [hoveredGuideId, setHoveredGuideId] = (0, react_1.useState)(null);
11
12
  const [editorShowGuides, setEditorShowGuidesState] = (0, react_1.useState)(() => (0, editor_guides_1.loadEditorShowGuidesOption)());
12
13
  const shouldCreateGuideRef = (0, react_1.useRef)(false);
@@ -25,6 +26,7 @@ const ShowGuidesProvider = ({ children }) => {
25
26
  guidesList,
26
27
  setGuidesList,
27
28
  draggingGuideId,
29
+ moveGuidePointerRef,
28
30
  setDraggingGuideId,
29
31
  shouldCreateGuideRef,
30
32
  shouldDeleteGuideRef,
@@ -139,8 +139,8 @@ const SidebarCollapserControl = ({ side }) => {
139
139
  return (jsx_runtime_1.jsx("div", { "data-sidebar-toggle": "right", style: colorStyle(color), title: toggleRightTooltip, children: jsx_runtime_1.jsx("div", { style: rightIcon(color) }) }));
140
140
  }, [colorStyle, rightIcon, toggleRightTooltip]);
141
141
  if (side === 'left') {
142
- return (jsx_runtime_1.jsx(InlineAction_1.InlineAction, { onClick: toggleLeft, renderAction: toggleLeftAction, unhoveredColor: colors_1.WHITE_ALPHA_80 }));
142
+ return (jsx_runtime_1.jsx(InlineAction_1.InlineAction, { variant: null, onClick: toggleLeft, renderAction: toggleLeftAction, unhoveredColor: colors_1.WHITE_ALPHA_80 }));
143
143
  }
144
- return (jsx_runtime_1.jsx(InlineAction_1.InlineAction, { onClick: toggleRight, renderAction: toggleRightAction, unhoveredColor: colors_1.WHITE_ALPHA_80 }));
144
+ return (jsx_runtime_1.jsx(InlineAction_1.InlineAction, { variant: null, onClick: toggleRight, renderAction: toggleRightAction, unhoveredColor: colors_1.WHITE_ALPHA_80 }));
145
145
  };
146
146
  exports.SidebarCollapserControl = SidebarCollapserControl;
@@ -101,6 +101,6 @@ const SidebarRenderButton = ({ composition, visible }) => {
101
101
  if (!visible || connectionStatus !== 'connected') {
102
102
  return null;
103
103
  }
104
- return jsx_runtime_1.jsx(InlineAction_1.InlineAction, { renderAction: renderAction, onClick: onClick });
104
+ return (jsx_runtime_1.jsx(InlineAction_1.InlineAction, { renderAction: renderAction, onClick: onClick, variant: null }));
105
105
  };
106
106
  exports.SidebarRenderButton = SidebarRenderButton;
@@ -4,6 +4,7 @@ exports.SplitterHandle = exports.SPLITTER_HANDLE_SIZE = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const player_1 = require("@remotion/player");
6
6
  const react_1 = require("react");
7
+ const pointer_session_1 = require("../../helpers/pointer-session");
7
8
  const ForceSpecificCursor_1 = require("../ForceSpecificCursor");
8
9
  const SplitterContext_1 = require("./SplitterContext");
9
10
  exports.SPLITTER_HANDLE_SIZE = 3;
@@ -28,7 +29,6 @@ const SplitterHandle = ({ allowToCollapse, onCollapse }) => {
28
29
  if (!current) {
29
30
  return;
30
31
  }
31
- // Cleanup for the listeners that only exist for the duration of a drag.
32
32
  let endDrag = null;
33
33
  const onPointerDown = (e) => {
34
34
  var _a;
@@ -60,7 +60,6 @@ const SplitterHandle = ({ allowToCollapse, onCollapse }) => {
60
60
  const startFlex = Math.min(maxFlex, Math.max(minFlex, dragContext.flexValue));
61
61
  dragContext.isDragging.current = start;
62
62
  (0, ForceSpecificCursor_1.forceSpecificCursor)(dragContext.orientation === 'horizontal' ? 'row-resize' : 'col-resize');
63
- current.classList.add('remotion-splitter-active');
64
63
  const getNewValue = (ev, clamp) => {
65
64
  if (!dragContext.ref.current) {
66
65
  throw new Error('domRect is not mounted');
@@ -75,17 +74,6 @@ const SplitterHandle = ({ allowToCollapse, onCollapse }) => {
75
74
  }
76
75
  return newFlex;
77
76
  };
78
- endDrag = () => {
79
- dragContext.isDragging.current = false;
80
- (0, ForceSpecificCursor_1.stopForcingSpecificCursor)();
81
- current.classList.remove('remotion-splitter-active');
82
- window.removeEventListener('pointermove', onPointerMove);
83
- window.removeEventListener('pointerup', onPointerUp);
84
- window.removeEventListener('pointercancel', onPointerCancel);
85
- window.removeEventListener('blur', onWindowBlur);
86
- endDrag = null;
87
- player_1.PlayerInternals.updateAllElementsSizes();
88
- };
89
77
  const onPointerMove = (ev) => {
90
78
  if (!dragContext.isDragging.current) {
91
79
  return;
@@ -107,23 +95,22 @@ const SplitterHandle = ({ allowToCollapse, onCollapse }) => {
107
95
  }
108
96
  }
109
97
  };
110
- const onPointerUp = (ev) => {
111
- if (!dragContext.isDragging.current) {
112
- return;
113
- }
114
- dragContext.persistFlex(getNewValue(ev, true));
115
- endDrag === null || endDrag === void 0 ? void 0 : endDrag();
116
- };
117
- const onPointerCancel = () => {
118
- endDrag === null || endDrag === void 0 ? void 0 : endDrag();
119
- };
120
- const onWindowBlur = () => {
121
- endDrag === null || endDrag === void 0 ? void 0 : endDrag();
122
- };
123
- window.addEventListener('pointermove', onPointerMove);
124
- window.addEventListener('pointerup', onPointerUp);
125
- window.addEventListener('pointercancel', onPointerCancel);
126
- window.addEventListener('blur', onWindowBlur);
98
+ endDrag = (0, pointer_session_1.startPointerSession)({
99
+ event: e,
100
+ target: current,
101
+ onMove: onPointerMove,
102
+ onEnd: (reason, endEvent) => {
103
+ if ((reason === 'pointerup' || reason === 'buttons-released') &&
104
+ endEvent &&
105
+ dragContext.isDragging.current) {
106
+ dragContext.persistFlex(getNewValue(endEvent, true));
107
+ }
108
+ dragContext.isDragging.current = false;
109
+ (0, ForceSpecificCursor_1.stopForcingSpecificCursor)();
110
+ endDrag = null;
111
+ player_1.PlayerInternals.updateAllElementsSizes();
112
+ },
113
+ });
127
114
  };
128
115
  current.addEventListener('pointerdown', onPointerDown);
129
116
  return () => {
@@ -131,44 +118,6 @@ const SplitterHandle = ({ allowToCollapse, onCollapse }) => {
131
118
  endDrag === null || endDrag === void 0 ? void 0 : endDrag();
132
119
  };
133
120
  }, []);
134
- (0, react_1.useEffect)(() => {
135
- const { current } = ref;
136
- if (!current) {
137
- return;
138
- }
139
- let isMouseDown = false;
140
- const onMouseDown = () => {
141
- isMouseDown = true;
142
- };
143
- const onMouseUp = () => {
144
- isMouseDown = false;
145
- };
146
- const onMouseEnter = (e) => {
147
- if (e.button !== 0) {
148
- return;
149
- }
150
- if (isMouseDown) {
151
- return;
152
- }
153
- current.classList.add('remotion-splitter-hover');
154
- };
155
- const onMouseLeave = (e) => {
156
- if (e.button !== 0) {
157
- return;
158
- }
159
- current.classList.remove('remotion-splitter-hover');
160
- };
161
- current.addEventListener('mouseenter', onMouseEnter);
162
- current.addEventListener('mouseleave', onMouseLeave);
163
- window.addEventListener('mousedown', onMouseDown);
164
- window.addEventListener('mouseup', onMouseUp);
165
- return () => {
166
- current.removeEventListener('mouseenter', onMouseEnter);
167
- current.removeEventListener('mouseleave', onMouseLeave);
168
- window.removeEventListener('mousedown', onMouseDown);
169
- window.removeEventListener('mouseup', onMouseUp);
170
- };
171
- }, []);
172
121
  return (jsx_runtime_1.jsx("div", { ref: ref, className: [
173
122
  'remotion-splitter',
174
123
  context.orientation === 'horizontal'
@@ -7,6 +7,7 @@ const react_1 = require("react");
7
7
  const remotion_1 = require("remotion");
8
8
  const client_id_1 = require("../../helpers/client-id");
9
9
  const colors_1 = require("../../helpers/colors");
10
+ const pointer_session_1 = require("../../helpers/pointer-session");
10
11
  const Checkbox_1 = require("../Checkbox");
11
12
  const InspectorPanelLayout_1 = require("../InspectorPanelLayout");
12
13
  const InputDragger_1 = require("../NewComposition/InputDragger");
@@ -642,33 +643,40 @@ const EasingEditor = ({ state, renderHeader }) => {
642
643
  }
643
644
  setBezierAndPreview(next);
644
645
  }, [getValueFromPointer, setBezierAndPreview]);
645
- (0, react_1.useEffect)(() => {
646
- if (activeHandle === null) {
647
- return;
648
- }
649
- const onPointerMove = (event) => {
650
- updateHandleFromPointer(activeHandle, event);
651
- };
652
- const onPointerUp = () => {
653
- commitEasing(serializeBezier(bezierRef.current), liveOverrideVersionRef.current);
654
- setActiveHandle(null);
655
- };
656
- window.addEventListener('pointermove', onPointerMove);
657
- window.addEventListener('pointerup', onPointerUp, { once: true });
658
- return () => {
659
- window.removeEventListener('pointermove', onPointerMove);
660
- window.removeEventListener('pointerup', onPointerUp);
661
- };
662
- }, [activeHandle, commitEasing, updateHandleFromPointer]);
663
646
  const onHandlePointerDown = (0, react_1.useCallback)((handle, event) => {
664
647
  if (previewServerState.type !== 'connected') {
665
648
  return;
666
649
  }
667
650
  event.preventDefault();
668
651
  event.stopPropagation();
652
+ const bezierBeforeDrag = [...bezierRef.current];
669
653
  setActiveHandle(handle);
670
654
  updateHandleFromPointer(handle, event);
671
- }, [previewServerState.type, updateHandleFromPointer]);
655
+ (0, pointer_session_1.startPointerSession)({
656
+ event,
657
+ target: event.currentTarget,
658
+ onMove: (moveEvent) => {
659
+ updateHandleFromPointer(handle, moveEvent);
660
+ },
661
+ onEnd: (reason) => {
662
+ if (reason === 'pointerup' || reason === 'buttons-released') {
663
+ commitEasing(serializeBezier(bezierRef.current), liveOverrideVersionRef.current);
664
+ }
665
+ else {
666
+ clearEasingDragOverrides(pendingOverrideTargetsRef.current);
667
+ pendingOverrideTargetsRef.current = [];
668
+ bezierRef.current = bezierBeforeDrag;
669
+ setBezier(bezierBeforeDrag);
670
+ }
671
+ setActiveHandle(null);
672
+ },
673
+ });
674
+ }, [
675
+ clearEasingDragOverrides,
676
+ commitEasing,
677
+ previewServerState.type,
678
+ updateHandleFromPointer,
679
+ ]);
672
680
  (0, react_1.useEffect)(() => {
673
681
  return () => {
674
682
  clearEasingDragOverrides(pendingOverrideTargetsRef.current);
@@ -96,7 +96,7 @@ const TimelineAssetField = ({ field, effectiveValue, propStatus, onSave, onDragV
96
96
  compositionSelection: null,
97
97
  });
98
98
  }, [initialQuery, onSelect, selectFile, setSelectedModal]);
99
- const action = (jsx_runtime_1.jsx(InlineAction_1.InlineAction, { onClick: openAssetSelection, disabled: window.remotion_isReadOnlyStudio, title: "Change source", renderAction: (color) => jsx_runtime_1.jsx(pen_1.PenIcon, { color: color, style: penIcon }) }));
99
+ const action = (jsx_runtime_1.jsx(InlineAction_1.InlineAction, { variant: null, onClick: openAssetSelection, disabled: window.remotion_isReadOnlyStudio, title: "Change source", renderAction: (color) => jsx_runtime_1.jsx(pen_1.PenIcon, { color: color, style: penIcon }) }));
100
100
  if (inlineSourceAction === null) {
101
101
  return action;
102
102
  }
@@ -39,6 +39,7 @@ const player_1 = require("@remotion/player");
39
39
  const react_1 = __importStar(require("react"));
40
40
  const remotion_1 = require("remotion");
41
41
  const interactivity_enabled_1 = require("../../helpers/interactivity-enabled");
42
+ const pointer_session_1 = require("../../helpers/pointer-session");
42
43
  const timeline_layout_1 = require("../../helpers/timeline-layout");
43
44
  const timeline_zoom_1 = require("../../state/timeline-zoom");
44
45
  const z_index_1 = require("../../state/z-index");
@@ -116,6 +117,7 @@ const TimelineDragHandlerInner = () => {
116
117
  }
117
118
  };
118
119
  const onPointerDown = (0, react_1.useCallback)((e) => {
120
+ var _a, _b;
119
121
  if (e.button !== 0) {
120
122
  return;
121
123
  }
@@ -139,7 +141,11 @@ const TimelineDragHandlerInner = () => {
139
141
  setDragging({
140
142
  dragging: true,
141
143
  wasPlaying: playing,
144
+ button: e.button,
145
+ pointerId: e.pointerId,
146
+ target: e.currentTarget,
142
147
  });
148
+ (_b = (_a = e.currentTarget).setPointerCapture) === null || _b === void 0 ? void 0 : _b.call(_a, e.pointerId);
143
149
  pause();
144
150
  }, [isHighestContext, videoConfig, left, width, seek, playing, pause]);
145
151
  const onPointerMoveScrubbing = (0, react_1.useCallback)((e) => {
@@ -249,17 +255,42 @@ const TimelineDragHandlerInner = () => {
249
255
  play();
250
256
  }
251
257
  }, [dragging, left, play, videoConfig, setFrame, width]);
258
+ const onPointerCancelScrubbing = (0, react_1.useCallback)(() => {
259
+ stopInterval();
260
+ document.body.style.userSelect = '';
261
+ document.body.style.webkitUserSelect = '';
262
+ if (!dragging.dragging) {
263
+ return;
264
+ }
265
+ setDragging({ dragging: false });
266
+ if (dragging.wasPlaying) {
267
+ play();
268
+ }
269
+ }, [dragging, play]);
252
270
  (0, react_1.useEffect)(() => {
253
271
  if (!dragging.dragging) {
254
272
  return;
255
273
  }
256
- window.addEventListener('pointermove', onPointerMoveScrubbing);
257
- window.addEventListener('pointerup', onPointerUpScrubbing);
258
- return () => {
259
- window.removeEventListener('pointermove', onPointerMoveScrubbing);
260
- window.removeEventListener('pointerup', onPointerUpScrubbing);
261
- };
262
- }, [dragging.dragging, onPointerMoveScrubbing, onPointerUpScrubbing]);
274
+ return (0, pointer_session_1.startPointerSession)({
275
+ event: dragging,
276
+ target: dragging.target,
277
+ onMove: onPointerMoveScrubbing,
278
+ onEnd: (reason, endEvent) => {
279
+ if ((reason === 'pointerup' || reason === 'buttons-released') &&
280
+ endEvent) {
281
+ onPointerUpScrubbing(endEvent);
282
+ }
283
+ else {
284
+ onPointerCancelScrubbing();
285
+ }
286
+ },
287
+ });
288
+ }, [
289
+ dragging,
290
+ onPointerCancelScrubbing,
291
+ onPointerMoveScrubbing,
292
+ onPointerUpScrubbing,
293
+ ]);
263
294
  const ref = (0, react_1.useRef)(null);
264
295
  (0, react_1.useEffect)(() => {
265
296
  const currentRef = ref.current;