@npo/player 1.27.7 → 1.28.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 +4 -7
- package/lib/js/markers/updateLiveMarkers.d.ts +7 -2
- package/lib/js/markers/updateLiveMarkers.js +11 -4
- package/lib/js/markers/updateLiveMarkers.test.js +13 -3
- package/lib/js/playeractions/handlers/handleoffsets.test.js +1 -1
- package/lib/js/playeractions/handlers/mediasessionactions.d.ts +7 -2
- package/lib/js/playeractions/handlers/mediasessionactions.js +7 -7
- package/lib/js/playeractions/handlers/processplayerconfig.d.ts +1 -1
- package/lib/js/playeractions/handlers/processplayerconfig.js +1 -1
- package/lib/js/playeractions/handlers/processplayerconfig.test.js +1 -1
- package/lib/js/playeractions/handlers/processsourceconfig.d.ts +11 -2
- package/lib/js/playeractions/handlers/processsourceconfig.js +35 -18
- package/lib/js/playeractions/handlers/removereplayclass.d.ts +1 -1
- package/lib/js/playeractions/handlers/removereplayclass.js +1 -1
- package/lib/js/playeractions/handlers/removereplayclass.test.js +1 -1
- package/lib/js/settings/localization.d.ts +1 -0
- package/lib/js/utilities/utilities.jwt.d.ts +2 -0
- package/lib/js/utilities/utilities.jwt.js +22 -0
- package/lib/js/utilities/utilities.stream.js +11 -2
- package/lib/js/utilities/utilities.url.js +2 -2
- package/lib/js/utilities/utilities.version.js +1 -1
- package/lib/js/utilities/utilities.version.test.js +1 -1
- package/lib/lang/nl.json +2 -1
- package/lib/npoplayer.d.ts +6 -5
- package/lib/npoplayer.js +81 -28
- package/lib/package.json +7 -9
- package/lib/services/a11y/setup.test.js +2 -4
- package/lib/services/advertHandlers/handlePreRolls.js +3 -4
- package/lib/services/advertHandlers/handlePrerolls.test.js +2 -3
- package/lib/services/chapterHandlers/chapterHandler.d.ts +35 -0
- package/lib/services/chapterHandlers/chapterHandler.js +230 -0
- package/lib/services/errors/errorBackground.test.js +1 -1
- package/lib/services/errors/errorHandler.d.ts +4 -2
- package/lib/services/errors/errorHandler.js +27 -14
- package/lib/services/errors/errorHandler.test.js +148 -0
- package/lib/services/errors/errorRetryHandler.d.ts +2 -0
- package/lib/services/errors/errorRetryHandler.js +14 -0
- package/lib/services/errors/errorRetryHandler.test.d.ts +1 -0
- package/lib/services/errors/errorRetryHandler.test.js +62 -0
- package/lib/services/errors/errorText.js +8 -5
- package/lib/services/errors/errorText.test.js +3 -3
- package/lib/services/infoPanel/infoPanel.d.ts +3 -0
- package/lib/services/infoPanel/infoPanel.js +35 -0
- package/lib/services/infoPanel/infoPanel.test.d.ts +1 -0
- package/lib/services/infoPanel/infoPanel.test.js +70 -0
- package/lib/services/keyboardHandlers/resolvekeypress.js +11 -1
- package/lib/services/keyboardHandlers/resolvekeypress.test.js +6 -2
- package/lib/services/nicamHandlers/nicamhandler.d.ts +1 -0
- package/lib/services/nicamHandlers/nicamhandler.js +2 -1
- package/lib/services/nicamHandlers/nicamhandler.test.js +2 -2
- package/lib/services/npoPlayerAPI/npoPlayerAPI.d.ts +8 -2
- package/lib/services/npoPlayerAPI/npoPlayerAPI.js +25 -12
- package/lib/services/npoPlayerAPI/playerModules.d.ts +1 -0
- package/lib/services/npoPlayerAPI/playerModules.js +46 -0
- package/lib/services/preferences/handlePreferences.js +9 -4
- package/lib/services/preferences/handlePreferences.test.js +53 -17
- package/lib/services/segmentHandlers/addSegmentEventListeners.test.js +1 -1
- package/lib/services/segmentHandlers/isSegmentInBounds.d.ts +2 -0
- package/lib/services/segmentHandlers/isSegmentInBounds.js +5 -0
- package/lib/services/segmentHandlers/isSegmentInBounds.test.d.ts +1 -0
- package/lib/services/segmentHandlers/isSegmentInBounds.test.js +27 -0
- package/lib/services/services.d.ts +5 -2
- package/lib/services/services.js +15 -2
- package/lib/services/streamFetchHandler/fetchStream.js +5 -4
- package/lib/services/streamFetchHandler/fetchstream.test.js +25 -3
- package/lib/services/streamoptionsHandlers/streamOptionsHandler.js +11 -9
- package/lib/services/streamoptionsHandlers/streamOptionsHandler.test.js +14 -2
- package/lib/services/trackingHandlers/eventBinding.js +48 -33
- package/lib/services/trackingHandlers/eventBinding.test.js +57 -1
- package/lib/services/trackingHandlers/playerTrackerStart.js +1 -1
- package/lib/services/uiHandlers/uiVisiblityHandler.js +6 -0
- package/lib/services/verticalVideoHandlers/handleVerticalVideoSettings.test.js +0 -9
- package/lib/src/js/markers/updateLiveMarkers.d.ts +7 -2
- package/lib/src/js/playeractions/handlers/mediasessionactions.d.ts +7 -2
- package/lib/src/js/playeractions/handlers/processplayerconfig.d.ts +1 -1
- package/lib/src/js/playeractions/handlers/processsourceconfig.d.ts +11 -2
- package/lib/src/js/playeractions/handlers/removereplayclass.d.ts +1 -1
- package/lib/src/js/settings/localization.d.ts +1 -0
- package/lib/src/js/utilities/utilities.jwt.d.ts +2 -0
- package/lib/src/npoplayer.d.ts +6 -5
- package/lib/src/services/chapterHandlers/chapterHandler.d.ts +35 -0
- package/lib/src/services/errors/errorHandler.d.ts +4 -2
- package/lib/src/services/errors/errorRetryHandler.d.ts +2 -0
- package/lib/src/services/errors/errorRetryHandler.test.d.ts +1 -0
- package/lib/src/services/infoPanel/infoPanel.d.ts +3 -0
- package/lib/src/services/infoPanel/infoPanel.test.d.ts +1 -0
- package/lib/src/services/nicamHandlers/nicamhandler.d.ts +1 -0
- package/lib/src/services/npoPlayerAPI/npoPlayerAPI.d.ts +8 -2
- package/lib/src/services/npoPlayerAPI/playerModules.d.ts +1 -0
- package/lib/src/services/segmentHandlers/isSegmentInBounds.d.ts +2 -0
- package/lib/src/services/segmentHandlers/isSegmentInBounds.test.d.ts +1 -0
- package/lib/src/services/services.d.ts +5 -2
- package/lib/src/types/events.d.ts +1 -1
- package/lib/src/types/interfaces.d.ts +39 -43
- package/lib/src/ui/components/adbutton.d.ts +3 -6
- package/lib/src/ui/components/adlabel.d.ts +3 -6
- package/lib/src/ui/components/audio/controlbar.d.ts +2 -2
- package/lib/src/ui/components/buttons.d.ts +18 -11
- package/lib/src/ui/components/ctabar.d.ts +4 -10
- package/lib/src/ui/components/infopanel/infopanel.d.ts +3 -0
- package/lib/src/ui/components/infopanel/togglebutton.d.ts +3 -0
- package/lib/src/ui/components/playnext.d.ts +3 -9
- package/lib/src/ui/components/seekbar.d.ts +2 -3
- package/lib/src/ui/components/settingspanel.d.ts +2 -3
- package/lib/src/ui/components/titlebar.d.ts +2 -2
- package/lib/src/ui/handlers/domhandlers.d.ts +2 -2
- package/lib/src/ui/handlers/listboxhandlers.d.ts +18 -4
- package/lib/src/ui/handlers/playnextscreen.d.ts +6 -2
- package/lib/src/ui/uicontainer.d.ts +1 -2
- package/lib/tests/jest.setup-files-after-env.d.ts +0 -0
- package/lib/tests/jest.setup-files-after-env.js +6 -0
- package/lib/tests/jest.setup-tests.d.ts +1 -0
- package/lib/tests/jest.setup-tests.js +2 -0
- package/lib/tests/mocks/mockNpoplayer.js +27 -44
- package/lib/tests/mocks/mockPlayerAPI.d.ts +1 -1
- package/lib/tests/mocks/mockPlayerAPI.js +15 -1
- package/lib/tests/mocks/mockPlayerUi.d.ts +64 -0
- package/lib/tests/mocks/mockPlayerUi.js +251 -0
- package/lib/tests/mocks/playerContextMock.d.ts +3 -66
- package/lib/tests/mocks/playerContextMock.js +34 -7
- package/lib/types/events.d.ts +1 -1
- package/lib/types/events.js +1 -1
- package/lib/types/interfaces.d.ts +39 -43
- package/lib/types/interfaces.js +0 -27
- package/lib/ui/components/adbutton.d.ts +3 -6
- package/lib/ui/components/adbutton.js +2 -1
- package/lib/ui/components/adlabel.d.ts +3 -6
- package/lib/ui/components/adlabel.js +2 -1
- package/lib/ui/components/audio/controlbar.d.ts +2 -2
- package/lib/ui/components/audio/controlbar.js +6 -6
- package/lib/ui/components/buttons.d.ts +18 -11
- package/lib/ui/components/buttons.js +44 -26
- package/lib/ui/components/controlbar.js +13 -9
- package/lib/ui/components/ctabar.d.ts +4 -10
- package/lib/ui/components/ctabar.js +8 -7
- package/lib/ui/components/infopanel/infopanel.d.ts +3 -0
- package/lib/ui/components/infopanel/infopanel.js +40 -0
- package/lib/ui/components/infopanel/togglebutton.d.ts +3 -0
- package/lib/ui/components/infopanel/togglebutton.js +18 -0
- package/lib/ui/components/playnext.d.ts +3 -9
- package/lib/ui/components/playnext.js +3 -3
- package/lib/ui/components/seekbar.d.ts +2 -3
- package/lib/ui/components/seekbar.js +7 -3
- package/lib/ui/components/settingspanel.d.ts +2 -3
- package/lib/ui/components/settingspanel.js +79 -53
- package/lib/ui/components/titlebar.d.ts +2 -2
- package/lib/ui/components/titlebar.js +2 -1
- package/lib/ui/components/topbar.js +8 -5
- package/lib/ui/components/verticalvideo/controlbar.js +5 -2
- package/lib/ui/components/verticalvideo/settingspanel.js +9 -5
- package/lib/ui/handlers/accessibilityhandler.js +11 -22
- package/lib/ui/handlers/accessibilityhandler.test.js +25 -34
- package/lib/ui/handlers/domhandlers.d.ts +2 -2
- package/lib/ui/handlers/listboxhandlers.d.ts +18 -4
- package/lib/ui/handlers/listboxhandlers.js +5 -3
- package/lib/ui/handlers/playnextscreen.d.ts +6 -2
- package/lib/ui/handlers/playnextscreen.js +4 -4
- package/lib/ui/handlers/playnextscreen.test.js +15 -3
- package/lib/ui/uicontainer.d.ts +1 -2
- package/lib/ui/uicontainer.js +24 -8
- package/lib/ui/uicontainer.test.js +6 -5
- package/package.json +7 -9
- package/src/style/components/_advert.scss +0 -4
- package/src/style/components/_buffering.scss +18 -22
- package/src/style/components/_controlbars.scss +0 -4
- package/src/style/components/_icons.scss +18 -4
- package/src/style/components/_infopanel.scss +99 -0
- package/src/style/components/_nicam.scss +6 -2
- package/src/style/components/_seekbarthumbnail.scss +5 -0
- package/src/style/components/_settingspanel.scss +1 -1
- package/src/style/components/_subtitles.scss +0 -1
- package/src/style/components/_textbuttons.scss +30 -1
- package/src/style/components/_volumeslider.scss +0 -1
- package/src/style/components/audio/_bottombar.scss +6 -0
- package/src/style/components/audio/_metadata.scss +25 -9
- package/src/style/components/audio/_topbar.scss +6 -1
- package/src/style/npoplayer.css +166 -83
- package/src/style/npoplayer.scss +10 -2
- package/src/style/variants/_player-audio-only.scss +32 -0
- package/src/style/variants/_player-base.scss +5 -1
- package/src/style/variants/_player-large.scss +3 -3
- package/src/style/variants/_player-medium.scss +5 -1
- package/src/style/variants/_player-small.scss +6 -1
- package/src/style/vars/_colors.scss +1 -1
- package/src/style/vars/_icons.scss +5 -4
- package/src/style/vars/_z-index.scss +1 -1
- package/lib/npoplayer-bridge.test.js +0 -24
- package/lib/src/ui/components/nativemobile/buttons.d.ts +0 -30
- package/lib/src/ui/components/nativemobile/controlbar.d.ts +0 -3
- package/lib/src/ui/components/nativemobile/ctabar.d.ts +0 -11
- package/lib/src/ui/components/nativemobile/titlebar.d.ts +0 -2
- package/lib/src/ui/components/nativemobile/topbar.d.ts +0 -3
- package/lib/src/ui/nativemobileuicontainer.d.ts +0 -5
- package/lib/src/ui/nativemobileuifactory.d.ts +0 -3
- package/lib/src/ui/nativemobileuifactory.test.d.ts +0 -1
- package/lib/ui/components/nativemobile/buttons.d.ts +0 -30
- package/lib/ui/components/nativemobile/buttons.js +0 -233
- package/lib/ui/components/nativemobile/controlbar.d.ts +0 -3
- package/lib/ui/components/nativemobile/controlbar.js +0 -43
- package/lib/ui/components/nativemobile/ctabar.d.ts +0 -11
- package/lib/ui/components/nativemobile/ctabar.js +0 -10
- package/lib/ui/components/nativemobile/titlebar.d.ts +0 -2
- package/lib/ui/components/nativemobile/titlebar.js +0 -7
- package/lib/ui/components/nativemobile/topbar.d.ts +0 -3
- package/lib/ui/components/nativemobile/topbar.js +0 -23
- package/lib/ui/nativemobileuicontainer.d.ts +0 -5
- package/lib/ui/nativemobileuicontainer.js +0 -42
- package/lib/ui/nativemobileuifactory.d.ts +0 -3
- package/lib/ui/nativemobileuifactory.js +0 -112
- package/lib/ui/nativemobileuifactory.test.d.ts +0 -1
- package/lib/ui/nativemobileuifactory.test.js +0 -64
- package/src/style/variants/_player-native-mobile.scss +0 -13
- /package/lib/{npoplayer-bridge.test.d.ts → services/errors/errorHandler.test.d.ts} +0 -0
- /package/lib/src/{npoplayer-bridge.test.d.ts → services/errors/errorHandler.test.d.ts} +0 -0
|
@@ -1,70 +1,7 @@
|
|
|
1
|
-
/// <reference types="jest" />
|
|
2
1
|
import { NpoPlayerAPI } from '../../src/services/npoPlayerAPI/npoPlayerAPI';
|
|
3
|
-
import { PlayerContext
|
|
2
|
+
import { PlayerContext } from '../../src/types/interfaces';
|
|
3
|
+
import NpoPlayer from 'npoplayer';
|
|
4
4
|
export declare const createMockNpoPlayerAPI: (overrides?: {}) => jest.Mocked<NpoPlayerAPI>;
|
|
5
|
-
export declare const createMockNpoPlayer: (overrides?: {}) =>
|
|
6
|
-
playerConfig: {};
|
|
7
|
-
sourceConfig: {};
|
|
8
|
-
streamObject: StreamObject;
|
|
9
|
-
player: jest.Mocked<NpoPlayerAPI>;
|
|
10
|
-
uiManager: undefined;
|
|
11
|
-
npoTag: undefined;
|
|
12
|
-
streamTracker: undefined;
|
|
13
|
-
logEmitter: {
|
|
14
|
-
emit: jest.Mock<any, any, any>;
|
|
15
|
-
};
|
|
16
|
-
uiComponents: {};
|
|
17
|
-
container: HTMLDivElement;
|
|
18
|
-
streamOptions: {
|
|
19
|
-
enableSubtitles: boolean;
|
|
20
|
-
};
|
|
21
|
-
jwt: string;
|
|
22
|
-
apiPayload: {
|
|
23
|
-
baseURL: string;
|
|
24
|
-
jwt: string;
|
|
25
|
-
data: {};
|
|
26
|
-
};
|
|
27
|
-
adBreakActive: boolean;
|
|
28
|
-
version: string;
|
|
29
|
-
drmProfile: {
|
|
30
|
-
profileName: string;
|
|
31
|
-
drm: string;
|
|
32
|
-
};
|
|
33
|
-
variant: string;
|
|
34
|
-
isShowingPlayNextScreen: boolean;
|
|
35
|
-
canceledPlayNextScreen: boolean;
|
|
36
|
-
playerContext: undefined;
|
|
37
|
-
npoPlayerServices: {
|
|
38
|
-
getStoredUserPrefs: jest.Mock<any, any, any>;
|
|
39
|
-
setStoredUserPrefs: jest.Mock<any, any, any>;
|
|
40
|
-
handleUserPrefs: jest.Mock<any, any, any>;
|
|
41
|
-
setAccessibilityAttributes: jest.Mock<any, any, any>;
|
|
42
|
-
keyboardHandler: jest.Mock<any, any, any>;
|
|
43
|
-
decideProfile: jest.Mock<any, any, any>;
|
|
44
|
-
verifyDRM: jest.Mock<any, any, any>;
|
|
45
|
-
handleError: jest.Mock<any, any, any>;
|
|
46
|
-
};
|
|
47
|
-
eventListeners: undefined;
|
|
48
|
-
mockNpoPlayer: undefined;
|
|
49
|
-
initPlayer: jest.Mock<any, any, any>;
|
|
50
|
-
loadStream: jest.Mock<any, any, any>;
|
|
51
|
-
doError: jest.Mock<any, any, any>;
|
|
52
|
-
play: jest.Mock<any, any, any>;
|
|
53
|
-
pause: jest.Mock<any, any, any>;
|
|
54
|
-
setVolume: jest.Mock<any, any, any>;
|
|
55
|
-
increaseVolume: jest.Mock<any, any, any>;
|
|
56
|
-
decreaseVolume: jest.Mock<any, any, any>;
|
|
57
|
-
goForward: jest.Mock<any, any, any>;
|
|
58
|
-
goBackwards: jest.Mock<any, any, any>;
|
|
59
|
-
watchFromStart: jest.Mock<any, any, any>;
|
|
60
|
-
showPlayNextScreen: jest.Mock<any, any, any>;
|
|
61
|
-
updateMarkers: jest.Mock<any, any, any>;
|
|
62
|
-
cancelPlayNextScreen: jest.Mock<any, any, any>;
|
|
63
|
-
hidePlayNextScreen: jest.Mock<any, any, any>;
|
|
64
|
-
doPlayNext: jest.Mock<any, any, any>;
|
|
65
|
-
destroy: jest.Mock<any, any, any>;
|
|
66
|
-
unload: jest.Mock<any, any, any>;
|
|
67
|
-
printVersion: jest.Mock<any, any, any>;
|
|
68
|
-
};
|
|
5
|
+
export declare const createMockNpoPlayer: (overrides?: {}) => jest.Mocked<Partial<NpoPlayer>>;
|
|
69
6
|
export declare const createPlayerContextMock: (overrides?: {}) => PlayerContext;
|
|
70
7
|
export default createPlayerContextMock;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { VOLUME_MAX, VOLUME_MIN, VOLUME_STEP } from '../../src/services/npoPlayerAPI/contants';
|
|
2
2
|
import { mockPlayerAPI } from './mockPlayerAPI';
|
|
3
|
+
import { NpoPlayerUIVariants } from '../../src/types/interfaces';
|
|
4
|
+
import { createLogEmitterMock } from './mockLogEmitter';
|
|
3
5
|
let volume = 50;
|
|
4
6
|
const setVolume = jest.fn((level) => {
|
|
5
7
|
volume = Math.max(VOLUME_MIN, Math.min(VOLUME_MAX, level));
|
|
@@ -51,10 +53,16 @@ export const createMockNpoPlayerAPI = (overrides = {}) => ({
|
|
|
51
53
|
getConfig: jest.fn().mockReturnValue({}),
|
|
52
54
|
createUIManager: jest.fn(),
|
|
53
55
|
handleErrorRetry: jest.fn(),
|
|
56
|
+
getAvailableVideoQualities: jest.fn(),
|
|
57
|
+
listSubtitles: jest.fn(),
|
|
58
|
+
setPlaybackSpeed: jest.fn(),
|
|
59
|
+
setVideoQuality: jest.fn(),
|
|
54
60
|
...overrides
|
|
55
61
|
});
|
|
56
62
|
export const createMockNpoPlayer = (overrides = {}) => ({
|
|
57
|
-
playerConfig: {
|
|
63
|
+
playerConfig: {
|
|
64
|
+
key: 'dummy-key'
|
|
65
|
+
},
|
|
58
66
|
sourceConfig: {},
|
|
59
67
|
streamObject: {
|
|
60
68
|
stream: { drmToken: undefined },
|
|
@@ -65,11 +73,11 @@ export const createMockNpoPlayer = (overrides = {}) => ({
|
|
|
65
73
|
assets: {},
|
|
66
74
|
user: 'dummy'
|
|
67
75
|
},
|
|
68
|
-
player:
|
|
76
|
+
player: mockPlayerAPI,
|
|
69
77
|
uiManager: undefined,
|
|
70
78
|
npoTag: undefined,
|
|
71
79
|
streamTracker: undefined,
|
|
72
|
-
logEmitter:
|
|
80
|
+
logEmitter: createLogEmitterMock(),
|
|
73
81
|
uiComponents: {},
|
|
74
82
|
container: document.createElement('div'),
|
|
75
83
|
streamOptions: {
|
|
@@ -80,7 +88,7 @@ export const createMockNpoPlayer = (overrides = {}) => ({
|
|
|
80
88
|
adBreakActive: false,
|
|
81
89
|
version: '1.0.0',
|
|
82
90
|
drmProfile: { profileName: '', drm: '' },
|
|
83
|
-
variant:
|
|
91
|
+
variant: NpoPlayerUIVariants.DEFAULT,
|
|
84
92
|
isShowingPlayNextScreen: false,
|
|
85
93
|
canceledPlayNextScreen: false,
|
|
86
94
|
playerContext: undefined,
|
|
@@ -92,13 +100,32 @@ export const createMockNpoPlayer = (overrides = {}) => ({
|
|
|
92
100
|
keyboardHandler: jest.fn(),
|
|
93
101
|
decideProfile: jest.fn(),
|
|
94
102
|
verifyDRM: jest.fn(),
|
|
95
|
-
handleError: jest.fn()
|
|
103
|
+
handleError: jest.fn(),
|
|
104
|
+
getAVType: jest.fn(),
|
|
105
|
+
convertFragmentToSegment: jest.fn(),
|
|
106
|
+
segmentMarkersHandler: jest.fn(),
|
|
107
|
+
schedulePreRolls: jest.fn(),
|
|
108
|
+
discardAdBreak: jest.fn(),
|
|
109
|
+
handleVerticalVideoControls: jest.fn(),
|
|
110
|
+
handleVerticalVideoSettings: jest.fn(),
|
|
111
|
+
showNicamAfterUiDelay: jest.fn(),
|
|
112
|
+
setupNicamKijkwijzerIcons: jest.fn(),
|
|
113
|
+
handlePreferences: jest.fn(),
|
|
114
|
+
addUivisiblityHandlers: jest.fn(),
|
|
115
|
+
removeEventListeners: jest.fn(),
|
|
116
|
+
removeUivisiblityHandlers: jest.fn(),
|
|
117
|
+
handleStreamOptions: jest.fn(),
|
|
118
|
+
fetchStream: jest.fn(),
|
|
119
|
+
startPlayerTracker: jest.fn(),
|
|
120
|
+
initPlayerTracker: jest.fn(),
|
|
121
|
+
logEvent: jest.fn(),
|
|
122
|
+
isSegmentInBounds: jest.fn(),
|
|
123
|
+
addDataInInfoPanel: jest.fn(),
|
|
124
|
+
clearInfoPanel: jest.fn()
|
|
96
125
|
},
|
|
97
126
|
eventListeners: undefined,
|
|
98
|
-
mockNpoPlayer: undefined,
|
|
99
127
|
initPlayer: jest.fn(),
|
|
100
128
|
loadStream: jest.fn(),
|
|
101
|
-
doError: jest.fn(),
|
|
102
129
|
play: jest.fn(),
|
|
103
130
|
pause: jest.fn(),
|
|
104
131
|
setVolume: jest.fn(),
|
package/lib/types/events.d.ts
CHANGED
package/lib/types/events.js
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
|
-
import { type ErrorMessageOverlay, type Label, ControlBar, SettingsPanelItem, Button, SeekBar, CastToggleButton, SettingsPanel, SettingsToggleButton } from 'bitmovin-player-ui';
|
|
1
|
+
import { type ErrorMessageOverlay, type Label, ControlBar, SettingsPanelItem, Button, SeekBar, CastToggleButton, SettingsPanel, SettingsToggleButton, Container, ContainerConfig, ToggleButton, ToggleButtonConfig } from 'bitmovin-player-ui';
|
|
2
2
|
import { type NPOTag, type PageTracker } from '@npotag/tag';
|
|
3
3
|
import { ButtonConfig } from 'bitmovin-player-ui/dist/js/framework/components/button';
|
|
4
4
|
import NpoPlayer from '../npoplayer';
|
|
5
5
|
import { NpoPlayerAPI } from '../services/npoPlayerAPI/npoPlayerAPI';
|
|
6
6
|
import { NpoPlayerEventCallback } from './events';
|
|
7
|
-
import {
|
|
8
|
-
|
|
7
|
+
import { ProgressiveSourceConfig, SourceConfigOptions, SourceLabelingStreamTypeConfig, ThumbnailTrack } from 'bitmovin-player/modules/bitmovinplayer-core';
|
|
8
|
+
import type { AnalyticsConfig } from 'bitmovin-player/types/analytics/ConfigAPI';
|
|
9
|
+
import type { GoogleCastRemoteControlConfig } from 'bitmovin-player/types/remotecontrol/ConfigAPI';
|
|
10
|
+
import DRMConfig from 'bitmovin-player/modules/bitmovinplayer-drm';
|
|
11
|
+
import { SubtitleTrack } from 'bitmovin-player/modules/bitmovinplayer-subtitles';
|
|
12
|
+
export { Technology } from 'bitmovin-player/modules/bitmovinplayer-core';
|
|
9
13
|
export interface Profile {
|
|
10
14
|
profileName: string;
|
|
11
15
|
drm: string | undefined;
|
|
@@ -82,6 +86,7 @@ interface StreamObject_Assets {
|
|
|
82
86
|
preroll?: string;
|
|
83
87
|
}
|
|
84
88
|
export interface StreamObject_Metadata {
|
|
89
|
+
chapters?: Chapter[];
|
|
85
90
|
broadcaster?: string;
|
|
86
91
|
description: string;
|
|
87
92
|
duration?: string;
|
|
@@ -108,11 +113,10 @@ export interface SourceConfig {
|
|
|
108
113
|
smooth?: string;
|
|
109
114
|
whep?: string;
|
|
110
115
|
poster?: string;
|
|
111
|
-
drm?: DRMConfig;
|
|
116
|
+
drm?: typeof DRMConfig;
|
|
112
117
|
options?: SourceConfigOptions;
|
|
113
118
|
subtitleTracks?: SubtitleTrack[];
|
|
114
119
|
thumbnailTrack?: ThumbnailTrack;
|
|
115
|
-
vr?: VRConfig;
|
|
116
120
|
title?: string;
|
|
117
121
|
description?: string;
|
|
118
122
|
labeling?: SourceLabelingStreamTypeConfig;
|
|
@@ -138,8 +142,10 @@ export interface StreamOptions {
|
|
|
138
142
|
customFallbackPoster?: string;
|
|
139
143
|
autoFillTimeLineMarkerDuration?: boolean;
|
|
140
144
|
autoplay?: boolean;
|
|
145
|
+
skippableChapters?: string[];
|
|
141
146
|
npoTagPageTracker?: PageTracker;
|
|
142
147
|
retryCallback?: () => void;
|
|
148
|
+
infoPanelHTML?: string;
|
|
143
149
|
}
|
|
144
150
|
export interface UIComponents {
|
|
145
151
|
errorMessageOverlay?: ErrorMessageOverlay;
|
|
@@ -150,6 +156,7 @@ export interface UIComponents {
|
|
|
150
156
|
subtitlesButton?: SettingsPanelItem | undefined;
|
|
151
157
|
qualityButton?: SettingsPanelItem | undefined;
|
|
152
158
|
watchFromStartButton?: Button<ButtonConfig> | undefined;
|
|
159
|
+
skipChapterButton?: Button<ButtonConfig> | undefined;
|
|
153
160
|
controlBar?: ControlBar | undefined;
|
|
154
161
|
adbutton?: Button<ButtonConfig> | undefined;
|
|
155
162
|
adlabel?: Label<{
|
|
@@ -161,44 +168,8 @@ export interface UIComponents {
|
|
|
161
168
|
settingsPanels?: SettingsPanel[] | undefined;
|
|
162
169
|
settingsPanel?: SettingsPanel | undefined;
|
|
163
170
|
settingsToggleButton?: SettingsToggleButton | undefined;
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
defaultActionRequired?: boolean;
|
|
167
|
-
isChecked?: boolean;
|
|
168
|
-
playNext?: {
|
|
169
|
-
remainingCountDownDuration: number;
|
|
170
|
-
};
|
|
171
|
-
error?: ErrorEvent;
|
|
172
|
-
errorMessage?: {
|
|
173
|
-
input: string;
|
|
174
|
-
status: number;
|
|
175
|
-
};
|
|
176
|
-
}
|
|
177
|
-
export declare enum CustomMessages {
|
|
178
|
-
CLICK_CAST = "castButtonClick",
|
|
179
|
-
CLICK_GO_BACK_TO_LIVE = "clickGoBackToLive",
|
|
180
|
-
CLICK_WATCH_FROM_START = "clickWatchFromStart",
|
|
181
|
-
DO_ERROR = "doError",
|
|
182
|
-
ERROR_TRIGGERED = "errorTriggerd",
|
|
183
|
-
JAVASCRIPT_READY = "javascriptReady",
|
|
184
|
-
PLAY_NEXT_CANCEL_CLICK = "playNextCancelClick",
|
|
185
|
-
PLAY_NEXT_COUNTDOWN_CANCELED = "playNextCountdownCanceled",
|
|
186
|
-
PLAY_NEXT_COUNTDOWN_FINISHED = "playNextCountdownFinished",
|
|
187
|
-
PLAY_NEXT_COUNTDOWN_PROGRESS = "playNextCountdownProgress",
|
|
188
|
-
PLAY_NEXT_OVERLAY_HIDDEN = "playNextOverlayHidden",
|
|
189
|
-
PLAY_NEXT_OVERLAY_HIDE = "playNextOverlayHide",
|
|
190
|
-
PLAY_NEXT_OVERLAY_SHOW = "playNextOverlayShow",
|
|
191
|
-
PLAY_NEXT_OVERLAY_SHOWN = "playNextOverlayShown",
|
|
192
|
-
PLAY_NEXT_PROCEED_CLICK = "playNextProceedClick",
|
|
193
|
-
SET_STREAM_LINK = "setStreamLink",
|
|
194
|
-
SET_WEB_DATA = "setWebData",
|
|
195
|
-
TOGGLE_AIRPLAY = "toggleAirplay",
|
|
196
|
-
TOGGLE_FULLSCREEN = "toggleFullScreen",
|
|
197
|
-
TOGGLE_FULLSCREEN_UI = "toggleFullscreenUI",
|
|
198
|
-
TOGGLE_MUTE = "toggleMute",
|
|
199
|
-
TOGGLE_PIP = "togglePiP",
|
|
200
|
-
TOGGLE_PLAY_PAUSE = "togglePlayPause",
|
|
201
|
-
TOGGLE_SETTINGS_PANEL = "toggleSettingsPanel"
|
|
171
|
+
infoPanel?: Container<ContainerConfig>;
|
|
172
|
+
infoPanelToggleButtons?: ToggleButton<ToggleButtonConfig>[];
|
|
202
173
|
}
|
|
203
174
|
export declare enum NpoPlayerUIVariants {
|
|
204
175
|
DEFAULT = "default",
|
|
@@ -242,3 +213,28 @@ export interface LogEventParams {
|
|
|
242
213
|
event: string;
|
|
243
214
|
data?: any;
|
|
244
215
|
}
|
|
216
|
+
export interface LogErrorContext {
|
|
217
|
+
programAvailableFrom?: string;
|
|
218
|
+
programAvailableUntil?: string;
|
|
219
|
+
}
|
|
220
|
+
export interface LogErrorParams {
|
|
221
|
+
playerContext: PlayerContext;
|
|
222
|
+
status: number;
|
|
223
|
+
body?: string;
|
|
224
|
+
context?: LogErrorContext;
|
|
225
|
+
}
|
|
226
|
+
export interface CreateButtonConfig {
|
|
227
|
+
text: string;
|
|
228
|
+
onClick: () => void;
|
|
229
|
+
ariaLabel?: string;
|
|
230
|
+
cssClass?: string;
|
|
231
|
+
hidden?: boolean;
|
|
232
|
+
acceptsTouchWithUiHidden?: boolean;
|
|
233
|
+
}
|
|
234
|
+
export interface Chapter {
|
|
235
|
+
description: string;
|
|
236
|
+
from: number;
|
|
237
|
+
until: number;
|
|
238
|
+
title: string;
|
|
239
|
+
type: string;
|
|
240
|
+
}
|
package/lib/types/interfaces.js
CHANGED
|
@@ -1,30 +1,3 @@
|
|
|
1
|
-
export var CustomMessages;
|
|
2
|
-
(function (CustomMessages) {
|
|
3
|
-
CustomMessages["CLICK_CAST"] = "castButtonClick";
|
|
4
|
-
CustomMessages["CLICK_GO_BACK_TO_LIVE"] = "clickGoBackToLive";
|
|
5
|
-
CustomMessages["CLICK_WATCH_FROM_START"] = "clickWatchFromStart";
|
|
6
|
-
CustomMessages["DO_ERROR"] = "doError";
|
|
7
|
-
CustomMessages["ERROR_TRIGGERED"] = "errorTriggerd";
|
|
8
|
-
CustomMessages["JAVASCRIPT_READY"] = "javascriptReady";
|
|
9
|
-
CustomMessages["PLAY_NEXT_CANCEL_CLICK"] = "playNextCancelClick";
|
|
10
|
-
CustomMessages["PLAY_NEXT_COUNTDOWN_CANCELED"] = "playNextCountdownCanceled";
|
|
11
|
-
CustomMessages["PLAY_NEXT_COUNTDOWN_FINISHED"] = "playNextCountdownFinished";
|
|
12
|
-
CustomMessages["PLAY_NEXT_COUNTDOWN_PROGRESS"] = "playNextCountdownProgress";
|
|
13
|
-
CustomMessages["PLAY_NEXT_OVERLAY_HIDDEN"] = "playNextOverlayHidden";
|
|
14
|
-
CustomMessages["PLAY_NEXT_OVERLAY_HIDE"] = "playNextOverlayHide";
|
|
15
|
-
CustomMessages["PLAY_NEXT_OVERLAY_SHOW"] = "playNextOverlayShow";
|
|
16
|
-
CustomMessages["PLAY_NEXT_OVERLAY_SHOWN"] = "playNextOverlayShown";
|
|
17
|
-
CustomMessages["PLAY_NEXT_PROCEED_CLICK"] = "playNextProceedClick";
|
|
18
|
-
CustomMessages["SET_STREAM_LINK"] = "setStreamLink";
|
|
19
|
-
CustomMessages["SET_WEB_DATA"] = "setWebData";
|
|
20
|
-
CustomMessages["TOGGLE_AIRPLAY"] = "toggleAirplay";
|
|
21
|
-
CustomMessages["TOGGLE_FULLSCREEN"] = "toggleFullScreen";
|
|
22
|
-
CustomMessages["TOGGLE_FULLSCREEN_UI"] = "toggleFullscreenUI";
|
|
23
|
-
CustomMessages["TOGGLE_MUTE"] = "toggleMute";
|
|
24
|
-
CustomMessages["TOGGLE_PIP"] = "togglePiP";
|
|
25
|
-
CustomMessages["TOGGLE_PLAY_PAUSE"] = "togglePlayPause";
|
|
26
|
-
CustomMessages["TOGGLE_SETTINGS_PANEL"] = "toggleSettingsPanel";
|
|
27
|
-
})(CustomMessages || (CustomMessages = {}));
|
|
28
1
|
export var NpoPlayerUIVariants;
|
|
29
2
|
(function (NpoPlayerUIVariants) {
|
|
30
3
|
NpoPlayerUIVariants["DEFAULT"] = "default";
|
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
import { Button } from 'bitmovin-player-ui';
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
text: string;
|
|
6
|
-
hidden: true;
|
|
7
|
-
}>;
|
|
2
|
+
import { ButtonConfig } from 'bitmovin-player-ui/dist/js/framework/components/button';
|
|
3
|
+
import { PlayerContext } from '../../types/interfaces';
|
|
4
|
+
export declare function createAdButton(playerContext: PlayerContext): Button<ButtonConfig>;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Button } from 'bitmovin-player-ui';
|
|
2
|
-
export function createAdButton(
|
|
2
|
+
export function createAdButton(playerContext) {
|
|
3
|
+
const { npoPlayer } = playerContext;
|
|
3
4
|
npoPlayer.uiComponents.adbutton = undefined;
|
|
4
5
|
const adButton = new Button({
|
|
5
6
|
cssClass: 'ui-textbutton ui-sterbutton bmpui-ui-button',
|
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
import { Label } from 'bitmovin-player-ui';
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
cssClass: string;
|
|
6
|
-
hidden: true;
|
|
7
|
-
}>;
|
|
2
|
+
import { LabelConfig } from 'bitmovin-player-ui/dist/js/framework/components/label';
|
|
3
|
+
import { PlayerContext } from '../../types/interfaces';
|
|
4
|
+
export declare function createAdLabel(playerContext: PlayerContext): Label<LabelConfig>;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Label } from 'bitmovin-player-ui';
|
|
2
|
-
export function createAdLabel(
|
|
2
|
+
export function createAdLabel(playerContext) {
|
|
3
|
+
const { npoPlayer } = playerContext;
|
|
3
4
|
npoPlayer.uiComponents.adlabel = undefined;
|
|
4
5
|
const adLabel = new Label({ text: '', cssClass: 'adLabel', hidden: true });
|
|
5
6
|
npoPlayer.uiComponents.adlabel = adLabel;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { ControlBar } from 'bitmovin-player-ui';
|
|
2
|
-
import
|
|
3
|
-
export declare function createAudioControlBar(
|
|
2
|
+
import { PlayerContext } from '../../../types/interfaces';
|
|
3
|
+
export declare function createAudioControlBar(playerContext: PlayerContext): ControlBar;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { ControlBar, Container,
|
|
1
|
+
import { ControlBar, Container, VolumeControlButton } from 'bitmovin-player-ui';
|
|
2
2
|
import { createSeekBar } from '../seekbar';
|
|
3
|
-
import { NpoPlayerUIVariants } from '../../../
|
|
4
|
-
export function createAudioControlBar(
|
|
5
|
-
const
|
|
6
|
-
|
|
3
|
+
import { NpoPlayerUIVariants } from '../../../types/interfaces';
|
|
4
|
+
export function createAudioControlBar(playerContext) {
|
|
5
|
+
const { npoPlayer } = playerContext;
|
|
6
|
+
const seekBar = createSeekBar(playerContext, NpoPlayerUIVariants.AUDIO);
|
|
7
7
|
const controlBar = new ControlBar({
|
|
8
8
|
components: [
|
|
9
|
-
|
|
9
|
+
seekBar,
|
|
10
10
|
new Container({
|
|
11
11
|
components: [
|
|
12
12
|
new VolumeControlButton({
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { Button, ControlBar, CastToggleButton, Container } from 'bitmovin-player-ui';
|
|
2
|
+
import { ContainerConfig } from 'bitmovin-player-ui/dist/js/framework/components/container';
|
|
3
|
+
import { PlayerContext, CreateButtonConfig } from '../../types/interfaces';
|
|
4
|
+
export declare function createButton(playerContext: PlayerContext, config: CreateButtonConfig): Button<{
|
|
5
|
+
cssClass: string;
|
|
6
|
+
ariaLabel: string;
|
|
7
|
+
}>;
|
|
6
8
|
export declare function createMiddleButtons(playerContext: PlayerContext): ControlBar;
|
|
7
9
|
export declare function createRewindButton(playerContext: PlayerContext): Button<{
|
|
8
10
|
cssClass: string;
|
|
@@ -12,24 +14,29 @@ export declare function createForwardButton(playerContext: PlayerContext): Butto
|
|
|
12
14
|
cssClass: string;
|
|
13
15
|
ariaLabel: string;
|
|
14
16
|
}>;
|
|
15
|
-
export declare function createPlayNextButton(
|
|
17
|
+
export declare function createPlayNextButton(playerContext: PlayerContext): Button<{
|
|
16
18
|
cssClass: string;
|
|
17
19
|
ariaLabel: string;
|
|
18
20
|
}>;
|
|
19
|
-
export declare function createCancelPlayNextButton(
|
|
21
|
+
export declare function createCancelPlayNextButton(playerContext: PlayerContext): Button<{
|
|
20
22
|
cssClass: string;
|
|
21
23
|
ariaLabel: string;
|
|
22
24
|
}>;
|
|
23
|
-
export declare function
|
|
25
|
+
export declare function createGoBackLiveButton(playerContext: PlayerContext): Button<{
|
|
24
26
|
cssClass: string;
|
|
25
27
|
ariaLabel: string;
|
|
26
28
|
}>;
|
|
27
|
-
export declare function
|
|
29
|
+
export declare function createWatchFromStartButton(playerContext: PlayerContext): Button<{
|
|
28
30
|
cssClass: string;
|
|
29
31
|
ariaLabel: string;
|
|
30
32
|
}>;
|
|
31
|
-
export declare function
|
|
33
|
+
export declare function createSkipChapterButton(playerContext: PlayerContext): Button<{
|
|
32
34
|
cssClass: string;
|
|
33
35
|
ariaLabel: string;
|
|
34
36
|
}>;
|
|
35
|
-
export declare function createChromecastButton(
|
|
37
|
+
export declare function createChromecastButton(playerContext: PlayerContext): CastToggleButton;
|
|
38
|
+
export interface ButtonOverlayConfig {
|
|
39
|
+
buttons: CreateButtonConfig[];
|
|
40
|
+
cssClasses?: string[];
|
|
41
|
+
}
|
|
42
|
+
export declare function createButtonOverlay(playerContext: PlayerContext, config: ButtonOverlayConfig): Container<ContainerConfig>;
|
|
@@ -1,6 +1,19 @@
|
|
|
1
|
-
import { Button, PlaybackToggleButton, ControlBar, CastToggleButton } from 'bitmovin-player-ui';
|
|
1
|
+
import { Button, PlaybackToggleButton, ControlBar, CastToggleButton, Container } from 'bitmovin-player-ui';
|
|
2
2
|
import { rewind, forward } from '../handlers/timecontrolhandlers';
|
|
3
3
|
import { NpoPlayerEvent } from '../../types/events';
|
|
4
|
+
export function createButton(playerContext, config) {
|
|
5
|
+
const button = new Button({
|
|
6
|
+
cssClass: config.cssClass || 'ui-textbutton bmpui-ui-button',
|
|
7
|
+
text: config.text,
|
|
8
|
+
ariaLabel: config.ariaLabel || config.text,
|
|
9
|
+
hidden: config.hidden ?? false,
|
|
10
|
+
acceptsTouchWithUiHidden: config.acceptsTouchWithUiHidden ?? true
|
|
11
|
+
});
|
|
12
|
+
button.onClick.subscribe(() => {
|
|
13
|
+
config.onClick();
|
|
14
|
+
});
|
|
15
|
+
return button;
|
|
16
|
+
}
|
|
4
17
|
export function createMiddleButtons(playerContext) {
|
|
5
18
|
const bigPlayToggleButton = new PlaybackToggleButton({
|
|
6
19
|
cssClass: 'ui-playbacktogglebutton'
|
|
@@ -34,7 +47,8 @@ export function createForwardButton(playerContext) {
|
|
|
34
47
|
});
|
|
35
48
|
return forwardButton;
|
|
36
49
|
}
|
|
37
|
-
export function createPlayNextButton(
|
|
50
|
+
export function createPlayNextButton(playerContext) {
|
|
51
|
+
const { npoPlayer } = playerContext;
|
|
38
52
|
const playNextButton = new Button({
|
|
39
53
|
cssClass: 'ui-textbutton ui-playNextButton bmpui-ui-button',
|
|
40
54
|
text: '<span class="bmpui-ui-textbutton-icon bmpui-ui-textbutton-icon-play"></span> Volgende aflevering',
|
|
@@ -43,13 +57,12 @@ export function createPlayNextButton(player, npoPlayer) {
|
|
|
43
57
|
acceptsTouchWithUiHidden: true
|
|
44
58
|
});
|
|
45
59
|
playNextButton.onClick.subscribe(() => {
|
|
46
|
-
|
|
47
|
-
npoPlayer.doPlayNext();
|
|
48
|
-
}
|
|
60
|
+
npoPlayer.doPlayNext();
|
|
49
61
|
});
|
|
50
62
|
return playNextButton;
|
|
51
63
|
}
|
|
52
|
-
export function createCancelPlayNextButton(
|
|
64
|
+
export function createCancelPlayNextButton(playerContext) {
|
|
65
|
+
const { npoPlayer } = playerContext;
|
|
53
66
|
const cancelPlayNextButton = new Button({
|
|
54
67
|
cssClass: 'ui-textbutton ui-cancelPlayNextButton bmpui-ui-button',
|
|
55
68
|
text: 'Annuleer',
|
|
@@ -58,27 +71,12 @@ export function createCancelPlayNextButton(player, npoPlayer) {
|
|
|
58
71
|
acceptsTouchWithUiHidden: true
|
|
59
72
|
});
|
|
60
73
|
cancelPlayNextButton.onClick.subscribe(() => {
|
|
61
|
-
|
|
62
|
-
npoPlayer.cancelPlayNextScreen();
|
|
63
|
-
}
|
|
74
|
+
npoPlayer.cancelPlayNextScreen();
|
|
64
75
|
});
|
|
65
76
|
return cancelPlayNextButton;
|
|
66
77
|
}
|
|
67
|
-
export function
|
|
68
|
-
const
|
|
69
|
-
cssClass: 'ui-textbutton ui-skipintrobutton bmpui-ui-button bmpui-hidden',
|
|
70
|
-
text: 'Intro overslaan',
|
|
71
|
-
ariaLabel: 'Intro overslaan',
|
|
72
|
-
hidden: true
|
|
73
|
-
});
|
|
74
|
-
skipIntroButton.onClick.subscribe(() => {
|
|
75
|
-
if (player != undefined) {
|
|
76
|
-
player.seek(96);
|
|
77
|
-
}
|
|
78
|
-
});
|
|
79
|
-
return skipIntroButton;
|
|
80
|
-
}
|
|
81
|
-
export function createGoBackLiveButton(player) {
|
|
78
|
+
export function createGoBackLiveButton(playerContext) {
|
|
79
|
+
const { player } = playerContext;
|
|
82
80
|
const goBackLiveButton = new Button({
|
|
83
81
|
cssClass: 'ui-textbutton ui-backtolivebutton bmpui-ui-button',
|
|
84
82
|
text: 'Terug naar live',
|
|
@@ -92,13 +90,14 @@ export function createGoBackLiveButton(player) {
|
|
|
92
90
|
});
|
|
93
91
|
return goBackLiveButton;
|
|
94
92
|
}
|
|
95
|
-
export function createWatchFromStartButton(
|
|
93
|
+
export function createWatchFromStartButton(playerContext) {
|
|
96
94
|
const watchFromStartButton = new Button({
|
|
97
95
|
cssClass: 'ui-textbutton ui-watchfromstartbutton bmpui-ui-button',
|
|
98
96
|
text: 'Kijk vanaf het begin',
|
|
99
97
|
ariaLabel: 'Kijk vanaf het begin',
|
|
100
98
|
hidden: true
|
|
101
99
|
});
|
|
100
|
+
const { player, npoPlayer } = playerContext;
|
|
102
101
|
watchFromStartButton.onClick.subscribe(() => {
|
|
103
102
|
if (player.isLive() ?? false)
|
|
104
103
|
npoPlayer.watchFromStart();
|
|
@@ -108,7 +107,19 @@ export function createWatchFromStartButton(player, npoPlayer) {
|
|
|
108
107
|
npoPlayer.uiComponents.watchFromStartButton = watchFromStartButton;
|
|
109
108
|
return watchFromStartButton;
|
|
110
109
|
}
|
|
111
|
-
export function
|
|
110
|
+
export function createSkipChapterButton(playerContext) {
|
|
111
|
+
const skipChapterButton = new Button({
|
|
112
|
+
cssClass: 'ui-textbutton ui-skipchapterbutton bmpui-ui-button',
|
|
113
|
+
text: '',
|
|
114
|
+
ariaLabel: 'Overslaan',
|
|
115
|
+
hidden: true
|
|
116
|
+
});
|
|
117
|
+
const { npoPlayer } = playerContext;
|
|
118
|
+
npoPlayer.uiComponents.skipChapterButton = skipChapterButton;
|
|
119
|
+
return skipChapterButton;
|
|
120
|
+
}
|
|
121
|
+
export function createChromecastButton(playerContext) {
|
|
122
|
+
const { player, npoPlayer } = playerContext;
|
|
112
123
|
const chromeCastButton = new CastToggleButton({
|
|
113
124
|
disabled: true
|
|
114
125
|
});
|
|
@@ -124,3 +135,10 @@ export function createChromecastButton(player, npoPlayer) {
|
|
|
124
135
|
player?.on(NpoPlayerEvent.CastAvailable, handleCastAvailable);
|
|
125
136
|
return chromeCastButton;
|
|
126
137
|
}
|
|
138
|
+
export function createButtonOverlay(playerContext, config) {
|
|
139
|
+
const buttons = config.buttons.map((buttonConfig) => createButton(playerContext, buttonConfig));
|
|
140
|
+
return new Container({
|
|
141
|
+
components: buttons,
|
|
142
|
+
cssClasses: config.cssClasses || ['overlay-generic']
|
|
143
|
+
});
|
|
144
|
+
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { ControlBar, Container,
|
|
1
|
+
import { ControlBar, Container, PlaybackToggleButton, VolumeToggleButton, VolumeSlider, Spacer, PictureInPictureToggleButton, AirPlayToggleButton, SettingsToggleButton, FullscreenToggleButton } from 'bitmovin-player-ui';
|
|
2
2
|
import { createChromecastButton, createForwardButton, createRewindButton } from './buttons';
|
|
3
3
|
import { createSeekBar } from './seekbar';
|
|
4
4
|
import { createSettingsPanel } from './settingspanel';
|
|
5
5
|
import { NpoPlayerUIVariants } from '../../types/interfaces';
|
|
6
|
+
import { localizeKey } from '../../js/utilities/utilities.locale';
|
|
7
|
+
import { createInfoPanelToggleButton } from './infopanel/togglebutton';
|
|
6
8
|
export function createControlBar(playerContext, variant) {
|
|
7
|
-
const { npoPlayer
|
|
8
|
-
const seekBar = new SeekBar({ label: new SeekBarLabel() });
|
|
9
|
-
npoPlayer.uiComponents.seekBar = seekBar;
|
|
9
|
+
const { npoPlayer } = playerContext;
|
|
10
10
|
const controlComponents = [];
|
|
11
11
|
controlComponents.push(new PlaybackToggleButton(), new VolumeToggleButton(), new VolumeSlider());
|
|
12
12
|
if (variant === NpoPlayerUIVariants.DEFAULT) {
|
|
@@ -14,22 +14,26 @@ export function createControlBar(playerContext, variant) {
|
|
|
14
14
|
const forwardButton = createForwardButton(playerContext);
|
|
15
15
|
controlComponents.push(rewindButton, forwardButton);
|
|
16
16
|
}
|
|
17
|
-
const chromeCastButton = createChromecastButton(
|
|
17
|
+
const chromeCastButton = createChromecastButton(playerContext);
|
|
18
18
|
controlComponents.push(new Spacer(), new PictureInPictureToggleButton(), new AirPlayToggleButton(), chromeCastButton);
|
|
19
19
|
if (variant === NpoPlayerUIVariants.DEFAULT) {
|
|
20
|
-
const
|
|
21
|
-
|
|
20
|
+
const infoPanelToggleButton = createInfoPanelToggleButton(playerContext);
|
|
21
|
+
const settingsPanel = createSettingsPanel(playerContext);
|
|
22
|
+
const settingsToggleButton = new SettingsToggleButton({ settingsPanel, role: 'button' });
|
|
23
|
+
settingsToggleButton.getDomElement().attr('aria-haspopup', 'true');
|
|
24
|
+
controlComponents.push(infoPanelToggleButton, settingsToggleButton, settingsPanel);
|
|
22
25
|
}
|
|
23
26
|
controlComponents.push(new FullscreenToggleButton());
|
|
24
27
|
const controlBar = new ControlBar({
|
|
25
28
|
components: [
|
|
26
|
-
createSeekBar(
|
|
29
|
+
createSeekBar(playerContext, variant),
|
|
27
30
|
new Container({
|
|
28
31
|
components: [...controlComponents],
|
|
29
32
|
cssClasses: ['controlbar-bottom']
|
|
30
33
|
})
|
|
31
34
|
],
|
|
32
|
-
cssClasses: ['ui-controlbar-bottom']
|
|
35
|
+
cssClasses: ['ui-controlbar-bottom'],
|
|
36
|
+
ariaLabel: localizeKey('controlBar.bottom')
|
|
33
37
|
});
|
|
34
38
|
npoPlayer.uiComponents.controlBar = controlBar;
|
|
35
39
|
return controlBar;
|
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
import { LabelConfig } from 'bitmovin-player-ui/dist/js/framework/components/label';
|
|
6
|
-
import { NpoPlayerUIVariants } from '../../types/interfaces';
|
|
7
|
-
export declare function createCTABar(player: PlayerAPI, npoPlayer: NpoPlayer, variant: NpoPlayerUIVariants): Container<{
|
|
8
|
-
components: (Button<ButtonConfig> | Label<LabelConfig>)[];
|
|
9
|
-
cssClasses: string[];
|
|
10
|
-
}>;
|
|
1
|
+
import { Container } from 'bitmovin-player-ui';
|
|
2
|
+
import { ContainerConfig } from 'bitmovin-player-ui/dist/js/framework/components/container';
|
|
3
|
+
import { NpoPlayerUIVariants, PlayerContext } from '../../types/interfaces';
|
|
4
|
+
export declare function createCTABar(playerContext: PlayerContext, variant: NpoPlayerUIVariants): Container<ContainerConfig>;
|