@draftbit/core 56.0.1 → 56.0.3
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 +14 -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 +13 -23
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@draftbit/core",
|
|
3
|
-
"version": "56.0.
|
|
3
|
+
"version": "56.0.3",
|
|
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.3",
|
|
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": "3eb6adfe48507265c14bc8a54520c95c29518631"
|
|
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 {
|
|
@@ -88,6 +86,7 @@ const VideoPlayer = React.forwardRef<VideoPlayerRef, VideoPlayerProps>(
|
|
|
88
86
|
p.muted = isMuted;
|
|
89
87
|
p.volume = volume;
|
|
90
88
|
p.playbackRate = rate;
|
|
89
|
+
p.timeUpdateEventInterval = 0.5;
|
|
91
90
|
});
|
|
92
91
|
|
|
93
92
|
const videoPlayerRef = React.useRef<VideoPlayerComponent>(null);
|
|
@@ -126,6 +125,11 @@ const VideoPlayer = React.forwardRef<VideoPlayerRef, VideoPlayerProps>(
|
|
|
126
125
|
const hasAppliedInitialState = React.useRef(false);
|
|
127
126
|
|
|
128
127
|
React.useEffect(() => {
|
|
128
|
+
// 'useVideoPlayer' builds a new player whenever the source changes, so the
|
|
129
|
+
// initial state has to be applied again
|
|
130
|
+
hasAppliedInitialState.current = false;
|
|
131
|
+
setIsPlaying(player.playing);
|
|
132
|
+
|
|
129
133
|
const timeUpdateSub = player.addListener("timeUpdate", (status) => {
|
|
130
134
|
onPlaybackStatusUpdateProp?.(mapToMediaPlayerStatus(status, player));
|
|
131
135
|
});
|
|
@@ -172,18 +176,7 @@ const VideoPlayer = React.forwardRef<VideoPlayerRef, VideoPlayerProps>(
|
|
|
172
176
|
playToEndSub.remove();
|
|
173
177
|
statusChangeSub.remove();
|
|
174
178
|
};
|
|
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]);
|
|
179
|
+
}, [player]);
|
|
187
180
|
|
|
188
181
|
let mappedVideoContentFit: VideoContentFit;
|
|
189
182
|
switch (resizeMode) {
|
|
@@ -233,16 +226,13 @@ const VideoPlayer = React.forwardRef<VideoPlayerRef, VideoPlayerProps>(
|
|
|
233
226
|
ref,
|
|
234
227
|
() => ({
|
|
235
228
|
toggleFullscreen,
|
|
236
|
-
seekToPosition:
|
|
237
|
-
mediaPlaybackWrapperRef.current?.seekToPosition
|
|
238
|
-
togglePlayback:
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
play: mediaPlaybackWrapperRef.current?.play || (() => {}),
|
|
229
|
+
seekToPosition: (positionMillis: number) =>
|
|
230
|
+
mediaPlaybackWrapperRef.current?.seekToPosition(positionMillis),
|
|
231
|
+
togglePlayback: () => mediaPlaybackWrapperRef.current?.togglePlayback(),
|
|
232
|
+
pause: () => mediaPlaybackWrapperRef.current?.pause(),
|
|
233
|
+
play: () => mediaPlaybackWrapperRef.current?.play(),
|
|
242
234
|
}),
|
|
243
|
-
|
|
244
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
245
|
-
[toggleFullscreen, isPlaying]
|
|
235
|
+
[toggleFullscreen]
|
|
246
236
|
);
|
|
247
237
|
|
|
248
238
|
return (
|