@npo/player 1.24.7 → 1.26.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/README.md +1 -1
- package/lib/js/api/getstreamobject.d.ts +1 -1
- package/lib/js/api/getstreamobject.js +4 -4
- package/lib/js/api/getstreamobject.test.js +13 -13
- package/lib/js/playeractions/handlers/handleoffsets.js +9 -7
- package/lib/js/playeractions/handlers/handleoffsets.test.js +1 -1
- package/lib/js/playeractions/handlers/processplayerconfig.d.ts +1 -1
- package/lib/js/playeractions/handlers/processplayerconfig.js +18 -4
- package/lib/js/playeractions/handlers/processplayerconfig.test.js +116 -0
- package/lib/js/playeractions/handlers/processsourceconfig.d.ts +3 -1
- package/lib/js/playeractions/handlers/processsourceconfig.js +20 -10
- package/lib/js/playeractions/handlers/processsourceconfig.test.js +25 -0
- package/lib/js/settings/localization.d.ts +76 -1
- package/lib/js/settings/localization.js +2 -2
- package/lib/js/tracking/handlers/eventbinding.js +25 -17
- package/lib/js/tracking/handlers/eventlogging.js +3 -8
- package/lib/js/tracking/handlers/playertrackerinit.d.ts +2 -2
- package/lib/js/tracking/handlers/playertrackerinit.js +8 -6
- package/lib/js/tracking/handlers/playertrackerinit.test.d.ts +1 -0
- package/lib/js/tracking/handlers/playertrackerinit.test.js +74 -0
- package/lib/js/tracking/handlers/playertrackerstart.js +1 -1
- package/lib/js/utilities/utilities.element.d.ts +6 -0
- package/lib/js/utilities/utilities.element.js +10 -0
- package/lib/js/utilities/utilities.element.test.js +18 -5
- package/lib/lang/nl.json +1 -1
- package/lib/lang/subtitleLabels/nl.json +14 -0
- package/lib/npoplayer.d.ts +15 -6
- package/lib/npoplayer.js +57 -50
- package/lib/npoplayer.test.js +12 -4
- package/lib/package.json +3 -3
- package/lib/services/a11y/setup.js +2 -5
- package/lib/services/a11y/setup.test.js +2 -19
- package/lib/services/advertHandlers/discardAdBreak.js +4 -4
- package/lib/services/advertHandlers/discardAdBreak.test.js +25 -13
- package/lib/services/advertHandlers/handlePreRolls.js +19 -19
- package/lib/services/advertHandlers/handlePrerolls.test.js +4 -4
- package/lib/services/cdnProviders/cdnProviders.js +4 -2
- package/lib/services/drmHandlers/decideprofile.js +1 -1
- package/lib/services/drmHandlers/decideprofile.test.js +1 -1
- package/lib/services/drmHandlers/verifydrm.js +6 -6
- package/lib/services/drmHandlers/verifydrm.test.js +5 -5
- package/lib/services/eventListenerHandlers/removeEventListeners.js +2 -2
- package/lib/services/eventListenerHandlers/removeEventListeners.test.js +9 -9
- package/lib/services/keyboardHandlers/resolvekeypress.js +5 -5
- package/lib/services/keyboardHandlers/resolvekeypress.test.js +1 -1
- package/lib/services/liveStreamHandlers/handleLiveStreamControls.js +2 -2
- package/lib/services/liveStreamHandlers/handleLiveStreamControls.test.js +2 -2
- package/lib/services/localStorageHandlers/localStorageHandlers.js +2 -2
- package/lib/services/localStorageHandlers/localStorageHandlers.test.js +2 -5
- package/lib/services/nicamHandlers/nicamhandler.d.ts +5 -0
- package/lib/{ui/handlers → services/nicamHandlers}/nicamhandler.js +24 -15
- package/lib/services/nicamHandlers/nicamhandler.test.js +132 -0
- package/lib/services/npoPlayerAPI/npoPlayerAPI.d.ts +3 -2
- package/lib/services/npoPlayerAPI/npoPlayerAPI.js +19 -23
- package/lib/services/preferences/handlePreferences.d.ts +2 -0
- package/lib/services/preferences/handlePreferences.js +42 -0
- package/lib/services/preferences/handlePreferences.test.d.ts +1 -0
- package/lib/services/preferences/handlePreferences.test.js +102 -0
- package/lib/services/segmentHandlers/addSegmentEventListeners.js +2 -2
- package/lib/services/segmentHandlers/addSegmentEventListeners.test.js +1 -1
- package/lib/services/segmentHandlers/setSegmentMarkers.js +1 -1
- package/lib/services/services.d.ts +7 -0
- package/lib/services/services.js +26 -0
- package/lib/services/streamoptionsHandlers/streamOptionsHandler.d.ts +6 -0
- package/lib/services/streamoptionsHandlers/streamOptionsHandler.js +78 -0
- package/lib/services/streamoptionsHandlers/streamOptionsHandler.test.js +187 -0
- package/lib/services/uiHandlers/uiVisiblityHandler.d.ts +3 -0
- package/lib/services/uiHandlers/uiVisiblityHandler.js +26 -0
- package/lib/services/uiHandlers/uiVisiblityHandler.test.d.ts +1 -0
- package/lib/services/uiHandlers/uiVisiblityHandler.test.js +62 -0
- package/lib/src/js/api/getstreamobject.d.ts +1 -1
- package/lib/src/js/playeractions/handlers/processplayerconfig.d.ts +1 -1
- package/lib/src/js/playeractions/handlers/processplayerconfig.test.d.ts +1 -0
- package/lib/src/js/playeractions/handlers/processsourceconfig.d.ts +3 -1
- package/lib/src/js/playeractions/handlers/processsourceconfig.test.d.ts +1 -0
- package/lib/src/js/settings/localization.d.ts +76 -1
- package/lib/src/js/tracking/handlers/playertrackerinit.d.ts +2 -2
- package/lib/src/js/tracking/handlers/playertrackerinit.test.d.ts +1 -0
- package/lib/src/js/utilities/utilities.element.d.ts +6 -0
- package/lib/src/npoplayer.d.ts +15 -6
- package/lib/src/services/nicamHandlers/nicamhandler.d.ts +5 -0
- package/lib/src/services/nicamHandlers/nicamhandler.test.d.ts +1 -0
- package/lib/src/services/npoPlayerAPI/npoPlayerAPI.d.ts +3 -2
- package/lib/src/services/preferences/handlePreferences.d.ts +2 -0
- package/lib/src/services/preferences/handlePreferences.test.d.ts +1 -0
- package/lib/src/services/services.d.ts +7 -0
- package/lib/src/services/streamoptionsHandlers/streamOptionsHandler.d.ts +6 -0
- package/lib/src/services/streamoptionsHandlers/streamOptionsHandler.test.d.ts +1 -0
- package/lib/src/services/uiHandlers/uiVisiblityHandler.d.ts +3 -0
- package/lib/src/services/uiHandlers/uiVisiblityHandler.test.d.ts +1 -0
- package/lib/src/types/classes.d.ts +6 -0
- package/lib/src/types/interfaces.d.ts +25 -3
- package/lib/src/ui/components/adbutton.d.ts +1 -1
- package/lib/src/ui/components/adlabel.d.ts +1 -1
- package/lib/src/ui/components/buttons.d.ts +10 -17
- package/lib/src/ui/components/controlbar.d.ts +2 -2
- package/lib/src/ui/components/ctabar.d.ts +1 -1
- package/lib/src/ui/components/nativemobile/buttons.d.ts +8 -0
- package/lib/src/ui/components/playnext.d.ts +1 -3
- package/lib/src/ui/components/seekbar.d.ts +1 -1
- package/lib/src/ui/components/titlebar.d.ts +1 -1
- package/lib/src/ui/components/topbar.d.ts +2 -2
- package/lib/src/ui/components/verticalvideo/controlbar.d.ts +2 -2
- package/lib/src/ui/handlers/playnextscreen.test.d.ts +1 -0
- package/lib/src/ui/handlers/timecontrolhandlers.d.ts +3 -3
- package/lib/src/ui/uicontainer.d.ts +2 -3
- package/lib/src/ui/uicontainer.test.d.ts +1 -0
- package/lib/tests/mocks/mockLogEmitter.d.ts +2 -0
- package/lib/tests/mocks/mockLogEmitter.js +20 -0
- package/lib/tests/mocks/mockNpoplayer.js +4 -2
- package/lib/tests/mocks/playerContextMock.d.ts +5 -3
- package/lib/tests/mocks/playerContextMock.js +8 -5
- package/lib/types/classes.d.ts +6 -0
- package/lib/types/classes.js +12 -0
- package/lib/types/interfaces.d.ts +25 -3
- package/lib/types/interfaces.js +1 -0
- package/lib/ui/components/adbutton.d.ts +1 -1
- package/lib/ui/components/adbutton.js +3 -3
- package/lib/ui/components/adlabel.d.ts +1 -1
- package/lib/ui/components/adlabel.js +3 -3
- package/lib/ui/components/buttons.d.ts +10 -17
- package/lib/ui/components/buttons.js +44 -27
- package/lib/ui/components/controlbar.d.ts +2 -2
- package/lib/ui/components/controlbar.js +20 -32
- package/lib/ui/components/ctabar.d.ts +1 -1
- package/lib/ui/components/ctabar.js +4 -4
- package/lib/ui/components/nativemobile/buttons.d.ts +8 -0
- package/lib/ui/components/nativemobile/buttons.js +41 -1
- package/lib/ui/components/nativemobile/controlbar.js +1 -2
- package/lib/ui/components/nativemobile/topbar.js +2 -2
- package/lib/ui/components/playnext.d.ts +1 -3
- package/lib/ui/components/playnext.js +3 -3
- package/lib/ui/components/seekbar.d.ts +1 -1
- package/lib/ui/components/seekbar.js +5 -3
- package/lib/ui/components/settingspanel.js +9 -9
- package/lib/ui/components/titlebar.d.ts +1 -1
- package/lib/ui/components/titlebar.js +2 -2
- package/lib/ui/components/topbar.d.ts +2 -2
- package/lib/ui/components/topbar.js +8 -17
- package/lib/ui/components/verticalvideo/controlbar.d.ts +2 -2
- package/lib/ui/components/verticalvideo/controlbar.js +4 -4
- package/lib/ui/handlers/playnextscreen.test.d.ts +1 -0
- package/lib/ui/handlers/timecontrolhandlers.d.ts +3 -3
- package/lib/ui/nativemobileuifactory.js +20 -24
- package/lib/ui/nativemobileuifactory.test.js +2 -6
- package/lib/ui/uicontainer.d.ts +2 -3
- package/lib/ui/uicontainer.js +13 -30
- package/lib/ui/uicontainer.test.d.ts +1 -0
- package/lib/ui/uicontainer.test.js +80 -0
- package/package.json +3 -3
- package/src/style/components/_advert.scss +0 -9
- package/src/style/components/_icons.scss +5 -0
- package/src/style/components/_nicam.scss +5 -4
- package/src/style/components/_settingspanel.scss +48 -17
- package/src/style/components/vertical-video/_settingspanel.scss +1 -1
- package/src/style/npoplayer.css +26 -20
- package/src/style/variants/_player-base.scss +4 -0
- package/src/style/variants/_player-large.scss +5 -1
- package/src/style/variants/_player-small.scss +11 -8
- package/lib/src/ui/handlers/nicamhandler.d.ts +0 -6
- package/lib/src/ui/handlers/streamhandler.d.ts +0 -2
- package/lib/ui/handlers/nicamhandler.d.ts +0 -6
- package/lib/ui/handlers/nicamhandler.test.js +0 -36
- package/lib/ui/handlers/streamhandler.d.ts +0 -2
- package/lib/ui/handlers/streamhandler.js +0 -60
- /package/lib/{src/ui/handlers/playnextstreen.test.d.ts → js/playeractions/handlers/processplayerconfig.test.d.ts} +0 -0
- /package/lib/{ui/handlers/playnextstreen.test.d.ts → js/playeractions/handlers/processsourceconfig.test.d.ts} +0 -0
- /package/lib/{src/ui/handlers → services/nicamHandlers}/nicamhandler.test.d.ts +0 -0
- /package/lib/{ui/handlers/nicamhandler.test.d.ts → services/streamoptionsHandlers/streamOptionsHandler.test.d.ts} +0 -0
- /package/lib/ui/handlers/{playnextstreen.test.js → playnextscreen.test.js} +0 -0
|
@@ -1,42 +1,35 @@
|
|
|
1
1
|
import { type PlayerAPI } from 'bitmovin-player';
|
|
2
|
-
import { Button, ControlBar } from 'bitmovin-player-ui';
|
|
2
|
+
import { Button, ControlBar, CastToggleButton } from 'bitmovin-player-ui';
|
|
3
3
|
import type NpoPlayer from '../../npoplayer';
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
import { PlayerContext } from '../../types/interfaces';
|
|
5
|
+
import { NpoPlayerAPI } from '../../services/npoPlayerAPI/npoPlayerAPI';
|
|
6
|
+
export declare function createMiddleButtons(playerContext: PlayerContext): ControlBar;
|
|
7
|
+
export declare function createRewindButton(playerContext: PlayerContext): Button<{
|
|
6
8
|
cssClass: string;
|
|
7
9
|
ariaLabel: string;
|
|
8
10
|
}>;
|
|
9
|
-
export declare function createForwardButton(
|
|
11
|
+
export declare function createForwardButton(playerContext: PlayerContext): Button<{
|
|
10
12
|
cssClass: string;
|
|
11
13
|
ariaLabel: string;
|
|
12
14
|
}>;
|
|
13
|
-
export declare function createPlayNextButton(player: PlayerAPI,
|
|
15
|
+
export declare function createPlayNextButton(player: PlayerAPI, npoPlayer: NpoPlayer): Button<{
|
|
14
16
|
cssClass: string;
|
|
15
|
-
text: string;
|
|
16
17
|
ariaLabel: string;
|
|
17
|
-
hidden: false;
|
|
18
18
|
}>;
|
|
19
|
-
export declare function createCancelPlayNextButton(player: PlayerAPI,
|
|
19
|
+
export declare function createCancelPlayNextButton(player: PlayerAPI, npoPlayer: NpoPlayer): Button<{
|
|
20
20
|
cssClass: string;
|
|
21
|
-
text: string;
|
|
22
21
|
ariaLabel: string;
|
|
23
|
-
hidden: false;
|
|
24
22
|
}>;
|
|
25
23
|
export declare function createskipIntroButton(player: PlayerAPI): Button<{
|
|
26
24
|
cssClass: string;
|
|
27
|
-
text: string;
|
|
28
25
|
ariaLabel: string;
|
|
29
|
-
hidden: true;
|
|
30
26
|
}>;
|
|
31
27
|
export declare function createGoBackLiveButton(player: PlayerAPI): Button<{
|
|
32
28
|
cssClass: string;
|
|
33
|
-
text: string;
|
|
34
29
|
ariaLabel: string;
|
|
35
|
-
hidden: true;
|
|
36
30
|
}>;
|
|
37
|
-
export declare function createWatchFromStartButton(player: PlayerAPI,
|
|
31
|
+
export declare function createWatchFromStartButton(player: PlayerAPI, npoPlayer: NpoPlayer): Button<{
|
|
38
32
|
cssClass: string;
|
|
39
|
-
text: string;
|
|
40
33
|
ariaLabel: string;
|
|
41
|
-
hidden: true;
|
|
42
34
|
}>;
|
|
35
|
+
export declare function createChromecastButton(player: NpoPlayerAPI, npoPlayer: NpoPlayer): CastToggleButton;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { ControlBar } from 'bitmovin-player-ui';
|
|
2
|
-
import
|
|
3
|
-
export declare function createControlBar(
|
|
2
|
+
import { NpoPlayerUIVariants, PlayerContext } from '../../types/interfaces';
|
|
3
|
+
export declare function createControlBar(playerContext: PlayerContext, variant: NpoPlayerUIVariants): ControlBar;
|
|
@@ -4,7 +4,7 @@ import { type PlayerAPI } from 'bitmovin-player';
|
|
|
4
4
|
import { ButtonConfig } from 'bitmovin-player-ui/dist/js/framework/components/button';
|
|
5
5
|
import { LabelConfig } from 'bitmovin-player-ui/dist/js/framework/components/label';
|
|
6
6
|
import { NpoPlayerUIVariants } from '../../types/interfaces';
|
|
7
|
-
export declare function createCTABar(player: PlayerAPI,
|
|
7
|
+
export declare function createCTABar(player: PlayerAPI, npoPlayer: NpoPlayer, variant: NpoPlayerUIVariants): Container<{
|
|
8
8
|
components: (Button<ButtonConfig> | Label<LabelConfig>)[];
|
|
9
9
|
cssClasses: string[];
|
|
10
10
|
}>;
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
import { AirPlayToggleButton, Button, CastToggleButton, ControlBar, FullscreenToggleButton, PictureInPictureToggleButton, PlaybackToggleButton, SettingsPanel, SettingsToggleButton, VolumeToggleButton } from 'bitmovin-player-ui';
|
|
2
2
|
import { PlayerAPI } from 'bitmovin-player';
|
|
3
|
+
export declare function createForwardButton(player: PlayerAPI | undefined): Button<{
|
|
4
|
+
cssClass: string;
|
|
5
|
+
ariaLabel: string;
|
|
6
|
+
}>;
|
|
7
|
+
export declare function createRewindButton(player: PlayerAPI | undefined): Button<{
|
|
8
|
+
cssClass: string;
|
|
9
|
+
ariaLabel: string;
|
|
10
|
+
}>;
|
|
3
11
|
export declare function createMiddleButtons(player: PlayerAPI): ControlBar;
|
|
4
12
|
export declare function createWatchFromStartButton(): Button<{
|
|
5
13
|
cssClass: string;
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import { Container } from 'bitmovin-player-ui';
|
|
2
2
|
import { type PlayerAPI } from 'bitmovin-player';
|
|
3
3
|
import type NpoPlayer from '../../npoplayer';
|
|
4
|
-
export declare function createPlayNextScreen(player: PlayerAPI,
|
|
4
|
+
export declare function createPlayNextScreen(player: PlayerAPI, npoPlayer: NpoPlayer): Container<{
|
|
5
5
|
components: import("bitmovin-player-ui").Button<{
|
|
6
6
|
cssClass: string;
|
|
7
|
-
text: string;
|
|
8
7
|
ariaLabel: string;
|
|
9
|
-
hidden: false;
|
|
10
8
|
}>[];
|
|
11
9
|
cssClasses: string[];
|
|
12
10
|
}>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Container, PlaybackTimeLabel, SeekBar } from 'bitmovin-player-ui';
|
|
2
2
|
import type NpoPlayer from '../../npoplayer';
|
|
3
|
-
export declare function createSeekBar(
|
|
3
|
+
export declare function createSeekBar(npoPlayer: NpoPlayer): Container<{
|
|
4
4
|
components: (SeekBar | PlaybackTimeLabel)[];
|
|
5
5
|
cssClasses: string[];
|
|
6
6
|
}>;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { TitleBar } from 'bitmovin-player-ui';
|
|
2
|
-
import
|
|
3
|
-
export declare function createTopBar(
|
|
2
|
+
import { PlayerContext } from '../../types/interfaces';
|
|
3
|
+
export declare function createTopBar(playerContext: PlayerContext): TitleBar;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { ControlBar } from 'bitmovin-player-ui';
|
|
2
|
-
import
|
|
3
|
-
export declare function createVerticalVideoControlBar(
|
|
2
|
+
import { PlayerContext } from 'types/interfaces';
|
|
3
|
+
export declare function createVerticalVideoControlBar(playerContext: PlayerContext): ControlBar;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare function rewind(player:
|
|
3
|
-
export declare function forward(player:
|
|
1
|
+
import { NpoPlayerAPI } from '../../services/npoPlayerAPI/npoPlayerAPI';
|
|
2
|
+
export declare function rewind(player: NpoPlayerAPI): void;
|
|
3
|
+
export declare function forward(player: NpoPlayerAPI): void;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import NpoPlayer from '../npoplayer';
|
|
2
1
|
import { UIContainer } from 'bitmovin-player-ui';
|
|
3
2
|
import { PlayerAPI } from 'bitmovin-player';
|
|
4
|
-
import { NpoPlayerUIVariants } from '../types/interfaces';
|
|
5
|
-
export declare function createUIContainer(
|
|
3
|
+
import { NpoPlayerUIVariants, PlayerContext } from '../types/interfaces';
|
|
4
|
+
export declare function createUIContainer(playerContext: PlayerContext, player: PlayerAPI, variant: NpoPlayerUIVariants): UIContainer;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import '@testing-library/jest-dom';
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export const createLogEmitterMock = () => {
|
|
2
|
+
const logEmitterMock = {
|
|
3
|
+
emit: jest.fn(),
|
|
4
|
+
on: jest.fn(),
|
|
5
|
+
once: jest.fn(),
|
|
6
|
+
off: jest.fn(),
|
|
7
|
+
addListener: jest.fn(),
|
|
8
|
+
removeListener: jest.fn(),
|
|
9
|
+
removeAllListeners: jest.fn(),
|
|
10
|
+
listeners: jest.fn(),
|
|
11
|
+
listenerCount: jest.fn(),
|
|
12
|
+
rawListeners: jest.fn(),
|
|
13
|
+
eventNames: jest.fn(),
|
|
14
|
+
setMaxListeners: jest.fn(),
|
|
15
|
+
getMaxListeners: jest.fn(),
|
|
16
|
+
prependListener: jest.fn(),
|
|
17
|
+
prependOnceListener: jest.fn()
|
|
18
|
+
};
|
|
19
|
+
return logEmitterMock;
|
|
20
|
+
};
|
|
@@ -30,6 +30,9 @@ export const mockNpoPlayer = {
|
|
|
30
30
|
uiManager: undefined,
|
|
31
31
|
canceledPlayNextScreen: false,
|
|
32
32
|
npoTag: undefined,
|
|
33
|
+
npoTagInitialisation: undefined,
|
|
34
|
+
npoTagInstance: undefined,
|
|
35
|
+
npoTagPageTracker: undefined,
|
|
33
36
|
logEmitter: {},
|
|
34
37
|
uiComponents: {
|
|
35
38
|
settingsPanels: [settingsPanelMock, settingsPanelMock]
|
|
@@ -65,7 +68,6 @@ export const mockNpoPlayer = {
|
|
|
65
68
|
variant: '',
|
|
66
69
|
playerContext: {},
|
|
67
70
|
isShowingPlayNextScreen: false,
|
|
68
|
-
userPreferences: {},
|
|
69
71
|
eventListeners: undefined,
|
|
70
72
|
setVolume: function (volume) {
|
|
71
73
|
jest.fn();
|
|
@@ -115,6 +117,6 @@ export const mockNpoPlayer = {
|
|
|
115
117
|
updateMarkers: function () {
|
|
116
118
|
jest.fn();
|
|
117
119
|
},
|
|
118
|
-
|
|
120
|
+
npoPlayerServices: new NpoPlayerServices(),
|
|
119
121
|
mockNpoPlayer: undefined
|
|
120
122
|
};
|
|
@@ -15,7 +15,9 @@ export declare const createMockNpoPlayer: (overrides?: {}) => {
|
|
|
15
15
|
};
|
|
16
16
|
uiComponents: {};
|
|
17
17
|
container: HTMLDivElement;
|
|
18
|
-
streamOptions: {
|
|
18
|
+
streamOptions: {
|
|
19
|
+
enableSubtitles: boolean;
|
|
20
|
+
};
|
|
19
21
|
jwt: string;
|
|
20
22
|
apiPayload: {
|
|
21
23
|
baseURL: string;
|
|
@@ -32,8 +34,9 @@ export declare const createMockNpoPlayer: (overrides?: {}) => {
|
|
|
32
34
|
isShowingPlayNextScreen: boolean;
|
|
33
35
|
canceledPlayNextScreen: boolean;
|
|
34
36
|
playerContext: undefined;
|
|
35
|
-
|
|
37
|
+
npoPlayerServices: {
|
|
36
38
|
getStoredUserPrefs: jest.Mock<any, any, any>;
|
|
39
|
+
setStoredUserPrefs: jest.Mock<any, any, any>;
|
|
37
40
|
handleUserPrefs: jest.Mock<any, any, any>;
|
|
38
41
|
setAccessibilityAttributes: jest.Mock<any, any, any>;
|
|
39
42
|
keyboardHandler: jest.Mock<any, any, any>;
|
|
@@ -42,7 +45,6 @@ export declare const createMockNpoPlayer: (overrides?: {}) => {
|
|
|
42
45
|
};
|
|
43
46
|
eventListeners: undefined;
|
|
44
47
|
mockNpoPlayer: undefined;
|
|
45
|
-
userPreferences: {};
|
|
46
48
|
initPlayer: jest.Mock<any, any, any>;
|
|
47
49
|
loadStream: jest.Mock<any, any, any>;
|
|
48
50
|
doError: jest.Mock<any, any, any>;
|
|
@@ -24,6 +24,7 @@ export const createMockNpoPlayerAPI = (overrides = {}) => ({
|
|
|
24
24
|
setViewMode: jest.fn(),
|
|
25
25
|
getViewMode: jest.fn(),
|
|
26
26
|
areSubtitlesEnabled: jest.fn().mockReturnValue(false),
|
|
27
|
+
getCurrentSubtitle: jest.fn().mockReturnValue('nl'),
|
|
27
28
|
enableSubtitles: jest.fn(),
|
|
28
29
|
isPaused: jest.fn().mockReturnValue(false),
|
|
29
30
|
isMuted: jest.fn().mockReturnValue(false),
|
|
@@ -32,6 +33,7 @@ export const createMockNpoPlayerAPI = (overrides = {}) => ({
|
|
|
32
33
|
getSupportedTech: jest.fn().mockReturnValue([]),
|
|
33
34
|
off: jest.fn(),
|
|
34
35
|
on: jest.fn(),
|
|
36
|
+
isCastAvailable: jest.fn(),
|
|
35
37
|
seek: jest.fn(),
|
|
36
38
|
timeShift: jest.fn(),
|
|
37
39
|
getContainer: jest.fn(),
|
|
@@ -44,7 +46,6 @@ export const createMockNpoPlayerAPI = (overrides = {}) => ({
|
|
|
44
46
|
getTimeShift: jest.fn().mockReturnValue(0),
|
|
45
47
|
scheduleAds: jest.fn().mockResolvedValue([]),
|
|
46
48
|
getActiveAdBreak: jest.fn().mockReturnValue(undefined),
|
|
47
|
-
discardAdBreak: jest.fn(),
|
|
48
49
|
getConfig: jest.fn().mockReturnValue({}),
|
|
49
50
|
createUIManager: jest.fn(),
|
|
50
51
|
...overrides
|
|
@@ -68,7 +69,9 @@ export const createMockNpoPlayer = (overrides = {}) => ({
|
|
|
68
69
|
logEmitter: { emit: jest.fn() },
|
|
69
70
|
uiComponents: {},
|
|
70
71
|
container: document.createElement('div'),
|
|
71
|
-
streamOptions: {
|
|
72
|
+
streamOptions: {
|
|
73
|
+
enableSubtitles: false
|
|
74
|
+
},
|
|
72
75
|
jwt: '',
|
|
73
76
|
apiPayload: { baseURL: '', jwt: '', data: {} },
|
|
74
77
|
adBreakActive: false,
|
|
@@ -78,8 +81,9 @@ export const createMockNpoPlayer = (overrides = {}) => ({
|
|
|
78
81
|
isShowingPlayNextScreen: false,
|
|
79
82
|
canceledPlayNextScreen: false,
|
|
80
83
|
playerContext: undefined,
|
|
81
|
-
|
|
84
|
+
npoPlayerServices: {
|
|
82
85
|
getStoredUserPrefs: jest.fn(),
|
|
86
|
+
setStoredUserPrefs: jest.fn(),
|
|
83
87
|
handleUserPrefs: jest.fn(),
|
|
84
88
|
setAccessibilityAttributes: jest.fn(),
|
|
85
89
|
keyboardHandler: jest.fn(),
|
|
@@ -88,7 +92,6 @@ export const createMockNpoPlayer = (overrides = {}) => ({
|
|
|
88
92
|
},
|
|
89
93
|
eventListeners: undefined,
|
|
90
94
|
mockNpoPlayer: undefined,
|
|
91
|
-
userPreferences: {},
|
|
92
95
|
initPlayer: jest.fn(),
|
|
93
96
|
loadStream: jest.fn(),
|
|
94
97
|
doError: jest.fn(),
|
|
@@ -112,7 +115,7 @@ export const createMockNpoPlayer = (overrides = {}) => ({
|
|
|
112
115
|
});
|
|
113
116
|
export const createPlayerContextMock = (overrides = {}) => ({
|
|
114
117
|
player: createMockNpoPlayerAPI(),
|
|
115
|
-
|
|
118
|
+
npoPlayer: createMockNpoPlayer(),
|
|
116
119
|
...overrides
|
|
117
120
|
});
|
|
118
121
|
export default createPlayerContextMock;
|
package/lib/types/classes.d.ts
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { EventEmitter } from 'events';
|
|
3
|
+
type AllowedEvents = 'logControlsVisibilityChange' | 'logError' | 'logEvent';
|
|
3
4
|
export declare class LogEmitter extends EventEmitter {
|
|
5
|
+
emit(event: AllowedEvents, ...args: any[]): boolean;
|
|
6
|
+
on(event: AllowedEvents, listener: (...args: any[]) => void): this;
|
|
7
|
+
once(event: AllowedEvents, listener: (...args: any[]) => void): this;
|
|
8
|
+
off(event: AllowedEvents, listener: (...args: any[]) => void): this;
|
|
4
9
|
}
|
|
10
|
+
export {};
|
package/lib/types/classes.js
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
1
|
import { EventEmitter } from 'events';
|
|
2
2
|
export class LogEmitter extends EventEmitter {
|
|
3
|
+
emit(event, ...args) {
|
|
4
|
+
return super.emit(event, ...args);
|
|
5
|
+
}
|
|
6
|
+
on(event, listener) {
|
|
7
|
+
return super.on(event, listener);
|
|
8
|
+
}
|
|
9
|
+
once(event, listener) {
|
|
10
|
+
return super.once(event, listener);
|
|
11
|
+
}
|
|
12
|
+
off(event, listener) {
|
|
13
|
+
return super.off(event, listener);
|
|
14
|
+
}
|
|
3
15
|
}
|
|
@@ -4,7 +4,7 @@ import { ButtonConfig } from 'bitmovin-player-ui/dist/js/framework/components/bu
|
|
|
4
4
|
import NpoPlayer from '../npoplayer';
|
|
5
5
|
import { NpoPlayerAPI } from '../services/npoPlayerAPI/npoPlayerAPI';
|
|
6
6
|
import { NpoPlayerEventCallback } from './events';
|
|
7
|
-
import {
|
|
7
|
+
import { AnalyticsConfig, DRMConfig, GoogleCastRemoteControlConfig, ProgressiveSourceConfig, SourceConfigOptions, SourceLabelingStreamTypeConfig, SubtitleTrack, ThumbnailTrack, VRConfig } from 'bitmovin-player';
|
|
8
8
|
export { Technology } from 'bitmovin-player';
|
|
9
9
|
export interface Profile {
|
|
10
10
|
profileName: string;
|
|
@@ -31,7 +31,7 @@ export interface StreamObject {
|
|
|
31
31
|
}
|
|
32
32
|
export interface PlayerContext {
|
|
33
33
|
player: NpoPlayerAPI;
|
|
34
|
-
|
|
34
|
+
npoPlayer: NpoPlayer;
|
|
35
35
|
}
|
|
36
36
|
export interface ApiPayload {
|
|
37
37
|
baseURL: string;
|
|
@@ -95,6 +95,26 @@ interface FragmentSection {
|
|
|
95
95
|
export interface Fragment {
|
|
96
96
|
sections: FragmentSection[];
|
|
97
97
|
}
|
|
98
|
+
export interface SourceConfig {
|
|
99
|
+
dash?: string;
|
|
100
|
+
hls?: string;
|
|
101
|
+
progressive?: string | ProgressiveSourceConfig[];
|
|
102
|
+
smooth?: string;
|
|
103
|
+
whep?: string;
|
|
104
|
+
poster?: string;
|
|
105
|
+
drm?: DRMConfig;
|
|
106
|
+
options?: SourceConfigOptions;
|
|
107
|
+
subtitleTracks?: SubtitleTrack[];
|
|
108
|
+
thumbnailTrack?: ThumbnailTrack;
|
|
109
|
+
vr?: VRConfig;
|
|
110
|
+
title?: string;
|
|
111
|
+
description?: string;
|
|
112
|
+
labeling?: SourceLabelingStreamTypeConfig;
|
|
113
|
+
analytics?: AnalyticsConfig;
|
|
114
|
+
metadata?: {
|
|
115
|
+
[key: string]: string;
|
|
116
|
+
};
|
|
117
|
+
}
|
|
98
118
|
export interface StreamOptions {
|
|
99
119
|
sourceConfig?: SourceConfig;
|
|
100
120
|
fragments?: Fragment;
|
|
@@ -197,6 +217,8 @@ export type TimeLineMarker = {
|
|
|
197
217
|
export declare enum LocalStorageValues {
|
|
198
218
|
IS_MUTED = "ismuted",
|
|
199
219
|
VOLUME = "volume",
|
|
200
|
-
SUBTITLES_ENABLED = "subtitles_enabled"
|
|
220
|
+
SUBTITLES_ENABLED = "subtitles_enabled",
|
|
221
|
+
SUBTITLES_LANGUAGE = "subtitles_language"
|
|
201
222
|
}
|
|
202
223
|
export type LocalStorageData = Partial<Record<LocalStorageValues, string | number>>;
|
|
224
|
+
export type NPOGoogleCastRemoteControlConfig = GoogleCastRemoteControlConfig;
|
package/lib/types/interfaces.js
CHANGED
|
@@ -43,4 +43,5 @@ export var LocalStorageValues;
|
|
|
43
43
|
LocalStorageValues["IS_MUTED"] = "ismuted";
|
|
44
44
|
LocalStorageValues["VOLUME"] = "volume";
|
|
45
45
|
LocalStorageValues["SUBTITLES_ENABLED"] = "subtitles_enabled";
|
|
46
|
+
LocalStorageValues["SUBTITLES_LANGUAGE"] = "subtitles_language";
|
|
46
47
|
})(LocalStorageValues || (LocalStorageValues = {}));
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Button } from 'bitmovin-player-ui';
|
|
2
2
|
import type NpoPlayer from '../../npoplayer';
|
|
3
|
-
export declare function createAdButton(
|
|
3
|
+
export declare function createAdButton(npoPlayer: NpoPlayer): Button<{
|
|
4
4
|
cssClass: string;
|
|
5
5
|
text: string;
|
|
6
6
|
hidden: true;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { Button } from 'bitmovin-player-ui';
|
|
2
|
-
export function createAdButton(
|
|
3
|
-
|
|
2
|
+
export function createAdButton(npoPlayer) {
|
|
3
|
+
npoPlayer.uiComponents.adbutton = undefined;
|
|
4
4
|
const adButton = new Button({
|
|
5
5
|
cssClass: 'ui-textbutton ui-sterbutton bmpui-ui-button',
|
|
6
6
|
text: 'Ga naar website van adverteerder',
|
|
7
7
|
hidden: true
|
|
8
8
|
});
|
|
9
|
-
|
|
9
|
+
npoPlayer.uiComponents.adbutton = adButton;
|
|
10
10
|
return adButton;
|
|
11
11
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Label } from 'bitmovin-player-ui';
|
|
2
2
|
import type NpoPlayer from '../../npoplayer';
|
|
3
|
-
export declare function createAdLabel(
|
|
3
|
+
export declare function createAdLabel(npoPlayer: NpoPlayer): Label<{
|
|
4
4
|
text: string;
|
|
5
5
|
cssClass: string;
|
|
6
6
|
hidden: true;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Label } from 'bitmovin-player-ui';
|
|
2
|
-
export function createAdLabel(
|
|
3
|
-
|
|
2
|
+
export function createAdLabel(npoPlayer) {
|
|
3
|
+
npoPlayer.uiComponents.adlabel = undefined;
|
|
4
4
|
const adLabel = new Label({ text: '', cssClass: 'adLabel', hidden: true });
|
|
5
|
-
|
|
5
|
+
npoPlayer.uiComponents.adlabel = adLabel;
|
|
6
6
|
return adLabel;
|
|
7
7
|
}
|
|
@@ -1,42 +1,35 @@
|
|
|
1
1
|
import { type PlayerAPI } from 'bitmovin-player';
|
|
2
|
-
import { Button, ControlBar } from 'bitmovin-player-ui';
|
|
2
|
+
import { Button, ControlBar, CastToggleButton } from 'bitmovin-player-ui';
|
|
3
3
|
import type NpoPlayer from '../../npoplayer';
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
import { PlayerContext } from '../../types/interfaces';
|
|
5
|
+
import { NpoPlayerAPI } from '../../services/npoPlayerAPI/npoPlayerAPI';
|
|
6
|
+
export declare function createMiddleButtons(playerContext: PlayerContext): ControlBar;
|
|
7
|
+
export declare function createRewindButton(playerContext: PlayerContext): Button<{
|
|
6
8
|
cssClass: string;
|
|
7
9
|
ariaLabel: string;
|
|
8
10
|
}>;
|
|
9
|
-
export declare function createForwardButton(
|
|
11
|
+
export declare function createForwardButton(playerContext: PlayerContext): Button<{
|
|
10
12
|
cssClass: string;
|
|
11
13
|
ariaLabel: string;
|
|
12
14
|
}>;
|
|
13
|
-
export declare function createPlayNextButton(player: PlayerAPI,
|
|
15
|
+
export declare function createPlayNextButton(player: PlayerAPI, npoPlayer: NpoPlayer): Button<{
|
|
14
16
|
cssClass: string;
|
|
15
|
-
text: string;
|
|
16
17
|
ariaLabel: string;
|
|
17
|
-
hidden: false;
|
|
18
18
|
}>;
|
|
19
|
-
export declare function createCancelPlayNextButton(player: PlayerAPI,
|
|
19
|
+
export declare function createCancelPlayNextButton(player: PlayerAPI, npoPlayer: NpoPlayer): Button<{
|
|
20
20
|
cssClass: string;
|
|
21
|
-
text: string;
|
|
22
21
|
ariaLabel: string;
|
|
23
|
-
hidden: false;
|
|
24
22
|
}>;
|
|
25
23
|
export declare function createskipIntroButton(player: PlayerAPI): Button<{
|
|
26
24
|
cssClass: string;
|
|
27
|
-
text: string;
|
|
28
25
|
ariaLabel: string;
|
|
29
|
-
hidden: true;
|
|
30
26
|
}>;
|
|
31
27
|
export declare function createGoBackLiveButton(player: PlayerAPI): Button<{
|
|
32
28
|
cssClass: string;
|
|
33
|
-
text: string;
|
|
34
29
|
ariaLabel: string;
|
|
35
|
-
hidden: true;
|
|
36
30
|
}>;
|
|
37
|
-
export declare function createWatchFromStartButton(player: PlayerAPI,
|
|
31
|
+
export declare function createWatchFromStartButton(player: PlayerAPI, npoPlayer: NpoPlayer): Button<{
|
|
38
32
|
cssClass: string;
|
|
39
|
-
text: string;
|
|
40
33
|
ariaLabel: string;
|
|
41
|
-
hidden: true;
|
|
42
34
|
}>;
|
|
35
|
+
export declare function createChromecastButton(player: NpoPlayerAPI, npoPlayer: NpoPlayer): CastToggleButton;
|
|
@@ -1,64 +1,65 @@
|
|
|
1
|
-
import { Button, PlaybackToggleButton, ControlBar } from 'bitmovin-player-ui';
|
|
1
|
+
import { Button, PlaybackToggleButton, ControlBar, CastToggleButton } from 'bitmovin-player-ui';
|
|
2
2
|
import { rewind, forward } from '../handlers/timecontrolhandlers';
|
|
3
|
-
|
|
3
|
+
import { NpoPlayerEvent } from '../../types/events';
|
|
4
|
+
export function createMiddleButtons(playerContext) {
|
|
4
5
|
const bigPlayToggleButton = new PlaybackToggleButton({
|
|
5
6
|
cssClass: 'ui-playbacktogglebutton'
|
|
6
7
|
});
|
|
7
|
-
const bigRewindButton = createRewindButton(
|
|
8
|
-
const bigForwardButton = createForwardButton(
|
|
8
|
+
const bigRewindButton = createRewindButton(playerContext);
|
|
9
|
+
const bigForwardButton = createForwardButton(playerContext);
|
|
9
10
|
return new ControlBar({
|
|
10
11
|
components: [bigRewindButton, bigPlayToggleButton, bigForwardButton],
|
|
11
12
|
cssClasses: ['controlbar-middle']
|
|
12
13
|
});
|
|
13
14
|
}
|
|
14
|
-
export function createRewindButton(
|
|
15
|
+
export function createRewindButton(playerContext) {
|
|
16
|
+
const { player } = playerContext;
|
|
15
17
|
const rewindButton = new Button({
|
|
16
18
|
cssClass: 'ui-rewindbutton bmpui-ui-button',
|
|
17
19
|
ariaLabel: 'Spoel 10 seconden terug'
|
|
18
20
|
});
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
});
|
|
23
|
-
}
|
|
21
|
+
rewindButton.onClick.subscribe(() => {
|
|
22
|
+
rewind(player);
|
|
23
|
+
});
|
|
24
24
|
return rewindButton;
|
|
25
25
|
}
|
|
26
|
-
export function createForwardButton(
|
|
26
|
+
export function createForwardButton(playerContext) {
|
|
27
|
+
const { player } = playerContext;
|
|
27
28
|
const forwardButton = new Button({
|
|
28
29
|
cssClass: 'ui-forwardbutton bmpui-ui-button',
|
|
29
30
|
ariaLabel: 'Spoel 10 seconden vooruit'
|
|
30
31
|
});
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
});
|
|
35
|
-
}
|
|
32
|
+
forwardButton.onClick.subscribe(() => {
|
|
33
|
+
forward(player);
|
|
34
|
+
});
|
|
36
35
|
return forwardButton;
|
|
37
36
|
}
|
|
38
|
-
export function createPlayNextButton(player,
|
|
37
|
+
export function createPlayNextButton(player, npoPlayer) {
|
|
39
38
|
const playNextButton = new Button({
|
|
40
39
|
cssClass: 'ui-textbutton ui-playNextButton bmpui-ui-button',
|
|
41
40
|
text: '<span class="bmpui-ui-textbutton-icon bmpui-ui-textbutton-icon-play"></span> Volgende aflevering',
|
|
42
41
|
ariaLabel: 'Volgende aflevering',
|
|
43
|
-
hidden: false
|
|
42
|
+
hidden: false,
|
|
43
|
+
acceptsTouchWithUiHidden: true
|
|
44
44
|
});
|
|
45
45
|
playNextButton.onClick.subscribe(() => {
|
|
46
46
|
if (player != undefined) {
|
|
47
|
-
|
|
47
|
+
npoPlayer.doPlayNext();
|
|
48
48
|
}
|
|
49
49
|
});
|
|
50
50
|
return playNextButton;
|
|
51
51
|
}
|
|
52
|
-
export function createCancelPlayNextButton(player,
|
|
52
|
+
export function createCancelPlayNextButton(player, npoPlayer) {
|
|
53
53
|
const cancelPlayNextButton = new Button({
|
|
54
54
|
cssClass: 'ui-textbutton ui-cancelPlayNextButton bmpui-ui-button',
|
|
55
55
|
text: 'Annuleer',
|
|
56
56
|
ariaLabel: 'Annuleer',
|
|
57
|
-
hidden: false
|
|
57
|
+
hidden: false,
|
|
58
|
+
acceptsTouchWithUiHidden: true
|
|
58
59
|
});
|
|
59
60
|
cancelPlayNextButton.onClick.subscribe(() => {
|
|
60
61
|
if (player != undefined) {
|
|
61
|
-
|
|
62
|
+
npoPlayer.cancelPlayNextScreen();
|
|
62
63
|
}
|
|
63
64
|
});
|
|
64
65
|
return cancelPlayNextButton;
|
|
@@ -91,7 +92,7 @@ export function createGoBackLiveButton(player) {
|
|
|
91
92
|
});
|
|
92
93
|
return goBackLiveButton;
|
|
93
94
|
}
|
|
94
|
-
export function createWatchFromStartButton(player,
|
|
95
|
+
export function createWatchFromStartButton(player, npoPlayer) {
|
|
95
96
|
const watchFromStartButton = new Button({
|
|
96
97
|
cssClass: 'ui-textbutton ui-watchfromstartbutton bmpui-ui-button',
|
|
97
98
|
text: 'Kijk vanaf het begin',
|
|
@@ -100,10 +101,26 @@ export function createWatchFromStartButton(player, npoplayer) {
|
|
|
100
101
|
});
|
|
101
102
|
watchFromStartButton.onClick.subscribe(() => {
|
|
102
103
|
if (player.isLive() ?? false)
|
|
103
|
-
|
|
104
|
-
if (
|
|
105
|
-
|
|
104
|
+
npoPlayer.watchFromStart();
|
|
105
|
+
if (npoPlayer.uiComponents.watchFromStartButton)
|
|
106
|
+
npoPlayer.uiComponents.watchFromStartButton.hide();
|
|
106
107
|
});
|
|
107
|
-
|
|
108
|
+
npoPlayer.uiComponents.watchFromStartButton = watchFromStartButton;
|
|
108
109
|
return watchFromStartButton;
|
|
109
110
|
}
|
|
111
|
+
export function createChromecastButton(player, npoPlayer) {
|
|
112
|
+
const chromeCastButton = new CastToggleButton({
|
|
113
|
+
disabled: true
|
|
114
|
+
});
|
|
115
|
+
const handleCastAvailable = () => {
|
|
116
|
+
const remoteControlConfig = npoPlayer.playerConfig?.remotecontrol;
|
|
117
|
+
if (player?.isCastAvailable() && remoteControlConfig.customReceiverConfig?.enable !== 'false') {
|
|
118
|
+
chromeCastButton.enable();
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
chromeCastButton.disable();
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
player?.on(NpoPlayerEvent.CastAvailable, handleCastAvailable);
|
|
125
|
+
return chromeCastButton;
|
|
126
|
+
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { ControlBar } from 'bitmovin-player-ui';
|
|
2
|
-
import
|
|
3
|
-
export declare function createControlBar(
|
|
2
|
+
import { NpoPlayerUIVariants, PlayerContext } from '../../types/interfaces';
|
|
3
|
+
export declare function createControlBar(playerContext: PlayerContext, variant: NpoPlayerUIVariants): ControlBar;
|