@applicaster/quick-brick-player 13.0.0-alpha.1692038547 → 13.0.0-alpha.1697545405
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@applicaster/quick-brick-player",
|
|
3
|
-
"version": "13.0.0-alpha.
|
|
3
|
+
"version": "13.0.0-alpha.1697545405",
|
|
4
4
|
"description": "Quick Brick Player",
|
|
5
5
|
"main": "./src/index.ts",
|
|
6
6
|
"types": "index.d.ts",
|
|
@@ -36,11 +36,11 @@
|
|
|
36
36
|
},
|
|
37
37
|
"homepage": "https://github.com/applicaster/quickbrick#readme",
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@applicaster/quick-brick-mobile-transport-controls": "13.0.0-rc.
|
|
40
|
-
"@applicaster/quick-brick-tv-transport-controls": "13.0.0-rc.
|
|
41
|
-
"@applicaster/zapp-react-native-tvos-app": "13.0.0-alpha.
|
|
42
|
-
"@applicaster/zapp-react-native-ui-components": "13.0.0-alpha.
|
|
43
|
-
"@applicaster/zapp-react-native-utils": "13.0.0-alpha.
|
|
39
|
+
"@applicaster/quick-brick-mobile-transport-controls": "13.0.0-rc.46",
|
|
40
|
+
"@applicaster/quick-brick-tv-transport-controls": "13.0.0-rc.46",
|
|
41
|
+
"@applicaster/zapp-react-native-tvos-app": "13.0.0-alpha.1697545405",
|
|
42
|
+
"@applicaster/zapp-react-native-ui-components": "13.0.0-alpha.1697545405",
|
|
43
|
+
"@applicaster/zapp-react-native-utils": "13.0.0-alpha.1697545405",
|
|
44
44
|
"keymirror": "^0.1.1",
|
|
45
45
|
"query-string": "7.1.3",
|
|
46
46
|
"react-native-web-linear-gradient": "1.1.2",
|
|
@@ -64,9 +64,9 @@
|
|
|
64
64
|
"@types/node": "*",
|
|
65
65
|
"@types/react-native": "0.69.6",
|
|
66
66
|
"immer": "*",
|
|
67
|
-
"react": "
|
|
67
|
+
"react": "*",
|
|
68
68
|
"react-hot-loader": "*",
|
|
69
|
-
"react-native": "
|
|
69
|
+
"react-native": "*",
|
|
70
70
|
"react-native-fs": "*",
|
|
71
71
|
"react-native-gesture-handler": "*",
|
|
72
72
|
"react-native-linear-gradient": "*",
|
|
@@ -55,6 +55,11 @@ const useMuteUnmuteListeners = (playerId, player, asset, setImageUri) =>
|
|
|
55
55
|
return;
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
+
// initial state setup - show correct mute/unmute icon based on current state
|
|
59
|
+
if (player?.playerState?.isReadyToPlay) {
|
|
60
|
+
setImageUri(player.getIsMuted() ? asset.active : asset.inactive);
|
|
61
|
+
}
|
|
62
|
+
|
|
58
63
|
// active action = muted, inactive = unmuted
|
|
59
64
|
return player.addListener({
|
|
60
65
|
id: liveImageButtonsListenerKey,
|
|
@@ -73,10 +78,17 @@ const useMuteUnmuteListeners = (playerId, player, asset, setImageUri) =>
|
|
|
73
78
|
setImageUri(player?.getIsMuted() ? asset.active : asset.inactive);
|
|
74
79
|
},
|
|
75
80
|
onPlayerClose: () => {
|
|
76
|
-
|
|
81
|
+
if (isCurrentPlayer(playerId)) {
|
|
82
|
+
setImageUri(null);
|
|
83
|
+
}
|
|
77
84
|
},
|
|
78
85
|
onVideoEnd: () => {
|
|
79
|
-
|
|
86
|
+
if (isCurrentPlayer(playerId)) {
|
|
87
|
+
setImageUri(null);
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
onPlayerResume: () => {
|
|
91
|
+
setImageUri(player?.getIsMuted() ? asset.active : asset.inactive);
|
|
80
92
|
},
|
|
81
93
|
},
|
|
82
94
|
});
|
|
@@ -93,7 +105,7 @@ const styles = StyleSheet.create({
|
|
|
93
105
|
},
|
|
94
106
|
});
|
|
95
107
|
|
|
96
|
-
|
|
108
|
+
function AssetImage(props: CellActionAssetComponentProps) {
|
|
97
109
|
const { cellUUID: playerId, asset } = props;
|
|
98
110
|
const [imageUri, setImageUri] = useState<Asset>(null);
|
|
99
111
|
|
|
@@ -108,3 +120,5 @@ export function AssetComponent(props: CellActionAssetComponentProps) {
|
|
|
108
120
|
|
|
109
121
|
return <View />;
|
|
110
122
|
}
|
|
123
|
+
|
|
124
|
+
export const AssetComponent = React.memo(AssetImage);
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
+
import { useEffect, useMemo, useState } from "react";
|
|
2
3
|
import * as R from "ramda";
|
|
3
4
|
import { View } from "react-native";
|
|
4
5
|
import { dayjs } from "@applicaster/zapp-react-native-utils/dateUtils";
|
|
5
6
|
|
|
6
7
|
import {
|
|
7
|
-
ProgressBar,
|
|
8
8
|
Controls,
|
|
9
|
-
TransportInfo,
|
|
10
9
|
CountDown,
|
|
10
|
+
ProgressBar,
|
|
11
|
+
TransportInfo,
|
|
11
12
|
} from "@applicaster/quick-brick-mobile-transport-controls";
|
|
12
13
|
|
|
13
14
|
import { playerManager } from "@applicaster/zapp-react-native-utils/appUtils";
|
|
@@ -15,23 +16,22 @@ import { playerManager } from "@applicaster/zapp-react-native-utils/appUtils";
|
|
|
15
16
|
import { useIsTablet } from "@applicaster/zapp-react-native-utils/reactHooks";
|
|
16
17
|
import {
|
|
17
18
|
forwardButton,
|
|
19
|
+
PADDING_HORIZONTAL,
|
|
18
20
|
playbackButton,
|
|
19
21
|
rewindButton,
|
|
20
|
-
skipToStartButton,
|
|
21
22
|
skipToLiveButton,
|
|
22
|
-
|
|
23
|
-
speedButton,
|
|
23
|
+
skipToStartButton,
|
|
24
24
|
sleepButton,
|
|
25
|
+
speedButton,
|
|
25
26
|
} from "./defaultLayoutsConts";
|
|
26
27
|
import { AudioDescription } from "../AudioDescription";
|
|
27
28
|
import { PlayerImageBackground } from "@applicaster/zapp-react-native-ui-components/Components/PlayerImageBackground";
|
|
28
29
|
import { useLanguageData } from "@applicaster/zapp-react-native-utils/reactHooks/player";
|
|
29
30
|
import { PlayNextData } from "@applicaster/zapp-react-native-ui-components/Components/PlayerContainer/PlayerContainer";
|
|
30
|
-
import { useEffect, useMemo, useState } from "react";
|
|
31
31
|
import {
|
|
32
|
-
useModalAnimationContext,
|
|
33
32
|
AnimationComponent,
|
|
34
33
|
ComponentAnimationType,
|
|
34
|
+
useModalAnimationContext,
|
|
35
35
|
} from "@applicaster/zapp-react-native-ui-components/Components/VideoModal/ModalAnimation";
|
|
36
36
|
import DockedLayout from "./DockedLayout";
|
|
37
37
|
import { isValidDate } from "../../Utils";
|
|
@@ -405,7 +405,7 @@ export default function DefaultLayout(props: LayoutProps) {
|
|
|
405
405
|
layoutState={layoutState}
|
|
406
406
|
/>
|
|
407
407
|
<Separator />
|
|
408
|
-
{needsToShowProgressBar
|
|
408
|
+
{needsToShowProgressBar ? (
|
|
409
409
|
<View>
|
|
410
410
|
<ProgressBar
|
|
411
411
|
content={entry}
|
|
@@ -422,17 +422,17 @@ export default function DefaultLayout(props: LayoutProps) {
|
|
|
422
422
|
onSkipLive={onSkipLive}
|
|
423
423
|
/>
|
|
424
424
|
|
|
425
|
-
{showCounter && timeLeft >= 0
|
|
425
|
+
{showCounter && timeLeft >= 0 ? (
|
|
426
426
|
<CountDown
|
|
427
427
|
timeLeft={timeLeft}
|
|
428
428
|
value={value}
|
|
429
429
|
title={sleepTitle}
|
|
430
430
|
/>
|
|
431
|
-
)}
|
|
431
|
+
) : null}
|
|
432
432
|
|
|
433
433
|
<Separator />
|
|
434
434
|
</View>
|
|
435
|
-
)}
|
|
435
|
+
) : null}
|
|
436
436
|
<Controls
|
|
437
437
|
value={value}
|
|
438
438
|
visible={true}
|
|
@@ -9,18 +9,18 @@ import * as R from "ramda";
|
|
|
9
9
|
import { useIsTablet } from "@applicaster/zapp-react-native-utils/reactHooks";
|
|
10
10
|
|
|
11
11
|
import {
|
|
12
|
+
Button,
|
|
12
13
|
ContentInfo,
|
|
13
|
-
ProgressBar,
|
|
14
14
|
Controls,
|
|
15
|
-
|
|
15
|
+
ProgressBar,
|
|
16
16
|
} from "@applicaster/quick-brick-mobile-transport-controls";
|
|
17
17
|
|
|
18
18
|
import { PlayNextData } from "@applicaster/zapp-react-native-ui-components/Components/PlayerContainer/PlayerContainer";
|
|
19
19
|
import {
|
|
20
|
-
useModalAnimationContext,
|
|
21
20
|
AnimationComponent,
|
|
22
21
|
ComponentAnimationType,
|
|
23
22
|
PlayerAnimationStateEnum,
|
|
23
|
+
useModalAnimationContext,
|
|
24
24
|
} from "@applicaster/zapp-react-native-ui-components/Components/VideoModal/ModalAnimation";
|
|
25
25
|
|
|
26
26
|
type Dimensions = {
|
|
@@ -245,18 +245,18 @@ export default function DockedLayout(props: LayoutProps) {
|
|
|
245
245
|
]}
|
|
246
246
|
>
|
|
247
247
|
{!playerState.isLive &&
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
248
|
+
(layoutState.docked || startComponentsAnimation) ? (
|
|
249
|
+
<ProgressBar
|
|
250
|
+
content={entry}
|
|
251
|
+
value={value}
|
|
252
|
+
visible={visible}
|
|
253
|
+
layoutState={layoutState}
|
|
254
|
+
onPlayerSeek={onPlayerSeek}
|
|
255
|
+
playerState={playerState}
|
|
256
|
+
startComponentsAnimation={startComponentsAnimation}
|
|
257
|
+
docked
|
|
258
|
+
/>
|
|
259
|
+
) : null}
|
|
260
260
|
|
|
261
261
|
<View style={styles.content}>
|
|
262
262
|
<View
|
package/src/Player/index.tsx
CHANGED
|
@@ -806,7 +806,6 @@ export default class VideoPlayer extends React.Component<
|
|
|
806
806
|
nowPlayingEnabled,
|
|
807
807
|
paused,
|
|
808
808
|
seek,
|
|
809
|
-
rate,
|
|
810
809
|
textTrackId,
|
|
811
810
|
liveSeekingEnabled,
|
|
812
811
|
liveCatchUpEnabled,
|
|
@@ -817,7 +816,14 @@ export default class VideoPlayer extends React.Component<
|
|
|
817
816
|
accessibilityProps: getAllAccessibilityProps(
|
|
818
817
|
this.getPluginConfiguration()
|
|
819
818
|
),
|
|
820
|
-
};
|
|
819
|
+
};
|
|
820
|
+
|
|
821
|
+
if (!isAppleTV()) {
|
|
822
|
+
// TODO: Move to RN method and remove from props.
|
|
823
|
+
// Causes tvOS bug: native player passes rate on fast seek,
|
|
824
|
+
// RN returns it and it breaks playback.
|
|
825
|
+
nativeProps.rate = rate;
|
|
826
|
+
}
|
|
821
827
|
|
|
822
828
|
if (
|
|
823
829
|
this.isReactNativeMethodsSupported() &&
|
|
@@ -990,14 +996,14 @@ export default class VideoPlayer extends React.Component<
|
|
|
990
996
|
const renderMobilePlayer = () => {
|
|
991
997
|
return isFullScreenAudioPlayer && isAudioItem ? (
|
|
992
998
|
<View style={containerStyle}>
|
|
993
|
-
{
|
|
999
|
+
{!castAction?.state?.connected || supportNativeCast ? (
|
|
994
1000
|
<this.props.PlayerComponent
|
|
995
1001
|
ref={this._assignRoot}
|
|
996
1002
|
{...nativeEvents}
|
|
997
1003
|
{...nativeProps}
|
|
998
1004
|
listener={this.props.listener}
|
|
999
1005
|
/>
|
|
1000
|
-
)}
|
|
1006
|
+
) : null}
|
|
1001
1007
|
<AudioPlayerWrapper {...sharedWrapperViewProps} />
|
|
1002
1008
|
</View>
|
|
1003
1009
|
) : (
|
|
@@ -1012,7 +1018,7 @@ export default class VideoPlayer extends React.Component<
|
|
|
1012
1018
|
return (
|
|
1013
1019
|
<View style={styles.container}>
|
|
1014
1020
|
<View style={[playerContainerStyles, playerDimensions]}>
|
|
1015
|
-
{isAudioItem
|
|
1021
|
+
{isAudioItem ? (
|
|
1016
1022
|
<AnimationComponent
|
|
1017
1023
|
animationType={ComponentAnimationType.player}
|
|
1018
1024
|
additionalData={{
|
|
@@ -1031,18 +1037,18 @@ export default class VideoPlayer extends React.Component<
|
|
|
1031
1037
|
plugin_configuration={this.getPluginConfiguration()}
|
|
1032
1038
|
/>
|
|
1033
1039
|
</AnimationComponent>
|
|
1034
|
-
)}
|
|
1040
|
+
) : null}
|
|
1035
1041
|
|
|
1036
|
-
{shouldRenderBackground
|
|
1042
|
+
{shouldRenderBackground ? (
|
|
1037
1043
|
<PlayerImageBackground
|
|
1038
1044
|
imageKey={backgroundImageKey}
|
|
1039
1045
|
configuration={this.getPluginConfiguration()}
|
|
1040
1046
|
entry={entry}
|
|
1041
1047
|
style={getBackgroundImageStyle(playerDimensions)}
|
|
1042
1048
|
/>
|
|
1043
|
-
)}
|
|
1049
|
+
) : null}
|
|
1044
1050
|
|
|
1045
|
-
{
|
|
1051
|
+
{!castAction?.state?.connected || supportNativeCast ? (
|
|
1046
1052
|
<AnimationComponent
|
|
1047
1053
|
animationType={ComponentAnimationType.player}
|
|
1048
1054
|
additionalData={playerDimensions}
|
|
@@ -1064,7 +1070,7 @@ export default class VideoPlayer extends React.Component<
|
|
|
1064
1070
|
{this.childrenWithPlayNext()}
|
|
1065
1071
|
</this.props.PlayerComponent>
|
|
1066
1072
|
</AnimationComponent>
|
|
1067
|
-
)}
|
|
1073
|
+
) : null}
|
|
1068
1074
|
</View>
|
|
1069
1075
|
|
|
1070
1076
|
{renderTransportControls(playerDimensions)}
|