@remotion/player 3.1.8 → 3.2.0

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.
package/dist/PlayerUI.js CHANGED
@@ -119,6 +119,32 @@ const PlayerUI = ({ controls, style, loop, autoPlay, allowFullscreen, inputProps
119
119
  document.exitFullscreen();
120
120
  }
121
121
  }, []);
122
+ (0, react_1.useEffect)(() => {
123
+ const { current } = container;
124
+ if (!current) {
125
+ return;
126
+ }
127
+ const fullscreenChange = () => {
128
+ var _a;
129
+ const element = (_a = document.webkitFullscreenElement) !== null && _a !== void 0 ? _a : document.fullscreenElement;
130
+ if (element && element === container.current) {
131
+ player.emitter.dispatchFullscreenChangeUpdate({
132
+ isFullscreen: true,
133
+ });
134
+ }
135
+ else {
136
+ player.emitter.dispatchFullscreenChangeUpdate({
137
+ isFullscreen: false,
138
+ });
139
+ }
140
+ };
141
+ current.addEventListener('webkitfullscreenchange', fullscreenChange);
142
+ current.addEventListener('fullscreenchange', fullscreenChange);
143
+ return () => {
144
+ current.removeEventListener('webkitfullscreenchange', fullscreenChange);
145
+ current.removeEventListener('fullscreenchange', fullscreenChange);
146
+ };
147
+ }, [player.emitter]);
122
148
  const durationInFrames = (_a = config === null || config === void 0 ? void 0 : config.durationInFrames) !== null && _a !== void 0 ? _a : 1;
123
149
  (0, react_1.useImperativeHandle)(ref, () => {
124
150
  const methods = {
@@ -10,6 +10,9 @@ declare type TimeUpdateEventPayload = {
10
10
  declare type RateChangeEventPayload = {
11
11
  playbackRate: number;
12
12
  };
13
+ declare type FullscreenChangeEventPayload = {
14
+ isFullscreen: boolean;
15
+ };
13
16
  declare type StateEventMap = {
14
17
  seeked: SeekPayload;
15
18
  pause: undefined;
@@ -18,6 +21,7 @@ declare type StateEventMap = {
18
21
  ended: undefined;
19
22
  error: ErrorPayload;
20
23
  timeupdate: TimeUpdateEventPayload;
24
+ fullscreenchange: FullscreenChangeEventPayload;
21
25
  };
22
26
  export declare type EventTypes = keyof StateEventMap;
23
27
  export declare type CallbackListener<T extends EventTypes> = (data: {
@@ -38,5 +42,6 @@ export declare class PlayerEmitter {
38
42
  dispatchRatechange(playbackRate: number): void;
39
43
  dispatchError(error: Error): void;
40
44
  dispatchTimeUpdate(event: TimeUpdateEventPayload): void;
45
+ dispatchFullscreenChangeUpdate(event: FullscreenChangeEventPayload): void;
41
46
  }
42
47
  export {};
@@ -11,6 +11,7 @@ class PlayerEmitter {
11
11
  ratechange: [],
12
12
  seeked: [],
13
13
  timeupdate: [],
14
+ fullscreenchange: [],
14
15
  };
15
16
  }
16
17
  addEventListener(name, callback) {
@@ -51,5 +52,8 @@ class PlayerEmitter {
51
52
  dispatchTimeUpdate(event) {
52
53
  this.dispatchEvent('timeupdate', event);
53
54
  }
55
+ dispatchFullscreenChangeUpdate(event) {
56
+ this.dispatchEvent('fullscreenchange', event);
57
+ }
54
58
  }
55
59
  exports.PlayerEmitter = PlayerEmitter;
package/dist/index.d.ts CHANGED
@@ -14,6 +14,7 @@ export declare const PlayerInternals: {
14
14
  frameBack: (frames: number) => void;
15
15
  frameForward: (frames: number) => void;
16
16
  isLastFrame: boolean;
17
+ isFirstFrame: boolean;
17
18
  emitter: PlayerEmitter;
18
19
  playing: boolean;
19
20
  play: (e?: import("react").SyntheticEvent<Element, Event> | undefined) => void;
@@ -4,6 +4,7 @@ declare type UsePlayerMethods = {
4
4
  frameBack: (frames: number) => void;
5
5
  frameForward: (frames: number) => void;
6
6
  isLastFrame: boolean;
7
+ isFirstFrame: boolean;
7
8
  emitter: PlayerEmitter;
8
9
  playing: boolean;
9
10
  play: (e?: SyntheticEvent) => void;
@@ -20,6 +20,7 @@ const usePlayer = () => {
20
20
  const emitter = (0, react_1.useContext)(emitter_context_1.PlayerEventEmitterContext);
21
21
  const lastFrame = ((_a = config === null || config === void 0 ? void 0 : config.durationInFrames) !== null && _a !== void 0 ? _a : 1) - 1;
22
22
  const isLastFrame = frame === lastFrame;
23
+ const isFirstFrame = frame === 0;
23
24
  if (!emitter) {
24
25
  throw new TypeError('Expected Player event emitter context');
25
26
  }
@@ -104,21 +105,23 @@ const usePlayer = () => {
104
105
  play,
105
106
  pause,
106
107
  seek,
108
+ isFirstFrame,
107
109
  getCurrentFrame: () => frameRef.current,
108
110
  isPlaying: () => imperativePlaying.current,
109
111
  pauseAndReturnToPlayStart,
110
112
  };
111
113
  }, [
112
- emitter,
113
114
  frameBack,
114
115
  frameForward,
115
- imperativePlaying,
116
116
  isLastFrame,
117
- pause,
118
- play,
117
+ emitter,
119
118
  playing,
120
- pauseAndReturnToPlayStart,
119
+ play,
120
+ pause,
121
121
  seek,
122
+ isFirstFrame,
123
+ pauseAndReturnToPlayStart,
124
+ imperativePlaying,
122
125
  ]);
123
126
  return returnValue;
124
127
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remotion/player",
3
- "version": "3.1.8",
3
+ "version": "3.2.0",
4
4
  "description": "Remotion Player",
5
5
  "main": "dist/index.js",
6
6
  "sideEffects": false,
@@ -28,7 +28,7 @@
28
28
  ],
29
29
  "license": "SEE LICENSE IN LICENSE.md",
30
30
  "dependencies": {
31
- "remotion": "3.1.8"
31
+ "remotion": "3.2.0"
32
32
  },
33
33
  "peerDependencies": {
34
34
  "react": ">=16.8.0",
@@ -63,5 +63,5 @@
63
63
  "publishConfig": {
64
64
  "access": "public"
65
65
  },
66
- "gitHead": "57f34a02b0f830053f92af426a6b70b6824f887e"
66
+ "gitHead": "47b188161a9e922a247eaa998e72d37af9137707"
67
67
  }
@@ -1,11 +0,0 @@
1
- declare global {
2
- interface Document {
3
- webkitFullscreenEnabled?: boolean;
4
- webkitFullscreenElement?: Element;
5
- webkitExitFullscreen?: Document['exitFullscreen'];
6
- }
7
- interface HTMLDivElement {
8
- webkitRequestFullScreen: HTMLDivElement['requestFullscreen'];
9
- }
10
- }
11
- export declare const browserSupportsFullscreen: boolean | undefined;
@@ -1,5 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.browserSupportsFullscreen = void 0;
4
- exports.browserSupportsFullscreen = typeof document !== 'undefined' &&
5
- (document.fullscreenEnabled || document.webkitFullscreenEnabled);