@remotion/player 4.0.179 → 4.0.181

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 (151) hide show
  1. package/dist/cjs/Player.d.ts +3 -2
  2. package/dist/cjs/PlayerControls.d.ts +0 -10
  3. package/dist/cjs/PlayerControls.js +3 -1
  4. package/dist/cjs/PlayerUI.js +13 -2
  5. package/dist/cjs/Thumbnail.d.ts +12 -12
  6. package/dist/cjs/error-boundary.d.ts +1 -1
  7. package/dist/cjs/index.d.ts +2 -1
  8. package/package.json +2 -2
  9. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/BufferingIndicator.d.ts +0 -5
  10. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/BufferingIndicator.js +0 -38
  11. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/DefaultPlayPauseButton.d.ts +0 -5
  12. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/DefaultPlayPauseButton.js +0 -12
  13. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/EmitterProvider.d.ts +0 -5
  14. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/EmitterProvider.js +0 -20
  15. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/MediaVolumeSlider.d.ts +0 -5
  16. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/MediaVolumeSlider.js +0 -129
  17. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/PlaybackrateControl.d.ts +0 -8
  18. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/PlaybackrateControl.js +0 -156
  19. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/Player.d.ts +0 -56
  20. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/Player.js +0 -143
  21. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/PlayerControls.d.ts +0 -47
  22. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/PlayerControls.js +0 -176
  23. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/PlayerSeekBar.d.ts +0 -8
  24. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/PlayerSeekBar.js +0 -145
  25. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/PlayerUI.d.ts +0 -46
  26. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/PlayerUI.js +0 -369
  27. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/SharedPlayerContext.d.ts +0 -15
  28. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/SharedPlayerContext.js +0 -55
  29. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/Thumbnail.d.ts +0 -23
  30. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/Thumbnail.js +0 -48
  31. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/ThumbnailUI.d.ts +0 -11
  32. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/ThumbnailUI.js +0 -89
  33. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/calculate-next-frame.d.ts +0 -14
  34. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/calculate-next-frame.js +0 -24
  35. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/calculate-scale.d.ts +0 -50
  36. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/calculate-scale.js +0 -72
  37. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/emitter-context.d.ts +0 -4
  38. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/emitter-context.js +0 -3
  39. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/error-boundary.d.ts +0 -19
  40. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/error-boundary.js +0 -32
  41. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/event-emitter.d.ts +0 -91
  42. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/event-emitter.js +0 -114
  43. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/format-time.d.ts +0 -1
  44. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/format-time.js +0 -5
  45. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/icons.d.ts +0 -10
  46. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/icons.js +0 -39
  47. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/index.d.ts +0 -64
  48. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/index.js +0 -23
  49. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/is-backgrounded.d.ts +0 -2
  50. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/is-backgrounded.js +0 -20
  51. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/player-css-classname.d.ts +0 -1
  52. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/player-css-classname.js +0 -1
  53. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/player-methods.d.ts +0 -25
  54. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/player-methods.js +0 -1
  55. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/test/index.test.d.ts +0 -1
  56. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/test/index.test.js +0 -7
  57. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/test/test-utils.d.ts +0 -6
  58. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/test/test-utils.js +0 -14
  59. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/test/validate-in-out-frames.test.d.ts +0 -1
  60. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/test/validate-in-out-frames.test.js +0 -54
  61. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/test/validate-prop.test.d.ts +0 -1
  62. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/test/validate-prop.test.js +0 -129
  63. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/use-buffer-state-emitter.d.ts +0 -2
  64. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/use-buffer-state-emitter.js +0 -22
  65. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/use-hover-state.d.ts +0 -1
  66. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/use-hover-state.js +0 -43
  67. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/use-playback.d.ts +0 -8
  68. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/use-playback.js +0 -157
  69. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/use-player.d.ts +0 -24
  70. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/use-player.js +0 -157
  71. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/use-thumbnail.d.ts +0 -6
  72. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/use-thumbnail.js +0 -14
  73. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/use-video-controls-resize.d.ts +0 -11
  74. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/use-video-controls-resize.js +0 -35
  75. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/calculate-player-size.d.ts +0 -9
  76. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/calculate-player-size.js +0 -24
  77. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/cancellable-promise.d.ts +0 -5
  78. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/cancellable-promise.js +0 -22
  79. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/delay.d.ts +0 -1
  80. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/delay.js +0 -2
  81. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/is-node.d.ts +0 -1
  82. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/is-node.js +0 -1
  83. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/props-if-has-props.d.ts +0 -10
  84. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/props-if-has-props.js +0 -1
  85. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/use-cancellable-promises.d.ts +0 -7
  86. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/use-cancellable-promises.js +0 -18
  87. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/use-click-prevention-on-double-click.d.ts +0 -3
  88. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/use-click-prevention-on-double-click.js +0 -41
  89. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/use-component-visible.d.ts +0 -6
  90. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/use-component-visible.js +0 -18
  91. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/use-element-size.d.ts +0 -16
  92. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/use-element-size.js +0 -127
  93. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/validate-in-out-frame.d.ts +0 -6
  94. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/validate-in-out-frame.js +0 -49
  95. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/validate-initial-frame.d.ts +0 -4
  96. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/validate-initial-frame.js +0 -23
  97. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/validate-playbackrate.d.ts +0 -1
  98. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/utils/validate-playbackrate.js +0 -14
  99. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/validate.d.ts +0 -5
  100. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/validate.js +0 -6
  101. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/volume-persistance.d.ts +0 -2
  102. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/esm/volume-persistance.js +0 -29
  103. package/.rollup.cache/Users/jonathanburger/remotion/packages/player/dist/tsconfig-esm.tsbuildinfo +0 -1
  104. package/dist/esm/BufferingIndicator.d.ts +0 -5
  105. package/dist/esm/DefaultPlayPauseButton.d.ts +0 -5
  106. package/dist/esm/EmitterProvider.d.ts +0 -5
  107. package/dist/esm/MediaVolumeSlider.d.ts +0 -5
  108. package/dist/esm/PlaybackrateControl.d.ts +0 -8
  109. package/dist/esm/Player.d.ts +0 -56
  110. package/dist/esm/PlayerControls.d.ts +0 -47
  111. package/dist/esm/PlayerSeekBar.d.ts +0 -8
  112. package/dist/esm/PlayerUI.d.ts +0 -46
  113. package/dist/esm/SharedPlayerContext.d.ts +0 -15
  114. package/dist/esm/Thumbnail.d.ts +0 -23
  115. package/dist/esm/ThumbnailUI.d.ts +0 -11
  116. package/dist/esm/calculate-next-frame.d.ts +0 -14
  117. package/dist/esm/calculate-scale.d.ts +0 -50
  118. package/dist/esm/emitter-context.d.ts +0 -4
  119. package/dist/esm/error-boundary.d.ts +0 -19
  120. package/dist/esm/event-emitter.d.ts +0 -91
  121. package/dist/esm/format-time.d.ts +0 -1
  122. package/dist/esm/icons.d.ts +0 -10
  123. package/dist/esm/index.d.ts +0 -64
  124. package/dist/esm/is-backgrounded.d.ts +0 -2
  125. package/dist/esm/player-css-classname.d.ts +0 -1
  126. package/dist/esm/player-methods.d.ts +0 -25
  127. package/dist/esm/test/index.test.d.ts +0 -1
  128. package/dist/esm/test/test-utils.d.ts +0 -6
  129. package/dist/esm/test/validate-in-out-frames.test.d.ts +0 -1
  130. package/dist/esm/test/validate-prop.test.d.ts +0 -1
  131. package/dist/esm/use-buffer-state-emitter.d.ts +0 -2
  132. package/dist/esm/use-hover-state.d.ts +0 -1
  133. package/dist/esm/use-playback.d.ts +0 -8
  134. package/dist/esm/use-player.d.ts +0 -24
  135. package/dist/esm/use-thumbnail.d.ts +0 -6
  136. package/dist/esm/use-video-controls-resize.d.ts +0 -11
  137. package/dist/esm/utils/calculate-player-size.d.ts +0 -9
  138. package/dist/esm/utils/cancellable-promise.d.ts +0 -5
  139. package/dist/esm/utils/delay.d.ts +0 -1
  140. package/dist/esm/utils/is-node.d.ts +0 -1
  141. package/dist/esm/utils/props-if-has-props.d.ts +0 -10
  142. package/dist/esm/utils/use-cancellable-promises.d.ts +0 -7
  143. package/dist/esm/utils/use-click-prevention-on-double-click.d.ts +0 -3
  144. package/dist/esm/utils/use-component-visible.d.ts +0 -6
  145. package/dist/esm/utils/use-element-size.d.ts +0 -16
  146. package/dist/esm/utils/validate-in-out-frame.d.ts +0 -6
  147. package/dist/esm/utils/validate-initial-frame.d.ts +0 -4
  148. package/dist/esm/utils/validate-playbackrate.d.ts +0 -1
  149. package/dist/esm/validate.d.ts +0 -5
  150. package/dist/esm/volume-persistance.d.ts +0 -2
  151. package/dist/tsconfig-esm.tsbuildinfo +0 -1
@@ -9,7 +9,7 @@ import type { PropsIfHasProps } from './utils/props-if-has-props.js';
9
9
  export type ErrorFallback = (info: {
10
10
  error: Error;
11
11
  }) => React.ReactNode;
12
- export type PlayerProps<Schema extends AnyZodObject, Props> = {
12
+ export type PlayerProps<Schema extends AnyZodObject, Props extends Record<string, unknown>> = {
13
13
  readonly durationInFrames: number;
14
14
  readonly compositionWidth: number;
15
15
  readonly compositionHeight: number;
@@ -49,6 +49,7 @@ export type PlayerProps<Schema extends AnyZodObject, Props> = {
49
49
  readonly hideControlsWhenPointerDoesntMove?: boolean | number;
50
50
  readonly overflowVisible?: boolean;
51
51
  } & CompProps<Props> & PropsIfHasProps<Schema, Props>;
52
+ export type PlayerPropsWithoutZod<Props extends Record<string, unknown>> = PlayerProps<AnyZodObject, Props>;
52
53
  export declare const componentOrNullIfLazy: <Props>(props: CompProps<Props>) => ComponentType<Props> | null;
53
54
  /**
54
55
  * @description Creates and renders a customizable video player with various interactive controls for a React application.
@@ -57,4 +58,4 @@ export declare const componentOrNullIfLazy: <Props>(props: CompProps<Props>) =>
57
58
  * @param {MutableRefObject<PlayerRef>} ref Reference to the player for controlling playback, volume, and other aspects.
58
59
  * @returns {JSX.Element} The rendered video player component.
59
60
  */
60
- export declare const Player: <Schema extends AnyZodObject, Props>(props: PlayerProps<Schema, Props> & React.RefAttributes<PlayerRef>) => React.ReactElement | null;
61
+ export declare const Player: <Schema extends AnyZodObject, Props extends Record<string, unknown>>(props: PlayerProps<Schema, Props> & React.RefAttributes<PlayerRef>) => React.ReactElement | null;
@@ -9,16 +9,6 @@ export type RenderPlayPauseButton = (props: {
9
9
  export type RenderFullscreenButton = (props: {
10
10
  isFullscreen: boolean;
11
11
  }) => ReactNode;
12
- declare global {
13
- interface Document {
14
- webkitFullscreenEnabled?: boolean;
15
- webkitFullscreenElement?: Element;
16
- webkitExitFullscreen?: Document['exitFullscreen'];
17
- }
18
- interface HTMLDivElement {
19
- webkitRequestFullScreen: HTMLDivElement['requestFullscreen'];
20
- }
21
- }
22
12
  export declare const Controls: React.FC<{
23
13
  readonly fps: number;
24
14
  readonly durationInFrames: number;
@@ -117,7 +117,9 @@ const Controls = ({ durationInFrames, isFullscreen, fps, player, showVolumeContr
117
117
  var _a;
118
118
  // Must be handled client-side to avoid SSR hydration mismatch
119
119
  setSupportsFullscreen((_a = (typeof document !== 'undefined' &&
120
- (document.fullscreenEnabled || document.webkitFullscreenEnabled))) !== null && _a !== void 0 ? _a : false);
120
+ (document.fullscreenEnabled ||
121
+ // @ts-expect-error Types not defined
122
+ document.webkitFullscreenEnabled))) !== null && _a !== void 0 ? _a : false);
121
123
  }, []);
122
124
  (0, react_1.useEffect)(() => {
123
125
  if (shouldShowInitially === false) {
@@ -57,7 +57,9 @@ const PlayerUI = ({ controls, style, loop, autoPlay, allowFullscreen, inputProps
57
57
  if (typeof document === 'undefined') {
58
58
  return false;
59
59
  }
60
- return Boolean(document.fullscreenEnabled || document.webkitFullscreenEnabled);
60
+ return Boolean(document.fullscreenEnabled ||
61
+ // @ts-expect-error Types not defined
62
+ document.webkitFullscreenEnabled);
61
63
  }, []);
62
64
  const player = (0, use_player_js_1.usePlayer)();
63
65
  (0, use_playback_js_1.usePlayback)({
@@ -81,6 +83,7 @@ const PlayerUI = ({ controls, style, loop, autoPlay, allowFullscreen, inputProps
81
83
  }
82
84
  const onFullscreenChange = () => {
83
85
  setIsFullscreen(document.fullscreenElement === current ||
86
+ // @ts-expect-error Types not defined
84
87
  document.webkitFullscreenElement === current);
85
88
  };
86
89
  document.addEventListener('fullscreenchange', onFullscreenChange);
@@ -108,7 +111,9 @@ const PlayerUI = ({ controls, style, loop, autoPlay, allowFullscreen, inputProps
108
111
  if (!container.current) {
109
112
  throw new Error('No player ref found');
110
113
  }
114
+ // @ts-expect-error Types not defined
111
115
  if (container.current.webkitRequestFullScreen) {
116
+ // @ts-expect-error Types not defined
112
117
  container.current.webkitRequestFullScreen();
113
118
  }
114
119
  else {
@@ -116,7 +121,9 @@ const PlayerUI = ({ controls, style, loop, autoPlay, allowFullscreen, inputProps
116
121
  }
117
122
  }, [allowFullscreen, supportsFullScreen]);
118
123
  const exitFullscreen = (0, react_1.useCallback)(() => {
124
+ // @ts-expect-error Types not defined
119
125
  if (document.webkitExitFullscreen) {
126
+ // @ts-expect-error Types not defined
120
127
  document.webkitExitFullscreen();
121
128
  }
122
129
  else {
@@ -130,7 +137,11 @@ const PlayerUI = ({ controls, style, loop, autoPlay, allowFullscreen, inputProps
130
137
  }
131
138
  const fullscreenChange = () => {
132
139
  var _a;
133
- const element = (_a = document.webkitFullscreenElement) !== null && _a !== void 0 ? _a : document.fullscreenElement;
140
+ const element =
141
+ // @ts-expect-error Types not defined
142
+ (_a = document.webkitFullscreenElement) !== null && _a !== void 0 ? _a :
143
+ // defined
144
+ document.fullscreenElement;
134
145
  if (element && element === container.current) {
135
146
  player.emitter.dispatchFullscreenChange({
136
147
  isFullscreen: true,
@@ -4,21 +4,21 @@ import type { AnyZodObject } from 'zod';
4
4
  import type { ThumbnailMethods } from './player-methods.js';
5
5
  import type { ErrorFallback, RenderLoading } from './PlayerUI.js';
6
6
  import type { PropsIfHasProps } from './utils/props-if-has-props.js';
7
- type ThumbnailProps<Schema extends AnyZodObject, Props extends Record<string, unknown>> = PropsIfHasProps<Schema, Props> & CompProps<Props> & {
8
- frameToDisplay: number;
9
- style?: CSSProperties;
10
- durationInFrames: number;
11
- compositionWidth: number;
12
- compositionHeight: number;
13
- fps: number;
14
- overflowVisible?: boolean;
15
- errorFallback?: ErrorFallback;
16
- renderLoading?: RenderLoading;
17
- className?: string;
7
+ export type ThumbnailProps<Schema extends AnyZodObject, Props extends Record<string, unknown>> = PropsIfHasProps<Schema, Props> & CompProps<Props> & {
8
+ readonly frameToDisplay: number;
9
+ readonly style?: CSSProperties;
10
+ readonly durationInFrames: number;
11
+ readonly compositionWidth: number;
12
+ readonly compositionHeight: number;
13
+ readonly fps: number;
14
+ readonly overflowVisible?: boolean;
15
+ readonly errorFallback?: ErrorFallback;
16
+ readonly renderLoading?: RenderLoading;
17
+ readonly className?: string;
18
18
  };
19
+ export type ThumbnailPropsWithoutZod<Props extends Record<string, unknown>> = ThumbnailProps<AnyZodObject, Props>;
19
20
  /**
20
21
  * @description A component which can be rendered in a regular React App (for example: Next.js, Vite) to display a single frame of a video.
21
22
  * @see [Documentation](https://www.remotion.dev/docs/player/thumbnail)
22
23
  */
23
24
  export declare const Thumbnail: <Schema extends AnyZodObject, Props extends Record<string, unknown>>(props: ThumbnailProps<Schema, Props> & import("react").RefAttributes<ThumbnailMethods>) => React.ReactElement | null;
24
- export {};
@@ -15,5 +15,5 @@ export declare class ErrorBoundary extends React.Component<{
15
15
  hasError: Error;
16
16
  };
17
17
  componentDidCatch(error: Error): void;
18
- render(): string | number | boolean | import("react/jsx-runtime").JSX.Element | Iterable<React.ReactNode> | null | undefined;
18
+ render(): string | number | boolean | Iterable<React.ReactNode> | import("react/jsx-runtime").JSX.Element | null | undefined;
19
19
  }
@@ -3,10 +3,11 @@ import type { CallbackListener, PlayerEventTypes } from './event-emitter.js';
3
3
  import { PlayerEmitter } from './event-emitter.js';
4
4
  export type { PlayerMethods, PlayerRef, ThumbnailMethods, ThumbnailRef, } from './player-methods.js';
5
5
  export { Player } from './Player.js';
6
- export type { PlayerProps } from './Player.js';
6
+ export type { PlayerProps, PlayerPropsWithoutZod } from './Player.js';
7
7
  export type { RenderFullscreenButton, RenderPlayPauseButton, } from './PlayerControls.js';
8
8
  export type { ErrorFallback, RenderLoading, RenderPoster } from './PlayerUI.js';
9
9
  export { Thumbnail } from './Thumbnail.js';
10
+ export type { ThumbnailProps, ThumbnailPropsWithoutZod } from './Thumbnail.js';
10
11
  export type { Size } from './utils/use-element-size.js';
11
12
  export type { CallbackListener, PlayerEventTypes as EventTypes };
12
13
  export declare const PlayerInternals: {
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "url": "https://github.com/remotion-dev/remotion/tree/main/packages/player"
4
4
  },
5
5
  "name": "@remotion/player",
6
- "version": "4.0.179",
6
+ "version": "4.0.181",
7
7
  "description": "React component for embedding a Remotion preview into your app",
8
8
  "main": "dist/cjs/index.js",
9
9
  "types": "dist/cjs/index.d.ts",
@@ -28,7 +28,7 @@
28
28
  ],
29
29
  "license": "SEE LICENSE IN LICENSE.md",
30
30
  "dependencies": {
31
- "remotion": "4.0.179"
31
+ "remotion": "4.0.181"
32
32
  },
33
33
  "peerDependencies": {
34
34
  "react": ">=16.8.0",
@@ -1,5 +0,0 @@
1
- import React from 'react';
2
- export declare const bufferingIndicatorStrokeWidth = 3;
3
- export declare const BufferingIndicator: React.FC<{
4
- type: 'player' | 'studio';
5
- }>;
@@ -1,38 +0,0 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { ICON_SIZE } from './icons.js';
3
- const className = '__remotion_buffering_indicator';
4
- const remotionBufferingAnimation = '__remotion_buffering_animation';
5
- export const bufferingIndicatorStrokeWidth = 3;
6
- const playerStyle = {
7
- width: ICON_SIZE,
8
- height: ICON_SIZE,
9
- overflow: 'hidden',
10
- lineHeight: 'normal',
11
- fontSize: 'inherit',
12
- };
13
- const studioStyle = {
14
- width: 14,
15
- height: 14,
16
- overflow: 'hidden',
17
- lineHeight: 'normal',
18
- fontSize: 'inherit',
19
- };
20
- export const BufferingIndicator = ({ type }) => {
21
- const style = type === 'player' ? playerStyle : studioStyle;
22
- return (_jsxs(_Fragment, { children: [_jsx("style", { type: "text/css", children: `
23
- @keyframes ${remotionBufferingAnimation} {
24
- 0% {
25
- rotate: 0deg;
26
- }
27
- 100% {
28
- rotate: 360deg;
29
- }
30
- }
31
-
32
- .${className} {
33
- animation: ${remotionBufferingAnimation} 1s linear infinite;
34
- }
35
- ` }), _jsx("div", { style: style, children: _jsx("svg", { viewBox: type === 'player' ? '0 0 22 22' : '0 0 18 18', style: style, className: className, children: _jsx("path", { d: type === 'player'
36
- ? 'M 11 4 A 7 7 0 0 1 15.1145 16.66312'
37
- : 'M 9 2 A 7 7 0 0 1 13.1145 14.66312', stroke: "white", strokeLinecap: "round", fill: "none", strokeWidth: 3 }) }) })] }));
38
- };
@@ -1,5 +0,0 @@
1
- /// <reference types="react" />
2
- export declare const DefaultPlayPauseButton: React.FC<{
3
- playing: boolean;
4
- buffering: boolean;
5
- }>;
@@ -1,12 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { BufferingIndicator } from './BufferingIndicator.js';
3
- import { PauseIcon, PlayIcon } from './icons.js';
4
- export const DefaultPlayPauseButton = ({ playing, buffering }) => {
5
- if (playing && buffering) {
6
- return _jsx(BufferingIndicator, { type: "player" });
7
- }
8
- if (playing) {
9
- return _jsx(PauseIcon, {});
10
- }
11
- return _jsx(PlayIcon, {});
12
- };
@@ -1,5 +0,0 @@
1
- import React from 'react';
2
- export declare const PlayerEmitterProvider: React.FC<{
3
- children: React.ReactNode;
4
- currentPlaybackRate: number | null;
5
- }>;
@@ -1,20 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { useContext, useEffect, useState } from 'react';
3
- import { Internals } from 'remotion';
4
- import { PlayerEventEmitterContext } from './emitter-context.js';
5
- import { PlayerEmitter } from './event-emitter.js';
6
- import { useBufferStateEmitter } from './use-buffer-state-emitter.js';
7
- export const PlayerEmitterProvider = ({ children, currentPlaybackRate }) => {
8
- const [emitter] = useState(() => new PlayerEmitter());
9
- const bufferManager = useContext(Internals.BufferingContextReact);
10
- if (!bufferManager) {
11
- throw new Error('BufferingContextReact not found');
12
- }
13
- useEffect(() => {
14
- if (currentPlaybackRate) {
15
- emitter.dispatchRateChange(currentPlaybackRate);
16
- }
17
- }, [emitter, currentPlaybackRate]);
18
- useBufferStateEmitter(emitter);
19
- return (_jsx(PlayerEventEmitterContext.Provider, { value: emitter, children: children }));
20
- };
@@ -1,5 +0,0 @@
1
- import React from 'react';
2
- export declare const VOLUME_SLIDER_WIDTH = 100;
3
- export declare const MediaVolumeSlider: React.FC<{
4
- displayVerticalVolumeSlider: Boolean;
5
- }>;
@@ -1,129 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import React, { useCallback, useMemo, useRef, useState } from 'react';
3
- import { Internals, random } from 'remotion';
4
- import { ICON_SIZE, VolumeOffIcon, VolumeOnIcon } from './icons.js';
5
- import { useHoverState } from './use-hover-state.js';
6
- const BAR_HEIGHT = 5;
7
- const KNOB_SIZE = 12;
8
- export const VOLUME_SLIDER_WIDTH = 100;
9
- export const MediaVolumeSlider = ({ displayVerticalVolumeSlider }) => {
10
- const [mediaMuted, setMediaMuted] = Internals.useMediaMutedState();
11
- const [mediaVolume, setMediaVolume] = Internals.useMediaVolumeState();
12
- const [focused, setFocused] = useState(false);
13
- const parentDivRef = useRef(null);
14
- const inputRef = useRef(null);
15
- const hover = useHoverState(parentDivRef, false);
16
- // Need to import it from React to fix React 17 ESM support.
17
- const randomId =
18
- // eslint-disable-next-line react-hooks/rules-of-hooks
19
- typeof React.useId === 'undefined' ? 'volume-slider' : React.useId();
20
- const [randomClass] = useState(() => `__remotion-volume-slider-${random(randomId)}`.replace('.', ''));
21
- const isMutedOrZero = mediaMuted || mediaVolume === 0;
22
- const onVolumeChange = useCallback((e) => {
23
- setMediaVolume(parseFloat(e.target.value));
24
- }, [setMediaVolume]);
25
- const onBlur = () => {
26
- setTimeout(() => {
27
- // We need a small delay to check which element was focused next,
28
- // and if it wasn't the volume slider, we hide it
29
- if (document.activeElement !== inputRef.current) {
30
- setFocused(false);
31
- }
32
- }, 10);
33
- };
34
- const isVolume0 = mediaVolume === 0;
35
- const onClick = useCallback(() => {
36
- if (isVolume0) {
37
- setMediaVolume(1);
38
- setMediaMuted(false);
39
- return;
40
- }
41
- setMediaMuted((mute) => !mute);
42
- }, [isVolume0, setMediaMuted, setMediaVolume]);
43
- const parentDivStyle = useMemo(() => {
44
- return {
45
- display: 'inline-flex',
46
- background: 'none',
47
- border: 'none',
48
- justifyContent: 'center',
49
- alignItems: 'center',
50
- touchAction: 'none',
51
- ...(displayVerticalVolumeSlider && { position: 'relative' }),
52
- };
53
- }, [displayVerticalVolumeSlider]);
54
- const volumeContainer = useMemo(() => {
55
- return {
56
- display: 'inline',
57
- width: ICON_SIZE,
58
- height: ICON_SIZE,
59
- cursor: 'pointer',
60
- appearance: 'none',
61
- background: 'none',
62
- border: 'none',
63
- padding: 0,
64
- };
65
- }, []);
66
- const sliderContainer = useMemo(() => {
67
- const paddingLeft = 5;
68
- const common = {
69
- paddingLeft,
70
- height: ICON_SIZE,
71
- width: VOLUME_SLIDER_WIDTH,
72
- };
73
- if (displayVerticalVolumeSlider) {
74
- return {
75
- ...common,
76
- position: 'absolute',
77
- transform: `rotate(-90deg) translateX(${VOLUME_SLIDER_WIDTH / 2 + ICON_SIZE / 2}px)`,
78
- };
79
- }
80
- return {
81
- ...common,
82
- };
83
- }, [displayVerticalVolumeSlider]);
84
- const inputStyle = useMemo(() => {
85
- const commonStyle = {
86
- WebkitAppearance: 'none',
87
- backgroundColor: 'rgba(255, 255, 255, 0.5)',
88
- borderRadius: BAR_HEIGHT / 2,
89
- cursor: 'pointer',
90
- height: BAR_HEIGHT,
91
- width: VOLUME_SLIDER_WIDTH,
92
- backgroundImage: `linear-gradient(
93
- to right,
94
- white ${mediaVolume * 100}%, rgba(255, 255, 255, 0) ${mediaVolume * 100}%
95
- )`,
96
- };
97
- if (displayVerticalVolumeSlider) {
98
- return {
99
- ...commonStyle,
100
- bottom: ICON_SIZE + VOLUME_SLIDER_WIDTH / 2,
101
- };
102
- }
103
- return commonStyle;
104
- }, [displayVerticalVolumeSlider, mediaVolume]);
105
- const sliderStyle = `
106
- .${randomClass}::-webkit-slider-thumb {
107
- -webkit-appearance: none;
108
- background-color: white;
109
- border-radius: ${KNOB_SIZE / 2}px;
110
- box-shadow: 0 0 2px black;
111
- height: ${KNOB_SIZE}px;
112
- width: ${KNOB_SIZE}px;
113
- }
114
-
115
- .${randomClass}::-moz-range-thumb {
116
- -webkit-appearance: none;
117
- background-color: white;
118
- border-radius: ${KNOB_SIZE / 2}px;
119
- box-shadow: 0 0 2px black;
120
- height: ${KNOB_SIZE}px;
121
- width: ${KNOB_SIZE}px;
122
- }
123
- `;
124
- return (_jsxs("div", { ref: parentDivRef, style: parentDivStyle, children: [_jsx("style", {
125
- // eslint-disable-next-line react/no-danger
126
- dangerouslySetInnerHTML: {
127
- __html: sliderStyle,
128
- } }), _jsx("button", { "aria-label": isMutedOrZero ? 'Unmute sound' : 'Mute sound', title: isMutedOrZero ? 'Unmute sound' : 'Mute sound', onClick: onClick, onBlur: onBlur, onFocus: () => setFocused(true), style: volumeContainer, type: "button", children: isMutedOrZero ? _jsx(VolumeOffIcon, {}) : _jsx(VolumeOnIcon, {}) }), (focused || hover) && !mediaMuted && !Internals.isIosSafari() ? (_jsx("div", { style: sliderContainer, children: _jsx("input", { ref: inputRef, "aria-label": "Change volume", className: randomClass, max: 1, min: 0, onBlur: () => setFocused(false), onChange: onVolumeChange, step: 0.01, type: "range", value: mediaVolume, style: inputStyle }) })) : null] }));
129
- };
@@ -1,8 +0,0 @@
1
- import React from 'react';
2
- import type { Size } from './utils/use-element-size.js';
3
- export declare const Checkmark: () => import("react/jsx-runtime.js").JSX.Element;
4
- export declare const playerButtonStyle: React.CSSProperties;
5
- export declare const PlaybackrateControl: React.FC<{
6
- playbackRates: number[];
7
- canvasSize: Size;
8
- }>;
@@ -1,156 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useCallback, useContext, useEffect, useMemo, useState, } from 'react';
3
- import { Internals } from 'remotion';
4
- import useComponentVisible from './utils/use-component-visible.js';
5
- // To align
6
- const BOTTOM = 35;
7
- // Arbitrary to clamp the height of the popup
8
- const THRESHOLD = 70;
9
- const rateDiv = {
10
- height: 30,
11
- paddingRight: 15,
12
- paddingLeft: 12,
13
- display: 'flex',
14
- flexDirection: 'row',
15
- alignItems: 'center',
16
- };
17
- const checkmarkContainer = {
18
- width: 22,
19
- display: 'flex',
20
- alignItems: 'center',
21
- };
22
- const checkmarkStyle = {
23
- width: 14,
24
- height: 14,
25
- color: 'black',
26
- };
27
- export const Checkmark = () => (_jsx("svg", { viewBox: "0 0 512 512", style: checkmarkStyle, children: _jsx("path", { fill: "currentColor", d: "M435.848 83.466L172.804 346.51l-96.652-96.652c-4.686-4.686-12.284-4.686-16.971 0l-28.284 28.284c-4.686 4.686-4.686 12.284 0 16.971l133.421 133.421c4.686 4.686 12.284 4.686 16.971 0l299.813-299.813c4.686-4.686 4.686-12.284 0-16.971l-28.284-28.284c-4.686-4.686-12.284-4.686-16.97 0z" }) }));
28
- const PlaybackrateOption = ({ rate, onSelect, selectedRate, keyboardSelectedRate }) => {
29
- const onClick = useCallback((e) => {
30
- e.stopPropagation();
31
- e.preventDefault();
32
- onSelect(rate);
33
- }, [onSelect, rate]);
34
- const [hovered, setHovered] = useState(false);
35
- const onMouseEnter = useCallback(() => {
36
- setHovered(true);
37
- }, []);
38
- const onMouseLeave = useCallback(() => {
39
- setHovered(false);
40
- }, []);
41
- const isFocused = keyboardSelectedRate === rate;
42
- const actualStyle = useMemo(() => {
43
- return {
44
- ...rateDiv,
45
- backgroundColor: hovered || isFocused ? '#eee' : 'transparent',
46
- };
47
- }, [hovered, isFocused]);
48
- return (_jsxs("div", { onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave, tabIndex: 0, style: actualStyle, onClick: onClick, children: [_jsx("div", { style: checkmarkContainer, children: rate === selectedRate ? _jsx(Checkmark, {}) : null }), rate.toFixed(1), "x"] }, rate));
49
- };
50
- const PlaybackPopup = ({ setIsComponentVisible, playbackRates, canvasSize }) => {
51
- const { setPlaybackRate, playbackRate } = useContext(Internals.Timeline.TimelineContext);
52
- const [keyboardSelectedRate, setKeyboardSelectedRate] = useState(playbackRate);
53
- useEffect(() => {
54
- const listener = (e) => {
55
- e.preventDefault();
56
- if (e.key === 'ArrowUp') {
57
- const currentIndex = playbackRates.findIndex((rate) => rate === keyboardSelectedRate);
58
- if (currentIndex === 0) {
59
- return;
60
- }
61
- if (currentIndex === -1) {
62
- setKeyboardSelectedRate(playbackRates[0]);
63
- }
64
- else {
65
- setKeyboardSelectedRate(playbackRates[currentIndex - 1]);
66
- }
67
- }
68
- else if (e.key === 'ArrowDown') {
69
- const currentIndex = playbackRates.findIndex((rate) => rate === keyboardSelectedRate);
70
- if (currentIndex === playbackRates.length - 1) {
71
- return;
72
- }
73
- if (currentIndex === -1) {
74
- setKeyboardSelectedRate(playbackRates[playbackRates.length - 1]);
75
- }
76
- else {
77
- setKeyboardSelectedRate(playbackRates[currentIndex + 1]);
78
- }
79
- }
80
- else if (e.key === 'Enter') {
81
- setPlaybackRate(keyboardSelectedRate);
82
- setIsComponentVisible(false);
83
- }
84
- };
85
- window.addEventListener('keydown', listener);
86
- return () => {
87
- window.removeEventListener('keydown', listener);
88
- };
89
- }, [
90
- playbackRates,
91
- keyboardSelectedRate,
92
- setPlaybackRate,
93
- setIsComponentVisible,
94
- ]);
95
- const onSelect = useCallback((rate) => {
96
- setPlaybackRate(rate);
97
- setIsComponentVisible(false);
98
- }, [setIsComponentVisible, setPlaybackRate]);
99
- const playbackPopup = useMemo(() => {
100
- return {
101
- position: 'absolute',
102
- right: 0,
103
- width: 125,
104
- maxHeight: canvasSize.height - THRESHOLD - BOTTOM,
105
- bottom: 35,
106
- background: '#fff',
107
- borderRadius: 4,
108
- overflow: 'auto',
109
- color: 'black',
110
- textAlign: 'left',
111
- };
112
- }, [canvasSize.height]);
113
- return (_jsx("div", { style: playbackPopup, children: playbackRates.map((rate) => {
114
- return (_jsx(PlaybackrateOption, { selectedRate: playbackRate, onSelect: onSelect, rate: rate, keyboardSelectedRate: keyboardSelectedRate }, rate));
115
- }) }));
116
- };
117
- const label = {
118
- fontSize: 13,
119
- fontWeight: 'bold',
120
- color: 'white',
121
- border: '2px solid white',
122
- borderRadius: 20,
123
- paddingLeft: 8,
124
- paddingRight: 8,
125
- paddingTop: 2,
126
- paddingBottom: 2,
127
- };
128
- export const playerButtonStyle = {
129
- appearance: 'none',
130
- backgroundColor: 'transparent',
131
- border: 'none',
132
- cursor: 'pointer',
133
- paddingLeft: 0,
134
- paddingRight: 0,
135
- paddingTop: 6,
136
- paddingBottom: 6,
137
- height: 37,
138
- display: 'inline-flex',
139
- marginBottom: 0,
140
- marginTop: 0,
141
- alignItems: 'center',
142
- };
143
- const button = {
144
- ...playerButtonStyle,
145
- position: 'relative',
146
- };
147
- export const PlaybackrateControl = ({ playbackRates, canvasSize }) => {
148
- const { ref, isComponentVisible, setIsComponentVisible } = useComponentVisible(false);
149
- const { playbackRate } = useContext(Internals.Timeline.TimelineContext);
150
- const onClick = useCallback((e) => {
151
- e.stopPropagation();
152
- e.preventDefault();
153
- setIsComponentVisible((prevIsComponentVisible) => !prevIsComponentVisible);
154
- }, [setIsComponentVisible]);
155
- return (_jsx("div", { ref: ref, children: _jsxs("button", { type: "button", "aria-label": "Change playback rate", style: button, onClick: onClick, children: [_jsxs("div", { style: label, children: [playbackRate, "x"] }), isComponentVisible && (_jsx(PlaybackPopup, { canvasSize: canvasSize, playbackRates: playbackRates, setIsComponentVisible: setIsComponentVisible }))] }) }));
156
- };
@@ -1,56 +0,0 @@
1
- import type { ComponentType } from 'react';
2
- import React from 'react';
3
- import type { CompProps } from 'remotion';
4
- import type { AnyZodObject } from 'zod';
5
- import type { PlayerRef } from './player-methods.js';
6
- import type { RenderFullscreenButton, RenderPlayPauseButton } from './PlayerControls.js';
7
- import type { PosterFillMode, RenderLoading, RenderPoster } from './PlayerUI.js';
8
- import type { PropsIfHasProps } from './utils/props-if-has-props.js';
9
- export type ErrorFallback = (info: {
10
- error: Error;
11
- }) => React.ReactNode;
12
- export type PlayerProps<Schema extends AnyZodObject, Props> = {
13
- durationInFrames: number;
14
- compositionWidth: number;
15
- compositionHeight: number;
16
- fps: number;
17
- showVolumeControls?: boolean;
18
- controls?: boolean;
19
- errorFallback?: ErrorFallback;
20
- style?: React.CSSProperties;
21
- loop?: boolean;
22
- autoPlay?: boolean;
23
- allowFullscreen?: boolean;
24
- clickToPlay?: boolean;
25
- doubleClickToFullscreen?: boolean;
26
- spaceKeyToPlayOrPause?: boolean;
27
- numberOfSharedAudioTags?: number;
28
- playbackRate?: number;
29
- renderLoading?: RenderLoading;
30
- moveToBeginningWhenEnded?: boolean;
31
- className?: string;
32
- initialFrame?: number;
33
- renderPoster?: RenderPoster;
34
- showPosterWhenPaused?: boolean;
35
- showPosterWhenEnded?: boolean;
36
- showPosterWhenUnplayed?: boolean;
37
- showPosterWhenBuffering?: boolean;
38
- inFrame?: number | null;
39
- outFrame?: number | null;
40
- initiallyShowControls?: number | boolean;
41
- renderPlayPauseButton?: RenderPlayPauseButton;
42
- renderFullscreenButton?: RenderFullscreenButton;
43
- alwaysShowControls?: boolean;
44
- schema?: Schema;
45
- initiallyMuted?: boolean;
46
- showPlaybackRateControl?: boolean | number[];
47
- posterFillMode?: PosterFillMode;
48
- bufferStateDelayInMilliseconds?: number;
49
- hideControlsWhenPointerDoesntMove?: boolean | number;
50
- } & CompProps<Props> & PropsIfHasProps<Schema, Props>;
51
- export declare const componentOrNullIfLazy: <Props>(props: CompProps<Props>) => ComponentType<Props> | null;
52
- /**
53
- * @description A component which can be rendered in a regular React App (for example: Vite, Next.js) to display a Remotion video.
54
- * @see [Documentation](https://www.remotion.dev/docs/player/player)
55
- */
56
- export declare const Player: <Schema extends AnyZodObject, Props>(props: PlayerProps<Schema, Props> & React.RefAttributes<PlayerRef>) => React.ReactElement | null;