@remotion/player 4.0.0-webhook.27 → 4.1.0-alpha1

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 (144) hide show
  1. package/LICENSE.md +8 -8
  2. package/README.md +1 -1
  3. package/dist/{MediaVolumeSlider.d.ts → cjs/MediaVolumeSlider.d.ts} +0 -0
  4. package/dist/{MediaVolumeSlider.js → cjs/MediaVolumeSlider.js} +41 -17
  5. package/dist/cjs/PlaybackrateControl.d.ts +8 -0
  6. package/dist/cjs/PlaybackrateControl.js +163 -0
  7. package/dist/cjs/Player.d.ts +52 -0
  8. package/dist/{Player.js → cjs/Player.js} +41 -87
  9. package/dist/{PlayerControls.d.ts → cjs/PlayerControls.d.ts} +14 -5
  10. package/dist/cjs/PlayerControls.js +161 -0
  11. package/dist/{PlayerSeekBar.d.ts → cjs/PlayerSeekBar.d.ts} +0 -0
  12. package/dist/{PlayerSeekBar.js → cjs/PlayerSeekBar.js} +6 -6
  13. package/dist/{PlayerUI.d.ts → cjs/PlayerUI.d.ts} +13 -12
  14. package/dist/{PlayerUI.js → cjs/PlayerUI.js} +54 -72
  15. package/dist/cjs/SharedPlayerContext.d.ts +15 -0
  16. package/dist/cjs/SharedPlayerContext.js +75 -0
  17. package/dist/cjs/Thumbnail.d.ts +24 -0
  18. package/dist/cjs/Thumbnail.js +46 -0
  19. package/dist/cjs/ThumbnailUI.d.ts +11 -0
  20. package/dist/cjs/ThumbnailUI.js +107 -0
  21. package/dist/{calculate-next-frame.d.ts → cjs/calculate-next-frame.d.ts} +0 -0
  22. package/dist/{calculate-next-frame.js → cjs/calculate-next-frame.js} +0 -0
  23. package/dist/cjs/calculate-scale.d.ts +39 -0
  24. package/dist/cjs/calculate-scale.js +85 -0
  25. package/dist/cjs/emitter-context.d.ts +4 -0
  26. package/dist/{emitter-context.js → cjs/emitter-context.js} +2 -1
  27. package/dist/{error-boundary.d.ts → cjs/error-boundary.d.ts} +0 -0
  28. package/dist/{error-boundary.js → cjs/error-boundary.js} +0 -0
  29. package/dist/cjs/event-emitter.d.ts +81 -0
  30. package/dist/{event-emitter.js → cjs/event-emitter.js} +43 -3
  31. package/dist/{format-time.d.ts → cjs/format-time.d.ts} +0 -0
  32. package/dist/{format-time.js → cjs/format-time.js} +0 -0
  33. package/dist/{icons.d.ts → cjs/icons.d.ts} +1 -1
  34. package/dist/{icons.js → cjs/icons.js} +4 -4
  35. package/dist/{index.d.ts → cjs/index.d.ts} +13 -11
  36. package/dist/cjs/index.js +25 -0
  37. package/dist/cjs/is-backgrounded.d.ts +2 -0
  38. package/dist/cjs/is-backgrounded.js +24 -0
  39. package/dist/{player-css-classname.d.ts → cjs/player-css-classname.d.ts} +0 -0
  40. package/dist/{player-css-classname.js → cjs/player-css-classname.js} +0 -0
  41. package/dist/{player-methods.d.ts → cjs/player-methods.d.ts} +9 -6
  42. package/dist/{player-methods.js → cjs/player-methods.js} +0 -0
  43. package/dist/{test → cjs/test}/index.test.d.ts +0 -0
  44. package/dist/cjs/test/index.test.js +9 -0
  45. package/dist/{test → cjs/test}/test-utils.d.ts +0 -0
  46. package/dist/{test → cjs/test}/test-utils.js +0 -0
  47. package/dist/{test → cjs/test}/validate-in-out-frames.test.d.ts +0 -0
  48. package/dist/{test → cjs/test}/validate-in-out-frames.test.js +13 -12
  49. package/dist/{test → cjs/test}/validate-prop.test.d.ts +0 -0
  50. package/dist/cjs/test/validate-prop.test.js +131 -0
  51. package/dist/{use-hover-state.d.ts → cjs/use-hover-state.d.ts} +0 -0
  52. package/dist/{use-hover-state.js → cjs/use-hover-state.js} +0 -0
  53. package/dist/{use-playback.d.ts → cjs/use-playback.d.ts} +0 -0
  54. package/dist/{use-playback.js → cjs/use-playback.js} +46 -9
  55. package/dist/{use-player.d.ts → cjs/use-player.d.ts} +2 -2
  56. package/dist/{use-player.js → cjs/use-player.js} +2 -2
  57. package/dist/cjs/use-thumbnail.d.ts +6 -0
  58. package/dist/cjs/use-thumbnail.js +18 -0
  59. package/dist/{use-video-controls-resize.d.ts → cjs/use-video-controls-resize.d.ts} +8 -4
  60. package/dist/{use-video-controls-resize.js → cjs/use-video-controls-resize.js} +16 -13
  61. package/dist/{utils → cjs/utils}/calculate-player-size.d.ts +1 -1
  62. package/dist/{utils → cjs/utils}/calculate-player-size.js +9 -10
  63. package/dist/{utils → cjs/utils}/cancellable-promise.d.ts +1 -1
  64. package/dist/{utils → cjs/utils}/cancellable-promise.js +0 -0
  65. package/dist/{utils → cjs/utils}/delay.d.ts +0 -0
  66. package/dist/{utils → cjs/utils}/delay.js +0 -0
  67. package/dist/{utils → cjs/utils}/is-node.d.ts +0 -0
  68. package/dist/{utils → cjs/utils}/is-node.js +0 -0
  69. package/dist/{utils → cjs/utils}/preview-size.d.ts +2 -2
  70. package/dist/{utils → cjs/utils}/preview-size.js +0 -0
  71. package/dist/cjs/utils/props-if-has-props.d.ts +10 -0
  72. package/dist/cjs/utils/props-if-has-props.js +2 -0
  73. package/dist/{utils → cjs/utils}/use-cancellable-promises.d.ts +1 -1
  74. package/dist/{utils → cjs/utils}/use-cancellable-promises.js +0 -0
  75. package/dist/{utils → cjs/utils}/use-click-prevention-on-double-click.d.ts +0 -0
  76. package/dist/{utils → cjs/utils}/use-click-prevention-on-double-click.js +5 -5
  77. package/dist/cjs/utils/use-component-visible.d.ts +6 -0
  78. package/dist/cjs/utils/use-component-visible.js +21 -0
  79. package/dist/{utils → cjs/utils}/use-element-size.d.ts +2 -1
  80. package/dist/{utils → cjs/utils}/use-element-size.js +29 -12
  81. package/dist/{utils → cjs/utils}/validate-in-out-frame.d.ts +1 -1
  82. package/dist/{utils → cjs/utils}/validate-in-out-frame.js +13 -13
  83. package/dist/{utils → cjs/utils}/validate-initial-frame.d.ts +0 -0
  84. package/dist/{utils → cjs/utils}/validate-initial-frame.js +0 -0
  85. package/dist/{utils → cjs/utils}/validate-playbackrate.d.ts +0 -0
  86. package/dist/{utils → cjs/utils}/validate-playbackrate.js +0 -0
  87. package/dist/{volume-persistance.d.ts → cjs/volume-persistance.d.ts} +0 -0
  88. package/dist/{volume-persistance.js → cjs/volume-persistance.js} +0 -0
  89. package/dist/esm/MediaVolumeSlider.d.ts +5 -0
  90. package/dist/esm/PlaybackrateControl.d.ts +8 -0
  91. package/dist/esm/Player.d.ts +52 -0
  92. package/dist/esm/PlayerControls.d.ts +42 -0
  93. package/dist/esm/PlayerSeekBar.d.ts +8 -0
  94. package/dist/esm/PlayerUI.d.ts +40 -0
  95. package/dist/esm/SharedPlayerContext.d.ts +15 -0
  96. package/dist/esm/Thumbnail.d.ts +24 -0
  97. package/dist/esm/ThumbnailUI.d.ts +11 -0
  98. package/dist/esm/calculate-next-frame.d.ts +14 -0
  99. package/dist/esm/calculate-scale.d.ts +39 -0
  100. package/dist/esm/emitter-context.d.ts +4 -0
  101. package/dist/esm/error-boundary.d.ts +19 -0
  102. package/dist/esm/event-emitter.d.ts +81 -0
  103. package/dist/esm/format-time.d.ts +1 -0
  104. package/dist/esm/icons.d.ts +10 -0
  105. package/dist/esm/index.d.ts +61 -0
  106. package/dist/esm/index.mjs +2132 -0
  107. package/dist/esm/is-backgrounded.d.ts +2 -0
  108. package/dist/esm/player-css-classname.d.ts +1 -0
  109. package/dist/esm/player-methods.d.ts +24 -0
  110. package/dist/esm/test/index.test.d.ts +1 -0
  111. package/dist/esm/test/test-utils.d.ts +6 -0
  112. package/dist/esm/test/validate-in-out-frames.test.d.ts +1 -0
  113. package/dist/esm/test/validate-prop.test.d.ts +1 -0
  114. package/dist/esm/use-hover-state.d.ts +1 -0
  115. package/dist/esm/use-playback.d.ts +7 -0
  116. package/dist/esm/use-player.d.ts +19 -0
  117. package/dist/esm/use-thumbnail.d.ts +6 -0
  118. package/dist/esm/use-video-controls-resize.d.ts +11 -0
  119. package/dist/esm/utils/calculate-player-size.d.ts +9 -0
  120. package/dist/esm/utils/cancellable-promise.d.ts +5 -0
  121. package/dist/esm/utils/delay.d.ts +1 -0
  122. package/dist/esm/utils/is-node.d.ts +1 -0
  123. package/dist/esm/utils/preview-size.d.ts +8 -0
  124. package/dist/esm/utils/props-if-has-props.d.ts +10 -0
  125. package/dist/esm/utils/use-cancellable-promises.d.ts +7 -0
  126. package/dist/esm/utils/use-click-prevention-on-double-click.d.ts +3 -0
  127. package/dist/esm/utils/use-component-visible.d.ts +6 -0
  128. package/dist/esm/utils/use-element-size.d.ts +16 -0
  129. package/dist/esm/utils/validate-in-out-frame.d.ts +6 -0
  130. package/dist/esm/utils/validate-initial-frame.d.ts +4 -0
  131. package/dist/esm/utils/validate-playbackrate.d.ts +1 -0
  132. package/dist/esm/volume-persistance.d.ts +2 -0
  133. package/dist/tsconfig-esm.tsbuildinfo +1 -0
  134. package/dist/tsconfig.tsbuildinfo +1 -0
  135. package/package.json +80 -66
  136. package/dist/Player.d.ts +0 -49
  137. package/dist/PlayerControls.js +0 -137
  138. package/dist/calculate-scale.d.ts +0 -20
  139. package/dist/calculate-scale.js +0 -33
  140. package/dist/emitter-context.d.ts +0 -3
  141. package/dist/event-emitter.d.ts +0 -52
  142. package/dist/index.js +0 -23
  143. package/dist/test/index.test.js +0 -8
  144. package/dist/test/validate-prop.test.js +0 -130
@@ -20,11 +20,11 @@ const useElementSize = (ref, options) => {
20
20
  const { contentRect } = entries[0];
21
21
  // The clientRect returns the size with `scale()` being applied.
22
22
  const newSize = entries[0].target.getClientRects();
23
- if (!newSize || !newSize[0]) {
23
+ if (!(newSize === null || newSize === void 0 ? void 0 : newSize[0])) {
24
24
  setSize(null);
25
25
  return;
26
26
  }
27
- const probableCssParentScale = newSize[0].width / contentRect.width;
27
+ const probableCssParentScale = contentRect.width === 0 ? 1 : newSize[0].width / contentRect.width;
28
28
  const width = options.shouldApplyCssTransforms
29
29
  ? newSize[0].width
30
30
  : newSize[0].width * (1 / probableCssParentScale);
@@ -52,15 +52,27 @@ const useElementSize = (ref, options) => {
52
52
  setSize(null);
53
53
  return;
54
54
  }
55
- setSize({
56
- width: rect[0].width,
57
- height: rect[0].height,
58
- left: rect[0].x,
59
- top: rect[0].y,
60
- windowSize: {
61
- height: window.innerHeight,
62
- width: window.innerWidth,
63
- },
55
+ setSize((prevState) => {
56
+ const isSame = prevState &&
57
+ prevState.width === rect[0].width &&
58
+ prevState.height === rect[0].height &&
59
+ prevState.left === rect[0].x &&
60
+ prevState.top === rect[0].y &&
61
+ prevState.windowSize.height === window.innerHeight &&
62
+ prevState.windowSize.width === window.innerWidth;
63
+ if (isSame) {
64
+ return prevState;
65
+ }
66
+ return {
67
+ width: rect[0].width,
68
+ height: rect[0].height,
69
+ left: rect[0].x,
70
+ top: rect[0].y,
71
+ windowSize: {
72
+ height: window.innerHeight,
73
+ width: window.innerWidth,
74
+ },
75
+ };
64
76
  });
65
77
  }, [ref]);
66
78
  (0, react_1.useEffect)(() => {
@@ -93,6 +105,11 @@ const useElementSize = (ref, options) => {
93
105
  elementSizeHooks = elementSizeHooks.filter((e) => e !== updateSize);
94
106
  };
95
107
  }, [updateSize]);
96
- return size;
108
+ return (0, react_1.useMemo)(() => {
109
+ if (!size) {
110
+ return null;
111
+ }
112
+ return { ...size, refresh: updateSize };
113
+ }, [size, updateSize]);
97
114
  };
98
115
  exports.useElementSize = useElementSize;
@@ -1,4 +1,4 @@
1
- export declare const validateSingleFrameFrame: (frame: unknown, variableName: string) => number | null;
1
+ export declare const validateSingleFrame: (frame: unknown, variableName: string) => number | null;
2
2
  export declare const validateInOutFrames: ({ inFrame, durationInFrames, outFrame, }: {
3
3
  inFrame: unknown;
4
4
  outFrame: unknown;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.validateInOutFrames = exports.validateSingleFrameFrame = void 0;
4
- const validateSingleFrameFrame = (frame, variableName) => {
3
+ exports.validateInOutFrames = exports.validateSingleFrame = void 0;
4
+ const validateSingleFrame = (frame, variableName) => {
5
5
  if (typeof frame === 'undefined' || frame === null) {
6
6
  return frame !== null && frame !== void 0 ? frame : null;
7
7
  }
@@ -19,11 +19,11 @@ const validateSingleFrameFrame = (frame, variableName) => {
19
19
  }
20
20
  return frame;
21
21
  };
22
- exports.validateSingleFrameFrame = validateSingleFrameFrame;
22
+ exports.validateSingleFrame = validateSingleFrame;
23
23
  const validateInOutFrames = ({ inFrame, durationInFrames, outFrame, }) => {
24
- const validatedInFrame = (0, exports.validateSingleFrameFrame)(inFrame, 'inFrame');
25
- const validateOutFrame = (0, exports.validateSingleFrameFrame)(outFrame, 'outFrame');
26
- if (validatedInFrame === null && validateOutFrame === null) {
24
+ const validatedInFrame = (0, exports.validateSingleFrame)(inFrame, 'inFrame');
25
+ const validatedOutFrame = (0, exports.validateSingleFrame)(outFrame, 'outFrame');
26
+ if (validatedInFrame === null && validatedOutFrame === null) {
27
27
  return;
28
28
  }
29
29
  // Must not be over the duration
@@ -31,22 +31,22 @@ const validateInOutFrames = ({ inFrame, durationInFrames, outFrame, }) => {
31
31
  throw new Error('inFrame must be less than (durationInFrames - 1), but is ' +
32
32
  validatedInFrame);
33
33
  }
34
- if (validateOutFrame !== null && validateOutFrame > durationInFrames - 1) {
34
+ if (validatedOutFrame !== null && validatedOutFrame > durationInFrames - 1) {
35
35
  throw new Error('outFrame must be less than (durationInFrames - 1), but is ' +
36
- validatedInFrame);
36
+ validatedOutFrame);
37
37
  }
38
38
  // Must not be under 0
39
39
  if (validatedInFrame !== null && validatedInFrame < 0) {
40
40
  throw new Error('inFrame must be greater than 0, but is ' + validatedInFrame);
41
41
  }
42
- if (validateOutFrame !== null && validateOutFrame < 0) {
43
- throw new Error('outFrame must be greater than 0, but is ' + validateOutFrame);
42
+ if (validatedOutFrame !== null && validatedOutFrame <= 0) {
43
+ throw new Error(`outFrame must be greater than 0, but is ${validatedOutFrame}. If you want to render a single frame, use <Thumbnail /> instead.`);
44
44
  }
45
- if (validateOutFrame !== null &&
45
+ if (validatedOutFrame !== null &&
46
46
  validatedInFrame !== null &&
47
- validateOutFrame <= validatedInFrame) {
47
+ validatedOutFrame <= validatedInFrame) {
48
48
  throw new Error('outFrame must be greater than inFrame, but is ' +
49
- validateOutFrame +
49
+ validatedOutFrame +
50
50
  ' <= ' +
51
51
  validatedInFrame);
52
52
  }
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ export declare const VOLUME_SLIDER_WIDTH = 100;
3
+ export declare const MediaVolumeSlider: React.FC<{
4
+ displayVerticalVolumeSlider: Boolean;
5
+ }>;
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import type { Size } from './utils/use-element-size.js';
3
+ export declare const Checkmark: () => JSX.Element;
4
+ export declare const playerButtonStyle: React.CSSProperties;
5
+ export declare const PlaybackrateControl: React.FC<{
6
+ playbackRates: number[];
7
+ canvasSize: Size;
8
+ }>;
@@ -0,0 +1,52 @@
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 { 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
+ inFrame?: number | null;
38
+ outFrame?: number | null;
39
+ initiallyShowControls?: number | boolean;
40
+ renderPlayPauseButton?: RenderPlayPauseButton;
41
+ renderFullscreenButton?: RenderFullscreenButton;
42
+ alwaysShowControls?: boolean;
43
+ schema?: Schema;
44
+ initiallyMuted?: boolean;
45
+ showPlaybackRateControl?: boolean | number[];
46
+ } & CompProps<Props> & PropsIfHasProps<Schema, Props>;
47
+ export declare const componentOrNullIfLazy: <Props>(props: CompProps<Props>) => ComponentType<Props> | null;
48
+ /**
49
+ * @description A component which can be rendered in a regular React App (for example: Create React App, Next.js) to display a Remotion video.
50
+ * @see [Documentation](https://www.remotion.dev/docs/player/player)
51
+ */
52
+ export declare const Player: <Schema extends AnyZodObject, Props>(props: PlayerProps<Schema, Props> & React.RefAttributes<PlayerRef>) => React.ReactElement | null;
@@ -0,0 +1,42 @@
1
+ import type { MouseEventHandler, ReactNode } from 'react';
2
+ import React from 'react';
3
+ import type { usePlayer } from './use-player.js';
4
+ import type { Size } from './utils/use-element-size.js';
5
+ export type RenderPlayPauseButton = (props: {
6
+ playing: boolean;
7
+ }) => ReactNode;
8
+ export type RenderFullscreenButton = (props: {
9
+ isFullscreen: boolean;
10
+ }) => ReactNode;
11
+ declare global {
12
+ interface Document {
13
+ webkitFullscreenEnabled?: boolean;
14
+ webkitFullscreenElement?: Element;
15
+ webkitExitFullscreen?: Document['exitFullscreen'];
16
+ }
17
+ interface HTMLDivElement {
18
+ webkitRequestFullScreen: HTMLDivElement['requestFullscreen'];
19
+ }
20
+ }
21
+ export declare const Controls: React.FC<{
22
+ fps: number;
23
+ durationInFrames: number;
24
+ hovered: boolean;
25
+ showVolumeControls: boolean;
26
+ player: ReturnType<typeof usePlayer>;
27
+ onFullscreenButtonClick: MouseEventHandler<HTMLButtonElement>;
28
+ isFullscreen: boolean;
29
+ allowFullscreen: boolean;
30
+ onExitFullscreenButtonClick: MouseEventHandler<HTMLButtonElement>;
31
+ spaceKeyToPlayOrPause: boolean;
32
+ onSeekEnd: () => void;
33
+ onSeekStart: () => void;
34
+ inFrame: number | null;
35
+ outFrame: number | null;
36
+ initiallyShowControls: number | boolean;
37
+ canvasSize: Size | null;
38
+ renderPlayPauseButton: RenderPlayPauseButton | null;
39
+ renderFullscreenButton: RenderFullscreenButton | null;
40
+ alwaysShowControls: boolean;
41
+ showPlaybackRateControl: boolean | number[];
42
+ }>;
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ export declare const PlayerSeekBar: React.FC<{
3
+ durationInFrames: number;
4
+ onSeekStart: () => void;
5
+ onSeekEnd: () => void;
6
+ inFrame: number | null;
7
+ outFrame: number | null;
8
+ }>;
@@ -0,0 +1,40 @@
1
+ import React from 'react';
2
+ import type { PlayerRef } from './player-methods.js';
3
+ import type { RenderFullscreenButton, RenderPlayPauseButton } from './PlayerControls.js';
4
+ export type ErrorFallback = (info: {
5
+ error: Error;
6
+ }) => React.ReactNode;
7
+ export type RenderLoading = (canvas: {
8
+ height: number;
9
+ width: number;
10
+ }) => React.ReactNode;
11
+ export type RenderPoster = RenderLoading;
12
+ declare const _default: React.ForwardRefExoticComponent<{
13
+ controls: boolean;
14
+ loop: boolean;
15
+ autoPlay: boolean;
16
+ allowFullscreen: boolean;
17
+ inputProps: Record<string, unknown>;
18
+ showVolumeControls: boolean;
19
+ style?: React.CSSProperties | undefined;
20
+ clickToPlay: boolean;
21
+ doubleClickToFullscreen: boolean;
22
+ spaceKeyToPlayOrPause: boolean;
23
+ errorFallback: ErrorFallback;
24
+ playbackRate: number;
25
+ renderLoading: RenderLoading | undefined;
26
+ renderPoster: RenderLoading | undefined;
27
+ className: string | undefined;
28
+ moveToBeginningWhenEnded: boolean;
29
+ showPosterWhenPaused: boolean;
30
+ showPosterWhenEnded: boolean;
31
+ showPosterWhenUnplayed: boolean;
32
+ inFrame: number | null;
33
+ outFrame: number | null;
34
+ initiallyShowControls: number | boolean;
35
+ renderPlayPauseButton: RenderPlayPauseButton | null;
36
+ renderFullscreen: RenderFullscreenButton | null;
37
+ alwaysShowControls: boolean;
38
+ showPlaybackRateControl: boolean | number[];
39
+ } & React.RefAttributes<PlayerRef>>;
40
+ export default _default;
@@ -0,0 +1,15 @@
1
+ import type { ComponentType, LazyExoticComponent } from 'react';
2
+ import React from 'react';
3
+ import type { TimelineContextValue } from 'remotion';
4
+ export declare const SharedPlayerContexts: React.FC<{
5
+ children: React.ReactNode;
6
+ timelineContext: TimelineContextValue;
7
+ inputProps?: Record<string, unknown>;
8
+ fps: number;
9
+ compositionWidth: number;
10
+ compositionHeight: number;
11
+ durationInFrames: number;
12
+ component: LazyExoticComponent<ComponentType<unknown>>;
13
+ numberOfSharedAudioTags: number;
14
+ initiallyMuted: boolean;
15
+ }>;
@@ -0,0 +1,24 @@
1
+ import type { CSSProperties, MutableRefObject } from 'react';
2
+ import type { CompProps } from 'remotion';
3
+ import type { AnyZodObject } from 'zod';
4
+ import type { ThumbnailMethods } from './player-methods.js';
5
+ import type { ErrorFallback, RenderLoading } from './PlayerUI.js';
6
+ import type { PropsIfHasProps } from './utils/props-if-has-props.js';
7
+ type ThumbnailProps<Schema extends AnyZodObject, Props> = PropsIfHasProps<Schema, Props> & CompProps<Schema> & {
8
+ frameToDisplay: number;
9
+ style?: CSSProperties;
10
+ durationInFrames: number;
11
+ compositionWidth: number;
12
+ compositionHeight: number;
13
+ fps: number;
14
+ errorFallback?: ErrorFallback;
15
+ renderLoading?: RenderLoading;
16
+ className?: string;
17
+ };
18
+ export declare const ThumbnailFn: <Schema extends AnyZodObject, Props>({ frameToDisplay, style, inputProps, compositionHeight, compositionWidth, durationInFrames, fps, className, errorFallback, renderLoading, ...componentProps }: ThumbnailProps<Schema, Props>, ref: MutableRefObject<ThumbnailMethods>) => JSX.Element;
19
+ /**
20
+ * @description A component which can be rendered in a regular React App (for example: Create React App, Next.js) to display a single frame of a video.
21
+ * @see [Documentation](https://www.remotion.dev/docs/player/thumbnail)
22
+ */
23
+ export declare const Thumbnail: <Schema extends AnyZodObject, Props>(props: ThumbnailProps<Schema, Props> & import("react").RefAttributes<ThumbnailMethods>) => React.ReactElement | null;
24
+ export {};
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import type { ThumbnailMethods } from './player-methods.js';
3
+ import type { ErrorFallback, RenderLoading } from './PlayerUI.js';
4
+ declare const _default: React.ForwardRefExoticComponent<{
5
+ inputProps: Record<string, unknown>;
6
+ style?: React.CSSProperties | undefined;
7
+ errorFallback: ErrorFallback;
8
+ renderLoading: RenderLoading | undefined;
9
+ className: string | undefined;
10
+ } & React.RefAttributes<ThumbnailMethods>>;
11
+ export default _default;
@@ -0,0 +1,14 @@
1
+ export declare const calculateNextFrame: ({ time, currentFrame: startFrame, playbackSpeed, fps, actualLastFrame, actualFirstFrame, framesAdvanced, shouldLoop, }: {
2
+ time: number;
3
+ currentFrame: number;
4
+ playbackSpeed: number;
5
+ fps: number;
6
+ actualFirstFrame: number;
7
+ actualLastFrame: number;
8
+ framesAdvanced: number;
9
+ shouldLoop: boolean;
10
+ }) => {
11
+ nextFrame: number;
12
+ framesToAdvance: number;
13
+ hasEnded: boolean;
14
+ };
@@ -0,0 +1,39 @@
1
+ import type { VideoConfig } from 'remotion';
2
+ import type { PreviewSize } from './utils/preview-size.js';
3
+ import type { Size } from './utils/use-element-size.js';
4
+ export declare const calculateScale: ({ canvasSize, compositionHeight, compositionWidth, previewSize, }: {
5
+ previewSize: PreviewSize['size'];
6
+ compositionWidth: number;
7
+ compositionHeight: number;
8
+ canvasSize: Size;
9
+ }) => number;
10
+ type Layout = {
11
+ centerX: number;
12
+ centerY: number;
13
+ xCorrection: number;
14
+ yCorrection: number;
15
+ scale: number;
16
+ };
17
+ export declare const calculateCanvasTransformation: ({ previewSize, compositionWidth, compositionHeight, canvasSize, }: {
18
+ previewSize: PreviewSize['size'];
19
+ compositionWidth: number;
20
+ compositionHeight: number;
21
+ canvasSize: Size;
22
+ }) => Layout;
23
+ export declare const calculateOuterStyle: ({ config, style, canvasSize, }: {
24
+ config: VideoConfig | null;
25
+ style: React.CSSProperties | undefined;
26
+ canvasSize: Size | null;
27
+ }) => React.CSSProperties;
28
+ export declare const calculateContainerStyle: ({ config, canvasSize, layout, scale, }: {
29
+ config: VideoConfig | null;
30
+ canvasSize: Size | null;
31
+ layout: Layout | null;
32
+ scale: number;
33
+ }) => React.CSSProperties;
34
+ export declare const calculateOuter: ({ layout, scale, config, }: {
35
+ layout: Layout | null;
36
+ scale: number;
37
+ config: VideoConfig | null;
38
+ }) => React.CSSProperties;
39
+ export {};
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import type { PlayerEmitter, ThumbnailEmitter } from './event-emitter.js';
3
+ export declare const PlayerEventEmitterContext: React.Context<PlayerEmitter | undefined>;
4
+ export declare const ThumbnailEmitterContext: React.Context<ThumbnailEmitter | undefined>;
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ export declare class ErrorBoundary extends React.Component<{
3
+ onError: (error: Error) => void;
4
+ children: React.ReactNode;
5
+ errorFallback: (info: {
6
+ error: Error;
7
+ }) => React.ReactNode;
8
+ }, {
9
+ hasError: Error | null;
10
+ }> {
11
+ state: {
12
+ hasError: null;
13
+ };
14
+ static getDerivedStateFromError(error: Error): {
15
+ hasError: Error;
16
+ };
17
+ componentDidCatch(error: Error): void;
18
+ render(): string | number | boolean | JSX.Element | React.ReactFragment | null | undefined;
19
+ }
@@ -0,0 +1,81 @@
1
+ type SeekPayload = {
2
+ frame: number;
3
+ };
4
+ type ErrorPayload = {
5
+ error: Error;
6
+ };
7
+ type TimeUpdateEventPayload = {
8
+ frame: number;
9
+ };
10
+ type FrameUpdateEventPayload = {
11
+ frame: number;
12
+ };
13
+ type RateChangeEventPayload = {
14
+ playbackRate: number;
15
+ };
16
+ type ScaleChangeEventPayload = {
17
+ scale: number;
18
+ };
19
+ type VolumeChangeEventPayload = {
20
+ volume: number;
21
+ };
22
+ type FullscreenChangeEventPayload = {
23
+ isFullscreen: boolean;
24
+ };
25
+ type MuteChangeEventPayload = {
26
+ isMuted: boolean;
27
+ };
28
+ type PlayerStateEventMap = {
29
+ seeked: SeekPayload;
30
+ pause: undefined;
31
+ play: undefined;
32
+ ratechange: RateChangeEventPayload;
33
+ scalechange: ScaleChangeEventPayload;
34
+ volumechange: VolumeChangeEventPayload;
35
+ ended: undefined;
36
+ error: ErrorPayload;
37
+ timeupdate: TimeUpdateEventPayload;
38
+ frameupdate: FrameUpdateEventPayload;
39
+ fullscreenchange: FullscreenChangeEventPayload;
40
+ mutechange: MuteChangeEventPayload;
41
+ };
42
+ type ThumbnailStateEventMap = {
43
+ error: ErrorPayload;
44
+ };
45
+ export type PlayerEventTypes = keyof PlayerStateEventMap;
46
+ export type ThumbnailEventTypes = keyof ThumbnailStateEventMap;
47
+ export type CallbackListener<T extends PlayerEventTypes> = (data: {
48
+ detail: PlayerStateEventMap[T];
49
+ }) => void;
50
+ type PlayerListeners = {
51
+ [EventType in PlayerEventTypes]: CallbackListener<EventType>[];
52
+ };
53
+ type ThumbnailListeners = {
54
+ [EventType in ThumbnailEventTypes]: CallbackListener<EventType>[];
55
+ };
56
+ export declare class PlayerEmitter {
57
+ listeners: PlayerListeners;
58
+ addEventListener<Q extends PlayerEventTypes>(name: Q, callback: CallbackListener<Q>): void;
59
+ removeEventListener<Q extends PlayerEventTypes>(name: Q, callback: CallbackListener<Q>): void;
60
+ private dispatchEvent;
61
+ dispatchSeek(frame: number): void;
62
+ dispatchVolumeChange(volume: number): void;
63
+ dispatchPause(): void;
64
+ dispatchPlay(): void;
65
+ dispatchEnded(): void;
66
+ dispatchRateChange(playbackRate: number): void;
67
+ dispatchScaleChange(scale: number): void;
68
+ dispatchError(error: Error): void;
69
+ dispatchTimeUpdate(event: TimeUpdateEventPayload): void;
70
+ dispatchFrameUpdate(event: FrameUpdateEventPayload): void;
71
+ dispatchFullscreenChange(event: FullscreenChangeEventPayload): void;
72
+ dispatchMuteChange(event: MuteChangeEventPayload): void;
73
+ }
74
+ export declare class ThumbnailEmitter {
75
+ listeners: ThumbnailListeners;
76
+ addEventListener<Q extends ThumbnailEventTypes>(name: Q, callback: CallbackListener<Q>): void;
77
+ removeEventListener<Q extends ThumbnailEventTypes>(name: Q, callback: CallbackListener<Q>): void;
78
+ private dispatchEvent;
79
+ dispatchError(error: Error): void;
80
+ }
81
+ export {};
@@ -0,0 +1 @@
1
+ export declare const formatTime: (timeInSeconds: number) => string;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ export declare const ICON_SIZE = 25;
3
+ export declare const fullscreenIconSize = 16;
4
+ export declare const PlayIcon: React.FC;
5
+ export declare const PauseIcon: React.FC;
6
+ export declare const FullscreenIcon: React.FC<{
7
+ isFullscreen: boolean;
8
+ }>;
9
+ export declare const VolumeOffIcon: React.FC;
10
+ export declare const VolumeOnIcon: React.FC;
@@ -0,0 +1,61 @@
1
+ /// <reference types="react" />
2
+ import type { CallbackListener, PlayerEventTypes } from './event-emitter.js';
3
+ import { PlayerEmitter } from './event-emitter.js';
4
+ export { PlayerMethods, PlayerRef, ThumbnailMethods, ThumbnailRef, } from './player-methods.js';
5
+ export { Player, PlayerProps } from './Player.js';
6
+ export type { RenderFullscreenButton, RenderPlayPauseButton, } from './PlayerControls.js';
7
+ export type { ErrorFallback, RenderLoading, RenderPoster } from './PlayerUI.js';
8
+ export { Thumbnail } from './Thumbnail.js';
9
+ export { PreviewSize, Translation } from './utils/preview-size.js';
10
+ export { Size } from './utils/use-element-size.js';
11
+ export type { CallbackListener, PlayerEventTypes as EventTypes };
12
+ export declare const PlayerInternals: {
13
+ PlayerEventEmitterContext: import("react").Context<PlayerEmitter | undefined>;
14
+ PlayerEmitter: typeof PlayerEmitter;
15
+ usePlayer: () => {
16
+ frameBack: (frames: number) => void;
17
+ frameForward: (frames: number) => void;
18
+ isLastFrame: boolean;
19
+ isFirstFrame: boolean;
20
+ emitter: PlayerEmitter;
21
+ playing: boolean;
22
+ play: (e?: import("react").SyntheticEvent<Element, Event> | undefined) => void;
23
+ pause: () => void;
24
+ pauseAndReturnToPlayStart: () => void;
25
+ seek: (newFrame: number) => void;
26
+ getCurrentFrame: () => number;
27
+ isPlaying: () => boolean;
28
+ hasPlayed: boolean;
29
+ };
30
+ usePlayback: ({ loop, playbackRate, moveToBeginningWhenEnded, inFrame, outFrame, }: {
31
+ loop: boolean;
32
+ playbackRate: number;
33
+ moveToBeginningWhenEnded: boolean;
34
+ inFrame: number | null;
35
+ outFrame: number | null;
36
+ }) => void;
37
+ useElementSize: (ref: import("react").RefObject<HTMLElement>, options: {
38
+ triggerOnWindowResize: boolean;
39
+ shouldApplyCssTransforms: boolean;
40
+ }) => import("./utils/use-element-size.js").Size | null;
41
+ calculateCanvasTransformation: ({ previewSize, compositionWidth, compositionHeight, canvasSize, }: {
42
+ previewSize: number | "auto";
43
+ compositionWidth: number;
44
+ compositionHeight: number;
45
+ canvasSize: import("./utils/use-element-size.js").Size;
46
+ }) => {
47
+ centerX: number;
48
+ centerY: number;
49
+ xCorrection: number;
50
+ yCorrection: number;
51
+ scale: number;
52
+ };
53
+ useHoverState: (ref: import("react").RefObject<HTMLDivElement>) => boolean;
54
+ updateAllElementsSizes: () => void;
55
+ calculateScale: ({ canvasSize, compositionHeight, compositionWidth, previewSize, }: {
56
+ previewSize: number | "auto";
57
+ compositionWidth: number;
58
+ compositionHeight: number;
59
+ canvasSize: import("./utils/use-element-size.js").Size;
60
+ }) => number;
61
+ };