@npo/player 1.25.0 → 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 +12 -12
- 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 +4 -4
- package/lib/js/playeractions/handlers/processsourceconfig.d.ts +1 -0
- package/lib/js/playeractions/handlers/processsourceconfig.js +4 -5
- package/lib/js/playeractions/handlers/processsourceconfig.test.js +25 -0
- package/lib/js/tracking/handlers/playertrackerstart.js +1 -1
- package/lib/lang/nl.json +1 -1
- package/lib/lang/subtitleLabels/nl.json +14 -0
- package/lib/npoplayer.d.ts +2 -3
- package/lib/npoplayer.js +24 -32
- package/lib/npoplayer.test.js +1 -1
- package/lib/package.json +2 -2
- 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/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 +1 -2
- package/lib/services/nicamHandlers/nicamhandler.js +17 -16
- package/lib/services/nicamHandlers/nicamhandler.test.js +72 -9
- package/lib/services/npoPlayerAPI/npoPlayerAPI.d.ts +2 -2
- package/lib/services/npoPlayerAPI/npoPlayerAPI.js +16 -23
- package/lib/services/preferences/handlePreferences.d.ts +2 -0
- package/lib/services/preferences/handlePreferences.js +42 -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/services.d.ts +6 -2
- package/lib/services/services.js +21 -2
- package/lib/services/streamoptionsHandlers/{steamOptionsHandler.js → streamOptionsHandler.js} +11 -11
- package/lib/services/streamoptionsHandlers/streamOptionsHandler.test.js +20 -20
- 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/processsourceconfig.d.ts +1 -0
- package/lib/src/js/playeractions/handlers/processsourceconfig.test.d.ts +1 -0
- package/lib/src/npoplayer.d.ts +2 -3
- package/lib/src/services/nicamHandlers/nicamhandler.d.ts +1 -2
- package/lib/src/services/npoPlayerAPI/npoPlayerAPI.d.ts +2 -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 +6 -2
- 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 +24 -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 +6 -16
- 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/playnext.d.ts +1 -4
- package/lib/src/ui/components/seekbar.d.ts +1 -1
- package/lib/src/ui/components/titlebar.d.ts +1 -1
- package/lib/src/ui/handlers/playnextscreen.test.d.ts +1 -0
- 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 +1 -2
- package/lib/tests/mocks/playerContextMock.d.ts +5 -3
- package/lib/tests/mocks/playerContextMock.js +7 -5
- package/lib/types/classes.d.ts +6 -0
- package/lib/types/classes.js +12 -0
- package/lib/types/interfaces.d.ts +24 -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 +6 -16
- package/lib/ui/components/buttons.js +27 -10
- package/lib/ui/components/controlbar.d.ts +2 -2
- package/lib/ui/components/controlbar.js +20 -37
- package/lib/ui/components/ctabar.d.ts +1 -1
- package/lib/ui/components/ctabar.js +4 -4
- package/lib/ui/components/nativemobile/topbar.js +2 -2
- package/lib/ui/components/playnext.d.ts +1 -4
- 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.js +6 -20
- package/lib/ui/components/verticalvideo/controlbar.js +1 -1
- package/lib/ui/handlers/playnextscreen.test.d.ts +1 -0
- package/lib/ui/nativemobileuifactory.js +1 -1
- package/lib/ui/nativemobileuifactory.test.js +2 -1
- package/lib/ui/uicontainer.js +11 -30
- package/lib/ui/uicontainer.test.d.ts +1 -0
- package/lib/ui/uicontainer.test.js +80 -0
- package/package.json +2 -2
- package/src/style/components/_advert.scss +0 -9
- 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 +25 -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/playnextstreen.test.d.ts → js/playeractions/handlers/processsourceconfig.test.d.ts} +0 -0
- /package/lib/{ui/handlers/playnextstreen.test.d.ts → services/preferences/handlePreferences.test.d.ts} +0 -0
- /package/lib/services/streamoptionsHandlers/{steamOptionsHandler.d.ts → streamOptionsHandler.d.ts} +0 -0
- /package/lib/src/services/streamoptionsHandlers/{steamOptionsHandler.d.ts → streamOptionsHandler.d.ts} +0 -0
- /package/lib/ui/handlers/{playnextstreen.test.js → playnextscreen.test.js} +0 -0
package/lib/src/npoplayer.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { type InitialisationProps } from '@npotag/tag/dist/types/src/npoTag';
|
|
|
4
4
|
import { type PlayerAPI, type PlayerConfig, type SourceConfig } from 'bitmovin-player';
|
|
5
5
|
import { UIManager } from 'bitmovin-player-ui';
|
|
6
6
|
import { LogEmitter } from './types/classes';
|
|
7
|
-
import { type DRMProfile, type ApiPayload, type NPOTagObject, type StreamObject, type StreamOptions, type UIComponents, type TimeLineMarker, type
|
|
7
|
+
import { type DRMProfile, type ApiPayload, type NPOTagObject, type StreamObject, type StreamOptions, type UIComponents, type TimeLineMarker, type PlayerContext, type EventListeners, NpoPlayerUIVariants } from './types/interfaces';
|
|
8
8
|
export { type PlayerConfig, type InitialisationProps, type NPOTagObject, type StreamOptions, NpoPlayerUIVariants };
|
|
9
9
|
export default class NpoPlayer {
|
|
10
10
|
playerConfig: PlayerConfig | undefined;
|
|
@@ -30,10 +30,9 @@ export default class NpoPlayer {
|
|
|
30
30
|
isShowingPlayNextScreen: boolean;
|
|
31
31
|
canceledPlayNextScreen: boolean;
|
|
32
32
|
playerContext: PlayerContext | undefined;
|
|
33
|
-
|
|
33
|
+
npoPlayerServices: NpoPlayerServices;
|
|
34
34
|
eventListeners: EventListeners | undefined;
|
|
35
35
|
mockNpoPlayer: any;
|
|
36
|
-
userPreferences: LocalStorageData;
|
|
37
36
|
constructor(container: HTMLElement | {
|
|
38
37
|
container: HTMLElement;
|
|
39
38
|
playerConfig: PlayerConfig;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { UIManager } from 'bitmovin-player-ui';
|
|
2
1
|
import { PlayerContext } from '../../types/interfaces';
|
|
3
2
|
export declare function processNicam(playerContext: PlayerContext, nicamElement: HTMLElement | undefined): void;
|
|
4
3
|
export declare function addNicamIcon(character: string, nicamElement: Element): void;
|
|
5
|
-
export declare function showNicamAfterUiDelay(playerContext: PlayerContext
|
|
4
|
+
export declare function showNicamAfterUiDelay(playerContext: PlayerContext): void;
|
|
6
5
|
export declare function setupNicamKijkwijzerIcons(playerContext: PlayerContext): void;
|
|
@@ -17,7 +17,8 @@ export declare class NpoPlayerAPI {
|
|
|
17
17
|
setViewMode(viewMode: ViewMode): void;
|
|
18
18
|
getViewMode(): ViewMode;
|
|
19
19
|
areSubtitlesEnabled(): boolean;
|
|
20
|
-
|
|
20
|
+
getCurrentSubtitle(): string | undefined;
|
|
21
|
+
enableSubtitles(selectedLang?: string): void;
|
|
21
22
|
isPaused(): boolean;
|
|
22
23
|
isMuted(): boolean;
|
|
23
24
|
isLive(): boolean;
|
|
@@ -38,7 +39,6 @@ export declare class NpoPlayerAPI {
|
|
|
38
39
|
getTimeShift(): number;
|
|
39
40
|
scheduleAds(adConfig: AdConfig): Promise<AdBreak[]>;
|
|
40
41
|
getActiveAdBreak(): AdBreak | null;
|
|
41
|
-
discardAdBreak(adBreakId: string): void;
|
|
42
42
|
getConfig(mergedConfig?: boolean): PlayerConfig;
|
|
43
43
|
createUIManager(playerContext: PlayerContext, variant: NpoPlayerUIVariants): Promise<void | UIManager>;
|
|
44
44
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { ApiPayload, Fragment, PlayerContext, Profile, Segment, TimeLineMarker, LocalStorageData, LocalStorageValues, NpoPlayerUIVariants } from '../types/interfaces';
|
|
2
2
|
import { AVType } from '@npotag/tag/dist/types/src/streamTracker';
|
|
3
|
-
import { UIManager } from 'bitmovin-player-ui';
|
|
4
3
|
export declare class NpoPlayerServices {
|
|
5
4
|
getAVType(avType: string): AVType;
|
|
6
5
|
keyboardHandler(playerContext: PlayerContext, e: KeyboardEvent): void;
|
|
@@ -13,7 +12,12 @@ export declare class NpoPlayerServices {
|
|
|
13
12
|
handleUserPrefs(playerContext: PlayerContext): void;
|
|
14
13
|
setAccessibilityAttributes(playerContext: PlayerContext): void;
|
|
15
14
|
schedulePreRolls(playerContext: PlayerContext): Promise<void>;
|
|
15
|
+
discardAdBreak(playerContext: PlayerContext): void;
|
|
16
16
|
handleVerticalVideoControls(playerContext: PlayerContext, variant: NpoPlayerUIVariants): void;
|
|
17
|
-
showNicamAfterUiDelay(playerContext: PlayerContext | undefined
|
|
17
|
+
showNicamAfterUiDelay(playerContext: PlayerContext | undefined): void;
|
|
18
18
|
setupNicamKijkwijzerIcons(playerContext: PlayerContext): void;
|
|
19
|
+
handlePreferences(playerContext: PlayerContext): void;
|
|
20
|
+
addUivisiblityHandlers(playerContext: PlayerContext): void;
|
|
21
|
+
removeUivisiblityHandlers(playerContext: PlayerContext): void;
|
|
22
|
+
handleStreamOptions(playerContext: PlayerContext): void;
|
|
19
23
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -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 {};
|
|
@@ -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 { GoogleCastRemoteControlConfig,
|
|
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,7 +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>>;
|
|
203
224
|
export type NPOGoogleCastRemoteControlConfig = GoogleCastRemoteControlConfig;
|
|
@@ -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,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,8 @@
|
|
|
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
4
|
import { PlayerContext } from '../../types/interfaces';
|
|
5
|
+
import { NpoPlayerAPI } from '../../services/npoPlayerAPI/npoPlayerAPI';
|
|
5
6
|
export declare function createMiddleButtons(playerContext: PlayerContext): ControlBar;
|
|
6
7
|
export declare function createRewindButton(playerContext: PlayerContext): Button<{
|
|
7
8
|
cssClass: string;
|
|
@@ -11,35 +12,24 @@ export declare function createForwardButton(playerContext: PlayerContext): Butto
|
|
|
11
12
|
cssClass: string;
|
|
12
13
|
ariaLabel: string;
|
|
13
14
|
}>;
|
|
14
|
-
export declare function createPlayNextButton(player: PlayerAPI,
|
|
15
|
+
export declare function createPlayNextButton(player: PlayerAPI, npoPlayer: NpoPlayer): Button<{
|
|
15
16
|
cssClass: string;
|
|
16
|
-
text: string;
|
|
17
17
|
ariaLabel: string;
|
|
18
|
-
hidden: false;
|
|
19
|
-
acceptsTouchWithUiHidden: true;
|
|
20
18
|
}>;
|
|
21
|
-
export declare function createCancelPlayNextButton(player: PlayerAPI,
|
|
19
|
+
export declare function createCancelPlayNextButton(player: PlayerAPI, npoPlayer: NpoPlayer): Button<{
|
|
22
20
|
cssClass: string;
|
|
23
|
-
text: string;
|
|
24
21
|
ariaLabel: string;
|
|
25
|
-
hidden: false;
|
|
26
|
-
acceptsTouchWithUiHidden: true;
|
|
27
22
|
}>;
|
|
28
23
|
export declare function createskipIntroButton(player: PlayerAPI): Button<{
|
|
29
24
|
cssClass: string;
|
|
30
|
-
text: string;
|
|
31
25
|
ariaLabel: string;
|
|
32
|
-
hidden: true;
|
|
33
26
|
}>;
|
|
34
27
|
export declare function createGoBackLiveButton(player: PlayerAPI): Button<{
|
|
35
28
|
cssClass: string;
|
|
36
|
-
text: string;
|
|
37
29
|
ariaLabel: string;
|
|
38
|
-
hidden: true;
|
|
39
30
|
}>;
|
|
40
|
-
export declare function createWatchFromStartButton(player: PlayerAPI,
|
|
31
|
+
export declare function createWatchFromStartButton(player: PlayerAPI, npoPlayer: NpoPlayer): Button<{
|
|
41
32
|
cssClass: string;
|
|
42
|
-
text: string;
|
|
43
33
|
ariaLabel: string;
|
|
44
|
-
hidden: true;
|
|
45
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 { PlayerContext } from '../../types/interfaces';
|
|
3
|
-
export declare function createControlBar(playerContext: PlayerContext): ControlBar;
|
|
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,13 +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
|
-
acceptsTouchWithUiHidden: true;
|
|
11
8
|
}>[];
|
|
12
9
|
cssClasses: string[];
|
|
13
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
|
}>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -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
|
+
};
|
|
@@ -68,7 +68,6 @@ export const mockNpoPlayer = {
|
|
|
68
68
|
variant: '',
|
|
69
69
|
playerContext: {},
|
|
70
70
|
isShowingPlayNextScreen: false,
|
|
71
|
-
userPreferences: {},
|
|
72
71
|
eventListeners: undefined,
|
|
73
72
|
setVolume: function (volume) {
|
|
74
73
|
jest.fn();
|
|
@@ -118,6 +117,6 @@ export const mockNpoPlayer = {
|
|
|
118
117
|
updateMarkers: function () {
|
|
119
118
|
jest.fn();
|
|
120
119
|
},
|
|
121
|
-
|
|
120
|
+
npoPlayerServices: new NpoPlayerServices(),
|
|
122
121
|
mockNpoPlayer: undefined
|
|
123
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),
|
|
@@ -45,7 +46,6 @@ export const createMockNpoPlayerAPI = (overrides = {}) => ({
|
|
|
45
46
|
getTimeShift: jest.fn().mockReturnValue(0),
|
|
46
47
|
scheduleAds: jest.fn().mockResolvedValue([]),
|
|
47
48
|
getActiveAdBreak: jest.fn().mockReturnValue(undefined),
|
|
48
|
-
discardAdBreak: jest.fn(),
|
|
49
49
|
getConfig: jest.fn().mockReturnValue({}),
|
|
50
50
|
createUIManager: jest.fn(),
|
|
51
51
|
...overrides
|
|
@@ -69,7 +69,9 @@ export const createMockNpoPlayer = (overrides = {}) => ({
|
|
|
69
69
|
logEmitter: { emit: jest.fn() },
|
|
70
70
|
uiComponents: {},
|
|
71
71
|
container: document.createElement('div'),
|
|
72
|
-
streamOptions: {
|
|
72
|
+
streamOptions: {
|
|
73
|
+
enableSubtitles: false
|
|
74
|
+
},
|
|
73
75
|
jwt: '',
|
|
74
76
|
apiPayload: { baseURL: '', jwt: '', data: {} },
|
|
75
77
|
adBreakActive: false,
|
|
@@ -79,8 +81,9 @@ export const createMockNpoPlayer = (overrides = {}) => ({
|
|
|
79
81
|
isShowingPlayNextScreen: false,
|
|
80
82
|
canceledPlayNextScreen: false,
|
|
81
83
|
playerContext: undefined,
|
|
82
|
-
|
|
84
|
+
npoPlayerServices: {
|
|
83
85
|
getStoredUserPrefs: jest.fn(),
|
|
86
|
+
setStoredUserPrefs: jest.fn(),
|
|
84
87
|
handleUserPrefs: jest.fn(),
|
|
85
88
|
setAccessibilityAttributes: jest.fn(),
|
|
86
89
|
keyboardHandler: jest.fn(),
|
|
@@ -89,7 +92,6 @@ export const createMockNpoPlayer = (overrides = {}) => ({
|
|
|
89
92
|
},
|
|
90
93
|
eventListeners: undefined,
|
|
91
94
|
mockNpoPlayer: undefined,
|
|
92
|
-
userPreferences: {},
|
|
93
95
|
initPlayer: jest.fn(),
|
|
94
96
|
loadStream: jest.fn(),
|
|
95
97
|
doError: jest.fn(),
|
|
@@ -113,7 +115,7 @@ export const createMockNpoPlayer = (overrides = {}) => ({
|
|
|
113
115
|
});
|
|
114
116
|
export const createPlayerContextMock = (overrides = {}) => ({
|
|
115
117
|
player: createMockNpoPlayerAPI(),
|
|
116
|
-
|
|
118
|
+
npoPlayer: createMockNpoPlayer(),
|
|
117
119
|
...overrides
|
|
118
120
|
});
|
|
119
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 { GoogleCastRemoteControlConfig,
|
|
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,7 +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>>;
|
|
203
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,7 +1,8 @@
|
|
|
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
4
|
import { PlayerContext } from '../../types/interfaces';
|
|
5
|
+
import { NpoPlayerAPI } from '../../services/npoPlayerAPI/npoPlayerAPI';
|
|
5
6
|
export declare function createMiddleButtons(playerContext: PlayerContext): ControlBar;
|
|
6
7
|
export declare function createRewindButton(playerContext: PlayerContext): Button<{
|
|
7
8
|
cssClass: string;
|
|
@@ -11,35 +12,24 @@ export declare function createForwardButton(playerContext: PlayerContext): Butto
|
|
|
11
12
|
cssClass: string;
|
|
12
13
|
ariaLabel: string;
|
|
13
14
|
}>;
|
|
14
|
-
export declare function createPlayNextButton(player: PlayerAPI,
|
|
15
|
+
export declare function createPlayNextButton(player: PlayerAPI, npoPlayer: NpoPlayer): Button<{
|
|
15
16
|
cssClass: string;
|
|
16
|
-
text: string;
|
|
17
17
|
ariaLabel: string;
|
|
18
|
-
hidden: false;
|
|
19
|
-
acceptsTouchWithUiHidden: true;
|
|
20
18
|
}>;
|
|
21
|
-
export declare function createCancelPlayNextButton(player: PlayerAPI,
|
|
19
|
+
export declare function createCancelPlayNextButton(player: PlayerAPI, npoPlayer: NpoPlayer): Button<{
|
|
22
20
|
cssClass: string;
|
|
23
|
-
text: string;
|
|
24
21
|
ariaLabel: string;
|
|
25
|
-
hidden: false;
|
|
26
|
-
acceptsTouchWithUiHidden: true;
|
|
27
22
|
}>;
|
|
28
23
|
export declare function createskipIntroButton(player: PlayerAPI): Button<{
|
|
29
24
|
cssClass: string;
|
|
30
|
-
text: string;
|
|
31
25
|
ariaLabel: string;
|
|
32
|
-
hidden: true;
|
|
33
26
|
}>;
|
|
34
27
|
export declare function createGoBackLiveButton(player: PlayerAPI): Button<{
|
|
35
28
|
cssClass: string;
|
|
36
|
-
text: string;
|
|
37
29
|
ariaLabel: string;
|
|
38
|
-
hidden: true;
|
|
39
30
|
}>;
|
|
40
|
-
export declare function createWatchFromStartButton(player: PlayerAPI,
|
|
31
|
+
export declare function createWatchFromStartButton(player: PlayerAPI, npoPlayer: NpoPlayer): Button<{
|
|
41
32
|
cssClass: string;
|
|
42
|
-
text: string;
|
|
43
33
|
ariaLabel: string;
|
|
44
|
-
hidden: true;
|
|
45
34
|
}>;
|
|
35
|
+
export declare function createChromecastButton(player: NpoPlayerAPI, npoPlayer: NpoPlayer): CastToggleButton;
|