@remotion/player 4.0.172 → 4.0.174

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 (114) hide show
  1. package/dist/cjs/Player.d.ts +1 -0
  2. package/dist/cjs/Player.js +2 -2
  3. package/dist/cjs/PlayerControls.d.ts +2 -2
  4. package/dist/cjs/PlayerControls.js +7 -5
  5. package/dist/cjs/PlayerSeekBar.js +1 -0
  6. package/dist/cjs/PlayerUI.d.ts +1 -0
  7. package/dist/cjs/PlayerUI.js +16 -10
  8. package/dist/cjs/Thumbnail.d.ts +1 -0
  9. package/dist/cjs/Thumbnail.js +2 -2
  10. package/dist/cjs/ThumbnailUI.d.ts +1 -0
  11. package/dist/cjs/ThumbnailUI.js +7 -6
  12. package/dist/cjs/calculate-scale.d.ts +7 -4
  13. package/dist/cjs/calculate-scale.js +6 -6
  14. package/dist/cjs/index.d.ts +1 -1
  15. package/dist/cjs/use-player.d.ts +1 -1
  16. package/dist/cjs/utils/use-click-prevention-on-double-click.d.ts +5 -1
  17. package/dist/cjs/utils/use-click-prevention-on-double-click.js +13 -4
  18. package/dist/esm/index.mjs +63 -38
  19. package/package.json +2 -2
  20. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/BufferingIndicator.d.ts +0 -5
  21. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/BufferingIndicator.js +0 -38
  22. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/DefaultPlayPauseButton.d.ts +0 -5
  23. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/DefaultPlayPauseButton.js +0 -12
  24. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/EmitterProvider.d.ts +0 -5
  25. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/EmitterProvider.js +0 -20
  26. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/MediaVolumeSlider.d.ts +0 -5
  27. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/MediaVolumeSlider.js +0 -129
  28. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/PlaybackrateControl.d.ts +0 -8
  29. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/PlaybackrateControl.js +0 -156
  30. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/Player.d.ts +0 -59
  31. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/Player.js +0 -146
  32. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/PlayerControls.d.ts +0 -47
  33. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/PlayerControls.js +0 -176
  34. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/PlayerSeekBar.d.ts +0 -8
  35. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/PlayerSeekBar.js +0 -145
  36. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/PlayerUI.d.ts +0 -46
  37. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/PlayerUI.js +0 -370
  38. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/SharedPlayerContext.d.ts +0 -15
  39. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/SharedPlayerContext.js +0 -55
  40. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/Thumbnail.d.ts +0 -23
  41. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/Thumbnail.js +0 -48
  42. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/ThumbnailUI.d.ts +0 -11
  43. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/ThumbnailUI.js +0 -89
  44. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/calculate-next-frame.d.ts +0 -14
  45. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/calculate-next-frame.js +0 -24
  46. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/calculate-scale.d.ts +0 -50
  47. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/calculate-scale.js +0 -72
  48. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/emitter-context.d.ts +0 -4
  49. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/emitter-context.js +0 -3
  50. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/error-boundary.d.ts +0 -19
  51. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/error-boundary.js +0 -32
  52. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/event-emitter.d.ts +0 -91
  53. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/event-emitter.js +0 -114
  54. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/format-time.d.ts +0 -1
  55. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/format-time.js +0 -5
  56. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/icons.d.ts +0 -10
  57. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/icons.js +0 -39
  58. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/index.d.ts +0 -65
  59. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/index.js +0 -23
  60. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/is-backgrounded.d.ts +0 -2
  61. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/is-backgrounded.js +0 -20
  62. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/player-css-classname.d.ts +0 -1
  63. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/player-css-classname.js +0 -1
  64. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/player-methods.d.ts +0 -25
  65. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/player-methods.js +0 -1
  66. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/test/index.test.d.ts +0 -1
  67. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/test/index.test.js +0 -7
  68. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/test/test-utils.d.ts +0 -6
  69. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/test/test-utils.js +0 -14
  70. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/test/validate-in-out-frames.test.d.ts +0 -1
  71. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/test/validate-in-out-frames.test.js +0 -54
  72. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/test/validate-prop.test.d.ts +0 -1
  73. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/test/validate-prop.test.js +0 -129
  74. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/use-buffer-state-emitter.d.ts +0 -2
  75. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/use-buffer-state-emitter.js +0 -22
  76. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/use-hover-state.d.ts +0 -1
  77. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/use-hover-state.js +0 -43
  78. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/use-playback.d.ts +0 -8
  79. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/use-playback.js +0 -157
  80. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/use-player.d.ts +0 -24
  81. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/use-player.js +0 -157
  82. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/use-thumbnail.d.ts +0 -6
  83. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/use-thumbnail.js +0 -14
  84. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/use-video-controls-resize.d.ts +0 -11
  85. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/use-video-controls-resize.js +0 -35
  86. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/calculate-player-size.d.ts +0 -9
  87. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/calculate-player-size.js +0 -24
  88. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/cancellable-promise.d.ts +0 -5
  89. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/cancellable-promise.js +0 -22
  90. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/delay.d.ts +0 -1
  91. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/delay.js +0 -2
  92. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/is-node.d.ts +0 -1
  93. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/is-node.js +0 -1
  94. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/props-if-has-props.d.ts +0 -10
  95. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/props-if-has-props.js +0 -1
  96. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/use-cancellable-promises.d.ts +0 -7
  97. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/use-cancellable-promises.js +0 -18
  98. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/use-click-prevention-on-double-click.d.ts +0 -3
  99. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/use-click-prevention-on-double-click.js +0 -41
  100. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/use-component-visible.d.ts +0 -6
  101. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/use-component-visible.js +0 -18
  102. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/use-element-size.d.ts +0 -16
  103. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/use-element-size.js +0 -127
  104. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/validate-in-out-frame.d.ts +0 -6
  105. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/validate-in-out-frame.js +0 -49
  106. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/validate-initial-frame.d.ts +0 -4
  107. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/validate-initial-frame.js +0 -23
  108. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/validate-playbackrate.d.ts +0 -1
  109. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/validate-playbackrate.js +0 -14
  110. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/validate.d.ts +0 -5
  111. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/validate.js +0 -6
  112. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/volume-persistance.d.ts +0 -2
  113. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/volume-persistance.js +0 -29
  114. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/tsconfig-esm.tsbuildinfo +0 -1
@@ -47,6 +47,7 @@ export type PlayerProps<Schema extends AnyZodObject, Props> = {
47
47
  readonly posterFillMode?: PosterFillMode;
48
48
  readonly bufferStateDelayInMilliseconds?: number;
49
49
  readonly hideControlsWhenPointerDoesntMove?: boolean | number;
50
+ readonly overflowVisible?: boolean;
50
51
  } & CompProps<Props> & PropsIfHasProps<Schema, Props>;
51
52
  export declare const componentOrNullIfLazy: <Props>(props: CompProps<Props>) => ComponentType<Props> | null;
52
53
  /**
@@ -22,7 +22,7 @@ const componentOrNullIfLazy = (props) => {
22
22
  return null;
23
23
  };
24
24
  exports.componentOrNullIfLazy = componentOrNullIfLazy;
25
- const PlayerFn = ({ durationInFrames, compositionHeight, compositionWidth, fps, inputProps, style, controls = false, loop = false, autoPlay = false, showVolumeControls = true, allowFullscreen = true, clickToPlay, doubleClickToFullscreen = false, spaceKeyToPlayOrPause = true, moveToBeginningWhenEnded = true, numberOfSharedAudioTags = 5, errorFallback = () => '⚠️', playbackRate = 1, renderLoading, className, showPosterWhenUnplayed, showPosterWhenEnded, showPosterWhenPaused, showPosterWhenBuffering, initialFrame, renderPoster, inFrame, outFrame, initiallyShowControls, renderFullscreenButton, renderPlayPauseButton, alwaysShowControls = false, initiallyMuted = false, showPlaybackRateControl = false, posterFillMode = 'player-size', bufferStateDelayInMilliseconds, hideControlsWhenPointerDoesntMove = true, ...componentProps }, ref) => {
25
+ const PlayerFn = ({ durationInFrames, compositionHeight, compositionWidth, fps, inputProps, style, controls = false, loop = false, autoPlay = false, showVolumeControls = true, allowFullscreen = true, clickToPlay, doubleClickToFullscreen = false, spaceKeyToPlayOrPause = true, moveToBeginningWhenEnded = true, numberOfSharedAudioTags = 5, errorFallback = () => '⚠️', playbackRate = 1, renderLoading, className, showPosterWhenUnplayed, showPosterWhenEnded, showPosterWhenPaused, showPosterWhenBuffering, initialFrame, renderPoster, inFrame, outFrame, initiallyShowControls, renderFullscreenButton, renderPlayPauseButton, alwaysShowControls = false, initiallyMuted = false, showPlaybackRateControl = false, posterFillMode = 'player-size', bufferStateDelayInMilliseconds, hideControlsWhenPointerDoesntMove = true, overflowVisible = false, ...componentProps }, ref) => {
26
26
  if (typeof window !== 'undefined') {
27
27
  // eslint-disable-next-line react-hooks/rules-of-hooks
28
28
  (0, react_1.useLayoutEffect)(() => {
@@ -140,7 +140,7 @@ const PlayerFn = ({ durationInFrames, compositionHeight, compositionWidth, fps,
140
140
  const actualInputProps = (0, react_1.useMemo)(() => inputProps !== null && inputProps !== void 0 ? inputProps : {}, [inputProps]);
141
141
  return ((0, jsx_runtime_1.jsx)(remotion_1.Internals.IsPlayerContextProvider, { children: (0, jsx_runtime_1.jsx)(SharedPlayerContext_js_1.SharedPlayerContexts, { timelineContext: timelineContextValue, component: component, compositionHeight: compositionHeight, compositionWidth: compositionWidth, durationInFrames: durationInFrames, fps: fps, numberOfSharedAudioTags: numberOfSharedAudioTags, initiallyMuted: initiallyMuted, children: (0, jsx_runtime_1.jsx)(remotion_1.Internals.Timeline.SetTimelineContext.Provider, { value: setTimelineContextValue, children: (0, jsx_runtime_1.jsx)(EmitterProvider_js_1.PlayerEmitterProvider, { currentPlaybackRate: currentPlaybackRate, children: (0, jsx_runtime_1.jsx)(PlayerUI_js_1.default, { ref: rootRef, posterFillMode: posterFillMode, renderLoading: renderLoading, autoPlay: Boolean(autoPlay), loop: Boolean(loop), controls: Boolean(controls), errorFallback: errorFallback, style: style, inputProps: actualInputProps, allowFullscreen: Boolean(allowFullscreen), moveToBeginningWhenEnded: Boolean(moveToBeginningWhenEnded), clickToPlay: typeof clickToPlay === 'boolean'
142
142
  ? clickToPlay
143
- : Boolean(controls), showVolumeControls: Boolean(showVolumeControls), doubleClickToFullscreen: Boolean(doubleClickToFullscreen), spaceKeyToPlayOrPause: Boolean(spaceKeyToPlayOrPause), playbackRate: currentPlaybackRate, className: className !== null && className !== void 0 ? className : undefined, showPosterWhenUnplayed: Boolean(showPosterWhenUnplayed), showPosterWhenEnded: Boolean(showPosterWhenEnded), showPosterWhenPaused: Boolean(showPosterWhenPaused), showPosterWhenBuffering: Boolean(showPosterWhenBuffering), renderPoster: renderPoster, inFrame: inFrame !== null && inFrame !== void 0 ? inFrame : null, outFrame: outFrame !== null && outFrame !== void 0 ? outFrame : null, initiallyShowControls: initiallyShowControls !== null && initiallyShowControls !== void 0 ? initiallyShowControls : true, renderFullscreen: renderFullscreenButton !== null && renderFullscreenButton !== void 0 ? renderFullscreenButton : null, renderPlayPauseButton: renderPlayPauseButton !== null && renderPlayPauseButton !== void 0 ? renderPlayPauseButton : null, alwaysShowControls: alwaysShowControls, showPlaybackRateControl: showPlaybackRateControl, bufferStateDelayInMilliseconds: bufferStateDelayInMilliseconds !== null && bufferStateDelayInMilliseconds !== void 0 ? bufferStateDelayInMilliseconds : 300, hideControlsWhenPointerDoesntMove: hideControlsWhenPointerDoesntMove }) }) }) }) }));
143
+ : Boolean(controls), showVolumeControls: Boolean(showVolumeControls), doubleClickToFullscreen: Boolean(doubleClickToFullscreen), spaceKeyToPlayOrPause: Boolean(spaceKeyToPlayOrPause), playbackRate: currentPlaybackRate, className: className !== null && className !== void 0 ? className : undefined, showPosterWhenUnplayed: Boolean(showPosterWhenUnplayed), showPosterWhenEnded: Boolean(showPosterWhenEnded), showPosterWhenPaused: Boolean(showPosterWhenPaused), showPosterWhenBuffering: Boolean(showPosterWhenBuffering), renderPoster: renderPoster, inFrame: inFrame !== null && inFrame !== void 0 ? inFrame : null, outFrame: outFrame !== null && outFrame !== void 0 ? outFrame : null, initiallyShowControls: initiallyShowControls !== null && initiallyShowControls !== void 0 ? initiallyShowControls : true, renderFullscreen: renderFullscreenButton !== null && renderFullscreenButton !== void 0 ? renderFullscreenButton : null, renderPlayPauseButton: renderPlayPauseButton !== null && renderPlayPauseButton !== void 0 ? renderPlayPauseButton : null, alwaysShowControls: alwaysShowControls, showPlaybackRateControl: showPlaybackRateControl, bufferStateDelayInMilliseconds: bufferStateDelayInMilliseconds !== null && bufferStateDelayInMilliseconds !== void 0 ? bufferStateDelayInMilliseconds : 300, hideControlsWhenPointerDoesntMove: hideControlsWhenPointerDoesntMove, overflowVisible: overflowVisible }) }) }) }) }));
144
144
  };
145
145
  const forward = react_1.forwardRef;
146
146
  /**
@@ -1,4 +1,4 @@
1
- import type { MouseEventHandler, ReactNode } from 'react';
1
+ import type { MouseEventHandler, ReactNode, SyntheticEvent } from 'react';
2
2
  import React from 'react';
3
3
  import type { usePlayer } from './use-player.js';
4
4
  import type { Size } from './utils/use-element-size.js';
@@ -42,6 +42,6 @@ export declare const Controls: React.FC<{
42
42
  readonly containerRef: React.RefObject<HTMLDivElement>;
43
43
  readonly buffering: boolean;
44
44
  readonly hideControlsWhenPointerDoesntMove: boolean | number;
45
- readonly onPointerUp: React.PointerEventHandler<HTMLDivElement> | undefined;
45
+ readonly onPointerDown: ((ev: PointerEvent | SyntheticEvent) => void) | undefined;
46
46
  readonly onDoubleClick: MouseEventHandler<HTMLDivElement> | undefined;
47
47
  }>;
@@ -47,11 +47,13 @@ const controlsRow = {
47
47
  alignItems: 'center',
48
48
  justifyContent: 'center',
49
49
  userSelect: 'none',
50
+ WebkitUserSelect: 'none',
50
51
  };
51
52
  const leftPartStyle = {
52
53
  display: 'flex',
53
54
  flexDirection: 'row',
54
55
  userSelect: 'none',
56
+ WebkitUserSelect: 'none',
55
57
  alignItems: 'center',
56
58
  };
57
59
  const xSpacer = {
@@ -64,7 +66,7 @@ const flex1 = {
64
66
  flex: 1,
65
67
  };
66
68
  const fullscreen = {};
67
- const Controls = ({ durationInFrames, isFullscreen, fps, player, showVolumeControls, onFullscreenButtonClick, allowFullscreen, onExitFullscreenButtonClick, spaceKeyToPlayOrPause, onSeekEnd, onSeekStart, inFrame, outFrame, initiallyShowControls, canvasSize, renderPlayPauseButton, renderFullscreenButton, alwaysShowControls, showPlaybackRateControl, containerRef, buffering, hideControlsWhenPointerDoesntMove, onPointerUp, onDoubleClick, }) => {
69
+ const Controls = ({ durationInFrames, isFullscreen, fps, player, showVolumeControls, onFullscreenButtonClick, allowFullscreen, onExitFullscreenButtonClick, spaceKeyToPlayOrPause, onSeekEnd, onSeekStart, inFrame, outFrame, initiallyShowControls, canvasSize, renderPlayPauseButton, renderFullscreenButton, alwaysShowControls, showPlaybackRateControl, containerRef, buffering, hideControlsWhenPointerDoesntMove, onPointerDown, onDoubleClick, }) => {
68
70
  var _a, _b;
69
71
  const playButtonRef = (0, react_1.useRef)(null);
70
72
  const frame = remotion_1.Internals.Timeline.useTimelinePosition();
@@ -158,19 +160,19 @@ const Controls = ({ durationInFrames, isFullscreen, fps, player, showVolumeContr
158
160
  }, [showPlaybackRateControl]);
159
161
  const ref = (0, react_1.useRef)(null);
160
162
  const flexRef = (0, react_1.useRef)(null);
161
- const onPointerUpIfContainer = (0, react_1.useCallback)((e) => {
163
+ const onPointerDownIfContainer = (0, react_1.useCallback)((e) => {
162
164
  // Only if pressing the container
163
165
  if (e.target === ref.current || e.target === flexRef.current) {
164
- onPointerUp === null || onPointerUp === void 0 ? void 0 : onPointerUp(e);
166
+ onPointerDown === null || onPointerDown === void 0 ? void 0 : onPointerDown(e);
165
167
  }
166
- }, [onPointerUp]);
168
+ }, [onPointerDown]);
167
169
  const onDoubleClickIfContainer = (0, react_1.useCallback)((e) => {
168
170
  // Only if pressing the container
169
171
  if (e.target === ref.current || e.target === flexRef.current) {
170
172
  onDoubleClick === null || onDoubleClick === void 0 ? void 0 : onDoubleClick(e);
171
173
  }
172
174
  }, [onDoubleClick]);
173
- return ((0, jsx_runtime_1.jsxs)("div", { ref: ref, style: containerCss, onPointerUp: onPointerUpIfContainer, onDoubleClick: onDoubleClickIfContainer, children: [(0, jsx_runtime_1.jsxs)("div", { ref: flexRef, style: controlsRow, children: [(0, jsx_runtime_1.jsxs)("div", { style: leftPartStyle, children: [(0, jsx_runtime_1.jsx)("button", { ref: playButtonRef, type: "button", style: PlaybackrateControl_js_1.playerButtonStyle, onClick: player.playing ? player.pause : player.play, "aria-label": player.playing ? 'Pause video' : 'Play video', title: player.playing ? 'Pause video' : 'Play video', children: renderPlayPauseButton === null ? ((0, jsx_runtime_1.jsx)(DefaultPlayPauseButton_js_1.DefaultPlayPauseButton, { buffering: buffering, playing: player.playing })) : ((_b = renderPlayPauseButton({
175
+ return ((0, jsx_runtime_1.jsxs)("div", { ref: ref, style: containerCss, onPointerDown: onPointerDownIfContainer, onDoubleClick: onDoubleClickIfContainer, children: [(0, jsx_runtime_1.jsxs)("div", { ref: flexRef, style: controlsRow, children: [(0, jsx_runtime_1.jsxs)("div", { style: leftPartStyle, children: [(0, jsx_runtime_1.jsx)("button", { ref: playButtonRef, type: "button", style: PlaybackrateControl_js_1.playerButtonStyle, onClick: player.playing ? player.pause : player.play, "aria-label": player.playing ? 'Pause video' : 'Play video', title: player.playing ? 'Pause video' : 'Play video', children: renderPlayPauseButton === null ? ((0, jsx_runtime_1.jsx)(DefaultPlayPauseButton_js_1.DefaultPlayPauseButton, { buffering: buffering, playing: player.playing })) : ((_b = renderPlayPauseButton({
174
176
  playing: player.playing,
175
177
  isBuffering: buffering,
176
178
  })) !== null && _b !== void 0 ? _b : ((0, jsx_runtime_1.jsx)(DefaultPlayPauseButton_js_1.DefaultPlayPauseButton, { buffering: buffering, playing: player.playing }))) }), showVolumeControls ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", { style: xSpacer }), (0, jsx_runtime_1.jsx)(MediaVolumeSlider_js_1.MediaVolumeSlider, { displayVerticalVolumeSlider: displayVerticalVolumeSlider })] })) : null, (0, jsx_runtime_1.jsx)("div", { style: xSpacer }), (0, jsx_runtime_1.jsxs)("div", { style: timeLabel, children: [(0, format_time_js_1.formatTime)(frame / fps), " / ", (0, format_time_js_1.formatTime)(durationInFrames / fps)] }), (0, jsx_runtime_1.jsx)("div", { style: xSpacer })] }), (0, jsx_runtime_1.jsx)("div", { style: flex1 }), playbackRates && canvasSize && ((0, jsx_runtime_1.jsx)(PlaybackrateControl_js_1.PlaybackrateControl, { canvasSize: canvasSize, playbackRates: playbackRates })), playbackRates && supportsFullscreen && allowFullscreen ? ((0, jsx_runtime_1.jsx)("div", { style: xSpacer })) : null, (0, jsx_runtime_1.jsx)("div", { style: fullscreen, children: supportsFullscreen && allowFullscreen ? ((0, jsx_runtime_1.jsx)("button", { type: "button", "aria-label": isFullscreen ? 'Exit fullscreen' : 'Enter Fullscreen', title: isFullscreen ? 'Exit fullscreen' : 'Enter Fullscreen', style: PlaybackrateControl_js_1.playerButtonStyle, onClick: isFullscreen
@@ -21,6 +21,7 @@ const KNOB_SIZE = 12;
21
21
  const VERTICAL_PADDING = 4;
22
22
  const containerStyle = {
23
23
  userSelect: 'none',
24
+ WebkitUserSelect: 'none',
24
25
  paddingTop: VERTICAL_PADDING,
25
26
  paddingBottom: VERTICAL_PADDING,
26
27
  boxSizing: 'border-box',
@@ -42,5 +42,6 @@ declare const _default: React.ForwardRefExoticComponent<{
42
42
  readonly posterFillMode: PosterFillMode;
43
43
  readonly bufferStateDelayInMilliseconds: number;
44
44
  readonly hideControlsWhenPointerDoesntMove: number | boolean;
45
+ readonly overflowVisible: boolean;
45
46
  } & React.RefAttributes<PlayerRef>>;
46
47
  export default _default;
@@ -40,7 +40,7 @@ if (reactVersion === '0') {
40
40
  throw new Error(`Version ${reactVersion} of "react" is not supported by Remotion`);
41
41
  }
42
42
  const doesReactVersionSupportSuspense = parseInt(reactVersion, 10) >= 18;
43
- const PlayerUI = ({ controls, style, loop, autoPlay, allowFullscreen, inputProps, clickToPlay, showVolumeControls, doubleClickToFullscreen, spaceKeyToPlayOrPause, errorFallback, playbackRate, renderLoading, renderPoster, className, moveToBeginningWhenEnded, showPosterWhenUnplayed, showPosterWhenEnded, showPosterWhenPaused, showPosterWhenBuffering, inFrame, outFrame, initiallyShowControls, renderFullscreen: renderFullscreenButton, renderPlayPauseButton, alwaysShowControls, showPlaybackRateControl, posterFillMode, bufferStateDelayInMilliseconds, hideControlsWhenPointerDoesntMove, }, ref) => {
43
+ const PlayerUI = ({ controls, style, loop, autoPlay, allowFullscreen, inputProps, clickToPlay, showVolumeControls, doubleClickToFullscreen, spaceKeyToPlayOrPause, errorFallback, playbackRate, renderLoading, renderPoster, className, moveToBeginningWhenEnded, showPosterWhenUnplayed, showPosterWhenEnded, showPosterWhenPaused, showPosterWhenBuffering, inFrame, outFrame, initiallyShowControls, renderFullscreen: renderFullscreenButton, renderPlayPauseButton, alwaysShowControls, showPlaybackRateControl, posterFillMode, bufferStateDelayInMilliseconds, hideControlsWhenPointerDoesntMove, overflowVisible, }, ref) => {
44
44
  var _a, _b, _c;
45
45
  const config = remotion_1.Internals.useUnsafeVideoConfig();
46
46
  const video = remotion_1.Internals.useVideo();
@@ -298,14 +298,20 @@ const PlayerUI = ({ controls, style, loop, autoPlay, allowFullscreen, inputProps
298
298
  ]);
299
299
  const VideoComponent = video ? video.component : null;
300
300
  const outerStyle = (0, react_1.useMemo)(() => {
301
- return (0, calculate_scale_js_1.calculateOuterStyle)({ canvasSize, config, style });
302
- }, [canvasSize, config, style]);
301
+ return (0, calculate_scale_js_1.calculateOuterStyle)({ canvasSize, config, style, overflowVisible });
302
+ }, [canvasSize, config, overflowVisible, style]);
303
303
  const outer = (0, react_1.useMemo)(() => {
304
- return (0, calculate_scale_js_1.calculateOuter)({ config, layout, scale });
305
- }, [config, layout, scale]);
304
+ return (0, calculate_scale_js_1.calculateOuter)({ config, layout, scale, overflowVisible });
305
+ }, [config, layout, overflowVisible, scale]);
306
306
  const containerStyle = (0, react_1.useMemo)(() => {
307
- return (0, calculate_scale_js_1.calculateContainerStyle)({ canvasSize, config, layout, scale });
308
- }, [canvasSize, config, layout, scale]);
307
+ return (0, calculate_scale_js_1.calculateContainerStyle)({
308
+ canvasSize,
309
+ config,
310
+ layout,
311
+ scale,
312
+ overflowVisible,
313
+ });
314
+ }, [canvasSize, config, layout, overflowVisible, scale]);
309
315
  const onError = (0, react_1.useCallback)((error) => {
310
316
  player.pause();
311
317
  // Pay attention to `this context`
@@ -336,7 +342,7 @@ const PlayerUI = ({ controls, style, loop, autoPlay, allowFullscreen, inputProps
336
342
  requestFullscreen();
337
343
  }
338
344
  }, [exitFullscreen, isFullscreen, requestFullscreen]);
339
- const [handleClick, handleDoubleClick] = (0, use_click_prevention_on_double_click_js_1.useClickPreventionOnDoubleClick)(onSingleClick, onDoubleClick, doubleClickToFullscreen && allowFullscreen && supportsFullScreen);
345
+ const { handlePointerDown, handleDoubleClick } = (0, use_click_prevention_on_double_click_js_1.useClickPreventionOnDoubleClick)(onSingleClick, onDoubleClick, doubleClickToFullscreen && allowFullscreen && supportsFullScreen);
340
346
  (0, react_1.useEffect)(() => {
341
347
  if (shouldAutoplay) {
342
348
  player.play();
@@ -383,11 +389,11 @@ const PlayerUI = ({ controls, style, loop, autoPlay, allowFullscreen, inputProps
383
389
  showPosterWhenBuffering && showBufferIndicator && player.isPlaying(),
384
390
  ].some(Boolean);
385
391
  const { left, top, width, height, ...outerWithoutScale } = outer;
386
- const content = ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", { style: outer, onPointerUp: clickToPlay ? handleClick : undefined, onDoubleClick: doubleClickToFullscreen ? handleDoubleClick : undefined, children: (0, jsx_runtime_1.jsxs)("div", { style: containerStyle, className: player_css_classname_js_1.PLAYER_CSS_CLASSNAME, children: [VideoComponent ? ((0, jsx_runtime_1.jsx)(error_boundary_js_1.ErrorBoundary, { onError: onError, errorFallback: errorFallback, children: (0, jsx_runtime_1.jsx)(remotion_1.Internals.ClipComposition, { children: (0, jsx_runtime_1.jsx)(remotion_1.Internals.CurrentScaleContext.Provider, { value: currentScale, children: (0, jsx_runtime_1.jsx)(VideoComponent, { ...((_c = video === null || video === void 0 ? void 0 : video.props) !== null && _c !== void 0 ? _c : {}), ...(inputProps !== null && inputProps !== void 0 ? inputProps : {}) }) }) }) })) : null, shouldShowPoster && posterFillMode === 'composition-size' ? ((0, jsx_runtime_1.jsx)("div", { style: {
392
+ const content = ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", { style: outer, onPointerDown: clickToPlay ? handlePointerDown : undefined, onDoubleClick: doubleClickToFullscreen ? handleDoubleClick : undefined, children: (0, jsx_runtime_1.jsxs)("div", { style: containerStyle, className: player_css_classname_js_1.PLAYER_CSS_CLASSNAME, children: [VideoComponent ? ((0, jsx_runtime_1.jsx)(error_boundary_js_1.ErrorBoundary, { onError: onError, errorFallback: errorFallback, children: (0, jsx_runtime_1.jsx)(remotion_1.Internals.ClipComposition, { children: (0, jsx_runtime_1.jsx)(remotion_1.Internals.CurrentScaleContext.Provider, { value: currentScale, children: (0, jsx_runtime_1.jsx)(VideoComponent, { ...((_c = video === null || video === void 0 ? void 0 : video.props) !== null && _c !== void 0 ? _c : {}), ...(inputProps !== null && inputProps !== void 0 ? inputProps : {}) }) }) }) })) : null, shouldShowPoster && posterFillMode === 'composition-size' ? ((0, jsx_runtime_1.jsx)("div", { style: {
387
393
  ...outerWithoutScale,
388
394
  width: config.width,
389
395
  height: config.height,
390
- }, onPointerUp: clickToPlay ? handleClick : undefined, onDoubleClick: doubleClickToFullscreen ? handleDoubleClick : undefined, children: poster })) : null] }) }), shouldShowPoster && posterFillMode === 'player-size' ? ((0, jsx_runtime_1.jsx)("div", { style: outer, onPointerUp: clickToPlay ? handleClick : undefined, onDoubleClick: doubleClickToFullscreen ? handleDoubleClick : undefined, children: poster })) : null, controls ? ((0, jsx_runtime_1.jsx)(PlayerControls_js_1.Controls, { fps: config.fps, durationInFrames: config.durationInFrames, player: player, containerRef: container, onFullscreenButtonClick: onFullscreenButtonClick, isFullscreen: isFullscreen, allowFullscreen: allowFullscreen, showVolumeControls: showVolumeControls, onExitFullscreenButtonClick: onExitFullscreenButtonClick, spaceKeyToPlayOrPause: spaceKeyToPlayOrPause, onSeekEnd: onSeekEnd, onSeekStart: onSeekStart, inFrame: inFrame, outFrame: outFrame, initiallyShowControls: initiallyShowControls, canvasSize: canvasSize, renderFullscreenButton: renderFullscreenButton, renderPlayPauseButton: renderPlayPauseButton, alwaysShowControls: alwaysShowControls, showPlaybackRateControl: showPlaybackRateControl, buffering: showBufferIndicator, hideControlsWhenPointerDoesntMove: hideControlsWhenPointerDoesntMove, onDoubleClick: doubleClickToFullscreen ? handleDoubleClick : undefined, onPointerUp: clickToPlay ? handleClick : undefined })) : null] }));
396
+ }, onPointerDown: clickToPlay ? handlePointerDown : undefined, onDoubleClick: doubleClickToFullscreen ? handleDoubleClick : undefined, children: poster })) : null] }) }), shouldShowPoster && posterFillMode === 'player-size' ? ((0, jsx_runtime_1.jsx)("div", { style: outer, onPointerDown: clickToPlay ? handlePointerDown : undefined, onDoubleClick: doubleClickToFullscreen ? handleDoubleClick : undefined, children: poster })) : null, controls ? ((0, jsx_runtime_1.jsx)(PlayerControls_js_1.Controls, { fps: config.fps, durationInFrames: config.durationInFrames, player: player, containerRef: container, onFullscreenButtonClick: onFullscreenButtonClick, isFullscreen: isFullscreen, allowFullscreen: allowFullscreen, showVolumeControls: showVolumeControls, onExitFullscreenButtonClick: onExitFullscreenButtonClick, spaceKeyToPlayOrPause: spaceKeyToPlayOrPause, onSeekEnd: onSeekEnd, onSeekStart: onSeekStart, inFrame: inFrame, outFrame: outFrame, initiallyShowControls: initiallyShowControls, canvasSize: canvasSize, renderFullscreenButton: renderFullscreenButton, renderPlayPauseButton: renderPlayPauseButton, alwaysShowControls: alwaysShowControls, showPlaybackRateControl: showPlaybackRateControl, buffering: showBufferIndicator, hideControlsWhenPointerDoesntMove: hideControlsWhenPointerDoesntMove, onDoubleClick: doubleClickToFullscreen ? handleDoubleClick : undefined, onPointerDown: clickToPlay ? handlePointerDown : undefined })) : null] }));
391
397
  if (is_node_js_1.IS_NODE && !doesReactVersionSupportSuspense) {
392
398
  return ((0, jsx_runtime_1.jsx)("div", { ref: container, style: outerStyle, className: className, children: content }));
393
399
  }
@@ -11,6 +11,7 @@ type ThumbnailProps<Schema extends AnyZodObject, Props extends Record<string, un
11
11
  compositionWidth: number;
12
12
  compositionHeight: number;
13
13
  fps: number;
14
+ overflowVisible?: boolean;
14
15
  errorFallback?: ErrorFallback;
15
16
  renderLoading?: RenderLoading;
16
17
  className?: string;
@@ -11,7 +11,7 @@ const emitter_context_js_1 = require("./emitter-context.js");
11
11
  const event_emitter_js_1 = require("./event-emitter.js");
12
12
  const SharedPlayerContext_js_1 = require("./SharedPlayerContext.js");
13
13
  const ThumbnailUI_js_1 = __importDefault(require("./ThumbnailUI.js"));
14
- const ThumbnailFn = ({ frameToDisplay, style, inputProps, compositionHeight, compositionWidth, durationInFrames, fps, className, errorFallback = () => '⚠️', renderLoading, ...componentProps }, ref) => {
14
+ const ThumbnailFn = ({ frameToDisplay, style, inputProps, compositionHeight, compositionWidth, durationInFrames, fps, className, errorFallback = () => '⚠️', renderLoading, overflowVisible = false, ...componentProps }, ref) => {
15
15
  if (typeof window !== 'undefined') {
16
16
  // eslint-disable-next-line react-hooks/rules-of-hooks
17
17
  (0, react_1.useLayoutEffect)(() => {
@@ -44,7 +44,7 @@ const ThumbnailFn = ({ frameToDisplay, style, inputProps, compositionHeight, com
44
44
  const passedInputProps = (0, react_1.useMemo)(() => {
45
45
  return inputProps !== null && inputProps !== void 0 ? inputProps : {};
46
46
  }, [inputProps]);
47
- return ((0, jsx_runtime_1.jsx)(remotion_1.Internals.IsPlayerContextProvider, { children: (0, jsx_runtime_1.jsx)(SharedPlayerContext_js_1.SharedPlayerContexts, { timelineContext: timelineState, component: Component, compositionHeight: compositionHeight, compositionWidth: compositionWidth, durationInFrames: durationInFrames, fps: fps, numberOfSharedAudioTags: 0, initiallyMuted: true, children: (0, jsx_runtime_1.jsx)(emitter_context_js_1.ThumbnailEmitterContext.Provider, { value: emitter, children: (0, jsx_runtime_1.jsx)(ThumbnailUI_js_1.default, { ref: rootRef, className: className, errorFallback: errorFallback, inputProps: passedInputProps, renderLoading: renderLoading, style: style }) }) }) }));
47
+ return ((0, jsx_runtime_1.jsx)(remotion_1.Internals.IsPlayerContextProvider, { children: (0, jsx_runtime_1.jsx)(SharedPlayerContext_js_1.SharedPlayerContexts, { timelineContext: timelineState, component: Component, compositionHeight: compositionHeight, compositionWidth: compositionWidth, durationInFrames: durationInFrames, fps: fps, numberOfSharedAudioTags: 0, initiallyMuted: true, children: (0, jsx_runtime_1.jsx)(emitter_context_js_1.ThumbnailEmitterContext.Provider, { value: emitter, children: (0, jsx_runtime_1.jsx)(ThumbnailUI_js_1.default, { ref: rootRef, className: className, errorFallback: errorFallback, inputProps: passedInputProps, renderLoading: renderLoading, style: style, overflowVisible: overflowVisible }) }) }) }));
48
48
  };
49
49
  const forward = react_1.forwardRef;
50
50
  /**
@@ -7,5 +7,6 @@ declare const _default: React.ForwardRefExoticComponent<{
7
7
  errorFallback: ErrorFallback;
8
8
  renderLoading: RenderLoading | undefined;
9
9
  className: string | undefined;
10
+ overflowVisible: boolean;
10
11
  } & React.RefAttributes<ThumbnailMethods>>;
11
12
  export default _default;
@@ -38,7 +38,7 @@ if (reactVersion === '0') {
38
38
  throw new Error(`Version ${reactVersion} of "react" is not supported by Remotion`);
39
39
  }
40
40
  const doesReactVersionSupportSuspense = parseInt(reactVersion, 10) >= 18;
41
- const ThumbnailUI = ({ style, inputProps, errorFallback, renderLoading, className }, ref) => {
41
+ const ThumbnailUI = ({ style, inputProps, errorFallback, renderLoading, className, overflowVisible }, ref) => {
42
42
  var _a, _b;
43
43
  const config = remotion_1.Internals.useUnsafeVideoConfig();
44
44
  const video = remotion_1.Internals.useVideo();
@@ -70,19 +70,20 @@ const ThumbnailUI = ({ style, inputProps, errorFallback, renderLoading, classNam
70
70
  }, [scale, thumbnail.emitter]);
71
71
  const VideoComponent = video ? video.component : null;
72
72
  const outerStyle = (0, react_1.useMemo)(() => {
73
- return (0, calculate_scale_js_1.calculateOuterStyle)({ config, style, canvasSize });
74
- }, [canvasSize, config, style]);
73
+ return (0, calculate_scale_js_1.calculateOuterStyle)({ config, style, canvasSize, overflowVisible });
74
+ }, [canvasSize, config, overflowVisible, style]);
75
75
  const outer = (0, react_1.useMemo)(() => {
76
- return (0, calculate_scale_js_1.calculateOuter)({ config, layout, scale });
77
- }, [config, layout, scale]);
76
+ return (0, calculate_scale_js_1.calculateOuter)({ config, layout, scale, overflowVisible });
77
+ }, [config, layout, overflowVisible, scale]);
78
78
  const containerStyle = (0, react_1.useMemo)(() => {
79
79
  return (0, calculate_scale_js_1.calculateContainerStyle)({
80
80
  canvasSize,
81
81
  config,
82
82
  layout,
83
83
  scale,
84
+ overflowVisible,
84
85
  });
85
- }, [canvasSize, config, layout, scale]);
86
+ }, [canvasSize, config, layout, overflowVisible, scale]);
86
87
  const onError = (0, react_1.useCallback)((error) => {
87
88
  // Pay attention to `this context`
88
89
  thumbnail.emitter.dispatchError(error);
@@ -13,21 +13,24 @@ export declare const calculateCanvasTransformation: ({ previewSize, compositionW
13
13
  compositionHeight: number;
14
14
  canvasSize: Size;
15
15
  }) => Layout;
16
- export declare const calculateOuterStyle: ({ config, style, canvasSize, }: {
16
+ export declare const calculateOuterStyle: ({ config, style, canvasSize, overflowVisible, }: {
17
17
  config: VideoConfig | null;
18
18
  style: React.CSSProperties | undefined;
19
19
  canvasSize: Size | null;
20
+ overflowVisible: boolean;
20
21
  }) => React.CSSProperties;
21
- export declare const calculateContainerStyle: ({ config, canvasSize, layout, scale, }: {
22
+ export declare const calculateContainerStyle: ({ config, canvasSize, layout, scale, overflowVisible, }: {
22
23
  config: VideoConfig | null;
23
24
  canvasSize: Size | null;
24
25
  layout: Layout | null;
25
26
  scale: number;
27
+ overflowVisible: boolean;
26
28
  }) => React.CSSProperties;
27
- export declare const calculateOuter: ({ layout, scale, config, }: {
29
+ export declare const calculateOuter: ({ layout, scale, config, overflowVisible, }: {
28
30
  layout: Layout | null;
29
31
  scale: number;
30
32
  config: VideoConfig | null;
33
+ overflowVisible: boolean;
31
34
  }) => {
32
35
  readonly width?: undefined;
33
36
  readonly height?: undefined;
@@ -45,6 +48,6 @@ export declare const calculateOuter: ({ layout, scale, config, }: {
45
48
  readonly position: "absolute";
46
49
  readonly left: number;
47
50
  readonly top: number;
48
- readonly overflow: "hidden";
51
+ readonly overflow: "hidden" | "visible";
49
52
  };
50
53
  export {};
@@ -26,13 +26,13 @@ const calculateCanvasTransformation = ({ previewSize, compositionWidth, composit
26
26
  };
27
27
  };
28
28
  exports.calculateCanvasTransformation = calculateCanvasTransformation;
29
- const calculateOuterStyle = ({ config, style, canvasSize, }) => {
29
+ const calculateOuterStyle = ({ config, style, canvasSize, overflowVisible, }) => {
30
30
  if (!config) {
31
31
  return {};
32
32
  }
33
33
  return {
34
34
  position: 'relative',
35
- overflow: 'hidden',
35
+ overflow: overflowVisible ? 'visible' : 'hidden',
36
36
  ...(0, calculate_player_size_js_1.calculatePlayerSize)({
37
37
  compositionHeight: config.height,
38
38
  compositionWidth: config.width,
@@ -44,7 +44,7 @@ const calculateOuterStyle = ({ config, style, canvasSize, }) => {
44
44
  };
45
45
  };
46
46
  exports.calculateOuterStyle = calculateOuterStyle;
47
- const calculateContainerStyle = ({ config, canvasSize, layout, scale, }) => {
47
+ const calculateContainerStyle = ({ config, canvasSize, layout, scale, overflowVisible, }) => {
48
48
  if (!config || !canvasSize || !layout) {
49
49
  return {};
50
50
  }
@@ -56,11 +56,11 @@ const calculateContainerStyle = ({ config, canvasSize, layout, scale, }) => {
56
56
  transform: `scale(${scale})`,
57
57
  marginLeft: layout.xCorrection,
58
58
  marginTop: layout.yCorrection,
59
- overflow: 'hidden',
59
+ overflow: overflowVisible ? 'visible' : 'hidden',
60
60
  };
61
61
  };
62
62
  exports.calculateContainerStyle = calculateContainerStyle;
63
- const calculateOuter = ({ layout, scale, config, }) => {
63
+ const calculateOuter = ({ layout, scale, config, overflowVisible, }) => {
64
64
  if (!layout || !config) {
65
65
  return {};
66
66
  }
@@ -73,7 +73,7 @@ const calculateOuter = ({ layout, scale, config, }) => {
73
73
  position: 'absolute',
74
74
  left: centerX,
75
75
  top: centerY,
76
- overflow: 'hidden',
76
+ overflow: overflowVisible ? 'visible' : 'hidden',
77
77
  };
78
78
  };
79
79
  exports.calculateOuter = calculateOuter;
@@ -19,7 +19,7 @@ export declare const PlayerInternals: {
19
19
  isFirstFrame: boolean;
20
20
  emitter: PlayerEmitter;
21
21
  playing: boolean;
22
- play: (e?: import("react").SyntheticEvent<Element, Event> | undefined) => void;
22
+ play: (e?: PointerEvent | import("react").SyntheticEvent<Element, Event> | undefined) => void;
23
23
  pause: () => void;
24
24
  pauseAndReturnToPlayStart: () => void;
25
25
  seek: (newFrame: number) => void;
@@ -7,7 +7,7 @@ type UsePlayerMethods = {
7
7
  isFirstFrame: boolean;
8
8
  emitter: PlayerEmitter;
9
9
  playing: boolean;
10
- play: (e?: SyntheticEvent) => void;
10
+ play: (e?: SyntheticEvent | PointerEvent) => void;
11
11
  pause: () => void;
12
12
  pauseAndReturnToPlayStart: () => void;
13
13
  seek: (newFrame: number) => void;
@@ -1,3 +1,7 @@
1
1
  import type { SyntheticEvent } from 'react';
2
- declare const useClickPreventionOnDoubleClick: (onClick: (e: SyntheticEvent) => void, onDoubleClick: () => void, doubleClickToFullscreen: boolean) => [(e: SyntheticEvent) => void, () => void];
2
+ type ReturnVal = {
3
+ handlePointerDown: (e: SyntheticEvent | PointerEvent) => void;
4
+ handleDoubleClick: () => void;
5
+ };
6
+ declare const useClickPreventionOnDoubleClick: (onClick: (e: PointerEvent | SyntheticEvent) => void, onDoubleClick: () => void, doubleClickToFullscreen: boolean) => ReturnVal;
3
7
  export { useClickPreventionOnDoubleClick };
@@ -9,7 +9,9 @@ const useClickPreventionOnDoubleClick = (onClick, onDoubleClick, doubleClickToFu
9
9
  const api = (0, use_cancellable_promises_js_1.useCancellablePromises)();
10
10
  const handleClick = (0, react_1.useCallback)(async (e) => {
11
11
  // UnSupported double click on touch.(mobile)
12
- if (e.nativeEvent.pointerType === 'touch') {
12
+ if (e instanceof PointerEvent
13
+ ? e.pointerType === 'touch'
14
+ : e.nativeEvent.pointerType === 'touch') {
13
15
  onClick(e);
14
16
  return;
15
17
  }
@@ -29,16 +31,23 @@ const useClickPreventionOnDoubleClick = (onClick, onDoubleClick, doubleClickToFu
29
31
  }
30
32
  }
31
33
  }, [api, onClick]);
34
+ const handlePointerDown = (0, react_1.useCallback)(() => {
35
+ document.addEventListener('pointerup', (newEvt) => {
36
+ handleClick(newEvt);
37
+ }, {
38
+ once: true,
39
+ });
40
+ }, [handleClick]);
32
41
  const handleDoubleClick = (0, react_1.useCallback)(() => {
33
42
  api.clearPendingPromises();
34
43
  onDoubleClick();
35
44
  }, [api, onDoubleClick]);
36
45
  const returnValue = (0, react_1.useMemo)(() => {
37
46
  if (!doubleClickToFullscreen) {
38
- return [onClick, () => undefined];
47
+ return { handlePointerDown: onClick, handleDoubleClick: () => undefined };
39
48
  }
40
- return [handleClick, handleDoubleClick];
41
- }, [doubleClickToFullscreen, handleClick, handleDoubleClick, onClick]);
49
+ return { handlePointerDown, handleDoubleClick };
50
+ }, [doubleClickToFullscreen, handleDoubleClick, handlePointerDown, onClick]);
42
51
  return returnValue;
43
52
  };
44
53
  exports.useClickPreventionOnDoubleClick = useClickPreventionOnDoubleClick;