@draftbit/core 56.0.1 → 56.0.2
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/lib/typescript/src/components/MediaPlayer/AudioPlayer/HeadlessAudioPlayer.js +5 -11
- package/lib/typescript/src/components/MediaPlayer/AudioPlayer/HeadlessAudioPlayer.js.map +1 -1
- package/lib/typescript/src/components/MediaPlayer/MediaPlaybackWrapper.js +1 -1
- package/lib/typescript/src/components/MediaPlayer/MediaPlaybackWrapper.js.map +1 -1
- package/lib/typescript/src/components/MediaPlayer/VideoPlayer/VideoPlayer.js +13 -25
- package/lib/typescript/src/components/MediaPlayer/VideoPlayer/VideoPlayer.js.map +1 -1
- package/lib/typescript/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/src/components/MediaPlayer/AudioPlayer/HeadlessAudioPlayer.tsx +5 -12
- package/src/components/MediaPlayer/MediaPlaybackWrapper.tsx +1 -1
- package/src/components/MediaPlayer/VideoPlayer/VideoPlayer.tsx +12 -23
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@draftbit/core",
|
|
3
|
-
"version": "56.0.
|
|
3
|
+
"version": "56.0.2",
|
|
4
4
|
"description": "Core (non-native) Components",
|
|
5
5
|
"main": "./src/index.tsx",
|
|
6
6
|
"react-native": "./src/index.tsx",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"homepage": "https://github.com/draftbit/react-native-jigsaw#readme",
|
|
43
43
|
"dependencies": {
|
|
44
44
|
"@draftbit/react-theme-provider": "^2.1.1",
|
|
45
|
-
"@draftbit/theme": "56.0.
|
|
45
|
+
"@draftbit/theme": "56.0.2",
|
|
46
46
|
"@emotion/react": "^11.13.5",
|
|
47
47
|
"@emotion/styled": "^11.13.5",
|
|
48
48
|
"@expo/vector-icons": "^15.0.3",
|
|
@@ -124,5 +124,5 @@
|
|
|
124
124
|
"/node_modules/@react-native/babel-preset/"
|
|
125
125
|
]
|
|
126
126
|
},
|
|
127
|
-
"gitHead": "
|
|
127
|
+
"gitHead": "20400417d073101ca1cf19ded23a5c07156b1001"
|
|
128
128
|
}
|
|
@@ -4,7 +4,6 @@ import { HeadlessAudioPlayerProps } from "./AudioPlayerCommon";
|
|
|
4
4
|
import {
|
|
5
5
|
normalizeBase64Source,
|
|
6
6
|
useSourceDeepCompareMemoize,
|
|
7
|
-
useSourceDeepCompareEffect,
|
|
8
7
|
} from "../MediaPlayerCommon";
|
|
9
8
|
import type { MediaPlayerRef, MediaPlayerStatus } from "../MediaPlayerCommon";
|
|
10
9
|
import MediaPlaybackWrapper from "../MediaPlaybackWrapper";
|
|
@@ -60,6 +59,10 @@ const HeadlessAudioPlayer = React.forwardRef<
|
|
|
60
59
|
}, []);
|
|
61
60
|
|
|
62
61
|
React.useEffect(() => {
|
|
62
|
+
// 'useAudioPlayer' builds a new player whenever the source changes, so the
|
|
63
|
+
// mirrored playing state has to be resynced
|
|
64
|
+
setIsPlaying(player.playing);
|
|
65
|
+
|
|
63
66
|
const subscription = player.addListener(
|
|
64
67
|
"playbackStatusUpdate",
|
|
65
68
|
(status) => {
|
|
@@ -75,17 +78,7 @@ const HeadlessAudioPlayer = React.forwardRef<
|
|
|
75
78
|
}
|
|
76
79
|
);
|
|
77
80
|
return () => subscription.remove();
|
|
78
|
-
}, []);
|
|
79
|
-
|
|
80
|
-
// Replace source when it changes (deep comparison on URI to avoid unnecessary reloads)
|
|
81
|
-
const isFirstSourceRender = React.useRef(true);
|
|
82
|
-
useSourceDeepCompareEffect(() => {
|
|
83
|
-
if (isFirstSourceRender.current) {
|
|
84
|
-
isFirstSourceRender.current = false;
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
player.replace(normalizeBase64Source(source, "audio") as any);
|
|
88
|
-
}, [source]);
|
|
81
|
+
}, [player]);
|
|
89
82
|
|
|
90
83
|
const updateAudioMode = React.useCallback(async () => {
|
|
91
84
|
try {
|
|
@@ -13,14 +13,12 @@ import {
|
|
|
13
13
|
useVideoPlayer,
|
|
14
14
|
TimeUpdateEventPayload,
|
|
15
15
|
VideoPlayer as VideoPlayerType,
|
|
16
|
-
VideoSource,
|
|
17
16
|
} from "expo-video";
|
|
18
17
|
import { setAudioModeAsync } from "expo-audio";
|
|
19
18
|
import { extractSizeStyles } from "../../../utilities";
|
|
20
19
|
import MediaPlaybackWrapper from "../MediaPlaybackWrapper";
|
|
21
20
|
import {
|
|
22
21
|
normalizeBase64Source,
|
|
23
|
-
useSourceDeepCompareEffect,
|
|
24
22
|
useSourceDeepCompareMemoize,
|
|
25
23
|
} from "../MediaPlayerCommon";
|
|
26
24
|
import type {
|
|
@@ -126,6 +124,11 @@ const VideoPlayer = React.forwardRef<VideoPlayerRef, VideoPlayerProps>(
|
|
|
126
124
|
const hasAppliedInitialState = React.useRef(false);
|
|
127
125
|
|
|
128
126
|
React.useEffect(() => {
|
|
127
|
+
// 'useVideoPlayer' builds a new player whenever the source changes, so the
|
|
128
|
+
// initial state has to be applied again
|
|
129
|
+
hasAppliedInitialState.current = false;
|
|
130
|
+
setIsPlaying(player.playing);
|
|
131
|
+
|
|
129
132
|
const timeUpdateSub = player.addListener("timeUpdate", (status) => {
|
|
130
133
|
onPlaybackStatusUpdateProp?.(mapToMediaPlayerStatus(status, player));
|
|
131
134
|
});
|
|
@@ -172,18 +175,7 @@ const VideoPlayer = React.forwardRef<VideoPlayerRef, VideoPlayerProps>(
|
|
|
172
175
|
playToEndSub.remove();
|
|
173
176
|
statusChangeSub.remove();
|
|
174
177
|
};
|
|
175
|
-
}, []);
|
|
176
|
-
|
|
177
|
-
// Replace video source when it changes (deep comparison on URI to avoid unnecessary reloads)
|
|
178
|
-
const isFirstSourceRender = React.useRef(true);
|
|
179
|
-
useSourceDeepCompareEffect(() => {
|
|
180
|
-
if (isFirstSourceRender.current) {
|
|
181
|
-
isFirstSourceRender.current = false;
|
|
182
|
-
return;
|
|
183
|
-
}
|
|
184
|
-
hasAppliedInitialState.current = false;
|
|
185
|
-
player.replace(normalizeBase64Source(source, "video") as VideoSource);
|
|
186
|
-
}, [source]);
|
|
178
|
+
}, [player]);
|
|
187
179
|
|
|
188
180
|
let mappedVideoContentFit: VideoContentFit;
|
|
189
181
|
switch (resizeMode) {
|
|
@@ -233,16 +225,13 @@ const VideoPlayer = React.forwardRef<VideoPlayerRef, VideoPlayerProps>(
|
|
|
233
225
|
ref,
|
|
234
226
|
() => ({
|
|
235
227
|
toggleFullscreen,
|
|
236
|
-
seekToPosition:
|
|
237
|
-
mediaPlaybackWrapperRef.current?.seekToPosition
|
|
238
|
-
togglePlayback:
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
play: mediaPlaybackWrapperRef.current?.play || (() => {}),
|
|
228
|
+
seekToPosition: (positionMillis: number) =>
|
|
229
|
+
mediaPlaybackWrapperRef.current?.seekToPosition(positionMillis),
|
|
230
|
+
togglePlayback: () => mediaPlaybackWrapperRef.current?.togglePlayback(),
|
|
231
|
+
pause: () => mediaPlaybackWrapperRef.current?.pause(),
|
|
232
|
+
play: () => mediaPlaybackWrapperRef.current?.play(),
|
|
242
233
|
}),
|
|
243
|
-
|
|
244
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
245
|
-
[toggleFullscreen, isPlaying]
|
|
234
|
+
[toggleFullscreen]
|
|
246
235
|
);
|
|
247
236
|
|
|
248
237
|
return (
|