@npo/player 1.10.2 → 1.11.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 +5 -207
- package/lib/js/drm/verifydrm.test.js +1 -1
- package/lib/js/ui/nativemobileuifactory.js +4 -0
- package/lib/js/ui/nativemobileuifactory.js.map +1 -1
- package/lib/npoplayer.js +7 -3
- package/lib/npoplayer.js.map +1 -1
- package/lib/package.json +8 -7
- package/lib/src/js/ads/ster.d.ts +4 -0
- package/lib/src/js/ads/ster.test.d.ts +1 -0
- package/lib/src/js/api/getstreamobject.d.ts +3 -0
- package/lib/src/js/cdnproviders.d.ts +1 -0
- package/lib/src/js/checks/safari.d.ts +1 -0
- package/lib/src/js/checks/safari.test.d.ts +1 -0
- package/lib/src/js/drm/verifydrm.d.ts +4 -0
- package/lib/src/js/drm/verifydrm.test.d.ts +1 -0
- package/lib/src/js/fragments/setfragments.d.ts +4 -0
- package/lib/src/js/playeractions/customerrors.test.d.ts +1 -0
- package/lib/src/js/playeractions/handlers/customerrors.d.ts +50 -0
- package/lib/src/js/playeractions/handlers/error.d.ts +3 -0
- package/lib/src/js/playeractions/handlers/error.test.d.ts +1 -0
- package/lib/src/js/playeractions/handlers/handleoffsets.d.ts +6 -0
- package/lib/src/js/playeractions/handlers/handleoffsets.test.d.ts +1 -0
- package/lib/src/js/playeractions/handlers/processplayerconfig.d.ts +3 -0
- package/lib/src/js/playeractions/handlers/resolvekeypress.d.ts +3 -0
- package/lib/src/js/playeractions/playeractions.d.ts +4 -0
- package/lib/src/js/tracking/handlers/eventbinding.d.ts +3 -0
- package/lib/src/js/tracking/handlers/eventlogging.d.ts +2 -0
- package/lib/src/js/tracking/handlers/playertrackerinit.d.ts +4 -0
- package/lib/src/js/tracking/handlers/playertrackerstart.d.ts +1 -0
- package/lib/src/js/tracking/playertracker.d.ts +4 -0
- package/lib/src/js/ui/components/adbutton.d.ts +7 -0
- package/lib/src/js/ui/components/adlabel.d.ts +7 -0
- package/lib/src/js/ui/components/buttons.d.ts +30 -0
- package/lib/src/js/ui/components/controlbar.d.ts +3 -0
- package/lib/src/js/ui/components/ctabar.d.ts +9 -0
- package/lib/src/js/ui/components/nativemobile/addFragments.d.ts +1 -0
- package/lib/src/js/ui/components/nativemobile/buttons.d.ts +13 -0
- package/lib/src/js/ui/components/nativemobile/controlbar.d.ts +3 -0
- package/lib/src/js/ui/components/nativemobile/ctabar.d.ts +10 -0
- package/lib/src/js/ui/components/nativemobile/playnext.d.ts +10 -0
- package/lib/src/js/ui/components/nativemobile/titlebar.d.ts +2 -0
- package/lib/src/js/ui/components/nativemobile/topbar.d.ts +3 -0
- package/lib/src/js/ui/components/playnext.d.ts +11 -0
- package/lib/src/js/ui/components/settingspanel.d.ts +4 -0
- package/lib/src/js/ui/components/shared/playnextscreen.d.ts +2 -0
- package/lib/src/js/ui/components/titlebar.d.ts +3 -0
- package/lib/src/js/ui/components/topbar.d.ts +2 -0
- package/lib/src/js/ui/handlers/listboxhandlers.d.ts +5 -0
- package/lib/src/js/ui/handlers/nicamhandler.d.ts +2 -0
- package/lib/src/js/ui/handlers/nicamhandler.test.d.ts +1 -0
- package/lib/src/js/ui/handlers/playnexthandlers.d.ts +0 -0
- package/lib/src/js/ui/handlers/timecontrolhandlers.d.ts +3 -0
- package/lib/src/js/ui/nativemobileuicontainer.d.ts +6 -0
- package/lib/src/js/ui/nativemobileuifactory.d.ts +3 -0
- package/lib/src/js/ui/uicontainer.d.ts +3 -0
- package/lib/src/js/utilities/localizationconfig.d.ts +6 -0
- package/lib/src/js/utilities/printversion.d.ts +1 -0
- package/lib/src/js/utilities/utilities.d.ts +10 -0
- package/lib/src/npoplayer.d.ts +45 -0
- package/lib/src/npoplayer.test.d.ts +1 -0
- package/lib/src/types/classes.d.ts +4 -0
- package/lib/src/types/interfaces.d.ts +108 -0
- package/lib/types/interfaces.d.ts +2 -0
- package/lib/types/interfaces.js.map +1 -1
- package/package.json +8 -7
- package/src/scss/npoplayer.css +594 -2
- package/src/scss/npoplayer.scss +1 -1
- package/src/scss/variants/_player-base.scss +12 -1
- package/src/scss/variants/_player-large.scss +1 -1
- package/src/scss/variants/_player-medium.scss +1 -1
- package/src/scss/vars/_fonts.scss +9 -9
- package/src/scss/vars/_icons.scss +1 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type PlayerAPI } from 'bitmovin-player';
|
|
2
|
+
import { Button, SettingsPanel, SettingsToggleButton } from 'bitmovin-player-ui';
|
|
3
|
+
export declare function createPlayNextButton(player: PlayerAPI | null): Button<{
|
|
4
|
+
cssClass: string;
|
|
5
|
+
text: string;
|
|
6
|
+
hidden: false;
|
|
7
|
+
}>;
|
|
8
|
+
export declare function createWatchFromStartButton(): Button<{
|
|
9
|
+
cssClass: string;
|
|
10
|
+
text: string;
|
|
11
|
+
hidden: true;
|
|
12
|
+
}>;
|
|
13
|
+
export declare function createSettingsButton(player: PlayerAPI | null, settingsPanel: SettingsPanel): SettingsToggleButton;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Container } from 'bitmovin-player-ui';
|
|
2
|
+
import { type PlayerAPI } from 'bitmovin-player';
|
|
3
|
+
export declare function createCTABar(player: PlayerAPI | null): Container<{
|
|
4
|
+
components: import("bitmovin-player-ui").Button<{
|
|
5
|
+
cssClass: string;
|
|
6
|
+
text: string;
|
|
7
|
+
hidden: true;
|
|
8
|
+
}>[];
|
|
9
|
+
cssClasses: string[];
|
|
10
|
+
}>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Container } from 'bitmovin-player-ui';
|
|
2
|
+
import { type PlayerAPI } from 'bitmovin-player';
|
|
3
|
+
export declare function createPlayNextScreen(player: PlayerAPI | null): Container<{
|
|
4
|
+
components: import("bitmovin-player-ui").Button<{
|
|
5
|
+
cssClass: string;
|
|
6
|
+
text: string;
|
|
7
|
+
hidden: false;
|
|
8
|
+
}>[];
|
|
9
|
+
cssClasses: string[];
|
|
10
|
+
}>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Container } from 'bitmovin-player-ui';
|
|
2
|
+
import { type PlayerAPI } from 'bitmovin-player';
|
|
3
|
+
import type NpoPlayer from '../../../npoplayer';
|
|
4
|
+
export declare function createPlayNextScreen(player: PlayerAPI | null, npoplayer: NpoPlayer): Container<{
|
|
5
|
+
components: import("bitmovin-player-ui").Button<{
|
|
6
|
+
cssClass: string;
|
|
7
|
+
text: string;
|
|
8
|
+
hidden: false;
|
|
9
|
+
}>[];
|
|
10
|
+
cssClasses: string[];
|
|
11
|
+
}>;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type PlayerAPI } from 'bitmovin-player';
|
|
2
|
+
import { type SettingsPanel, type SettingsPanelPage, type SettingsPanelPageOpenButton } from 'bitmovin-player-ui';
|
|
3
|
+
export declare function handleSubtitleListBoxItemSelected(subtitleSettingsOpenButton: SettingsPanelPageOpenButton, settingsPanel: SettingsPanel, mainSettingsPage: SettingsPanelPage): (e: any) => void;
|
|
4
|
+
export declare function handleSpeedListBoxItemSelected(player: PlayerAPI | null, speedSettingsOpenButton: SettingsPanelPageOpenButton, settingsPanel: SettingsPanel, mainSettingsPage: SettingsPanelPage): (source: any, args: any) => void;
|
|
5
|
+
export declare function handleQualityListBoxItemSelected(player: PlayerAPI | null, qualitySettingsOpenButton: SettingsPanelPageOpenButton, settingsPanel: SettingsPanel, mainSettingsPage: SettingsPanelPage): (source: any, args: any) => void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
File without changes
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { UIContainer } from 'bitmovin-player-ui';
|
|
2
|
+
import { PlayerAPI } from 'bitmovin-player';
|
|
3
|
+
import { CustomMessages } from '../../types/interfaces';
|
|
4
|
+
export declare function sendCustomMessage(message: CustomMessages): any;
|
|
5
|
+
export declare function getCustomMessage(message: CustomMessages): {};
|
|
6
|
+
export declare function nativeMobileUIContainer(player: PlayerAPI): UIContainer;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function printVersion(version: string): void;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type LocalizableText } from 'bitmovin-player-ui/dist/js/framework/localization/i18n';
|
|
2
|
+
export declare const jwtToBase64: (jwt: string) => string;
|
|
3
|
+
export declare const base64ToObject: (base64: string) => any;
|
|
4
|
+
export declare const noTrailingSlash: (url: string) => string;
|
|
5
|
+
export declare function localize(key: string): LocalizableText;
|
|
6
|
+
export declare function validateStreamLength(duration: string | number | undefined): number;
|
|
7
|
+
export declare function msToSeconds(ms: number): number;
|
|
8
|
+
export declare function validatePrid(prid: string | null): string;
|
|
9
|
+
export declare function getModuleExport(module: unknown): unknown;
|
|
10
|
+
export declare function airPlaySupported(): boolean;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { type StreamTracker, type NPOTag } from '@npotag/tag';
|
|
2
|
+
import { type InitialisationProps } from '@npotag/tag/dist/types/src/npoTag';
|
|
3
|
+
import { type PlayerAPI, type PlayerConfig, type SourceConfig } from 'bitmovin-player';
|
|
4
|
+
import { UIManager } from 'bitmovin-player-ui';
|
|
5
|
+
import { LogEmitter } from './types/classes';
|
|
6
|
+
import { type ApiPayload, type Fragments, type NPOTagObject, type Profile, type Section, type StreamObject, type StreamOptions, type UIComponents } from './types/interfaces';
|
|
7
|
+
export default class NpoPlayer {
|
|
8
|
+
playerConfig: PlayerConfig;
|
|
9
|
+
sourceConfig: SourceConfig;
|
|
10
|
+
streamObject: StreamObject;
|
|
11
|
+
player: PlayerAPI | null;
|
|
12
|
+
uiManager: UIManager | null;
|
|
13
|
+
npoTag: NPOTagObject | undefined;
|
|
14
|
+
streamTracker: StreamTracker | null;
|
|
15
|
+
logEmitter: LogEmitter;
|
|
16
|
+
uiComponents: UIComponents;
|
|
17
|
+
fragment: Section | null;
|
|
18
|
+
container: HTMLElement;
|
|
19
|
+
streamOptions: StreamOptions;
|
|
20
|
+
jwt: string;
|
|
21
|
+
apiPayload: ApiPayload;
|
|
22
|
+
adBreakActive: boolean;
|
|
23
|
+
version: string;
|
|
24
|
+
constructor(_container: HTMLElement, _playerConfig: PlayerConfig, _npotag?: InitialisationProps | null, _npotaginstance?: NPOTag);
|
|
25
|
+
initPlayer(_container: HTMLElement, playerConfig: PlayerConfig): void;
|
|
26
|
+
loadStream(_jwt: string, options?: StreamOptions): Promise<void>;
|
|
27
|
+
createUIManager(player: PlayerAPI, variant: string): Promise<void>;
|
|
28
|
+
setFragments(fragments: Fragments): Promise<void>;
|
|
29
|
+
decideProfile(preferredDRM?: string): Promise<Profile>;
|
|
30
|
+
processSourceConfig(_sourceConfig: SourceConfig | undefined, _streamObject: StreamObject, drm?: string | null): SourceConfig;
|
|
31
|
+
doError(input: any, status?: number): void;
|
|
32
|
+
keyPress(e: KeyboardEvent): void;
|
|
33
|
+
setVolume(volume: number): void;
|
|
34
|
+
increaseVolume(): void;
|
|
35
|
+
decreaseVolume(): void;
|
|
36
|
+
goForward(seconds: number): void;
|
|
37
|
+
goBackwards(seconds: number): void;
|
|
38
|
+
watchFromStart(): void;
|
|
39
|
+
showPlayNextScreen(): void;
|
|
40
|
+
hidePlayNextScreen(): void;
|
|
41
|
+
doPlayNext(): void;
|
|
42
|
+
destroy(): boolean;
|
|
43
|
+
unload(): boolean;
|
|
44
|
+
isFairPlayDrmSupported(ks?: any): boolean;
|
|
45
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { type SourceConfig } from 'bitmovin-player';
|
|
2
|
+
import { type ErrorMessageOverlay, type Label, ControlBar, SettingsPanelItem, Button, SeekBar, CastToggleButton } from 'bitmovin-player-ui';
|
|
3
|
+
import { type NPOTag, type PageTracker } from '@npotag/tag';
|
|
4
|
+
import { ButtonConfig } from 'bitmovin-player-ui/dist/js/framework/components/button';
|
|
5
|
+
export interface Profile {
|
|
6
|
+
tech: string;
|
|
7
|
+
drm: string;
|
|
8
|
+
}
|
|
9
|
+
export interface StreamObject {
|
|
10
|
+
stream: StreamObject_Stream;
|
|
11
|
+
metadata: StreamObject_Metadata;
|
|
12
|
+
assets: StreamObject_Assets;
|
|
13
|
+
}
|
|
14
|
+
export interface ApiPayload {
|
|
15
|
+
baseURL: string;
|
|
16
|
+
jwt: string;
|
|
17
|
+
data: Record<string, unknown>;
|
|
18
|
+
}
|
|
19
|
+
export interface NPOTagObject {
|
|
20
|
+
npoTagInstance: NPOTag | undefined;
|
|
21
|
+
heartbeatInterval: number | undefined;
|
|
22
|
+
pageTracker: PageTracker | null;
|
|
23
|
+
}
|
|
24
|
+
interface StreamObject_Stream {
|
|
25
|
+
avType: string;
|
|
26
|
+
drmToken?: string;
|
|
27
|
+
drmType: string;
|
|
28
|
+
streamProfile: string;
|
|
29
|
+
streamURL: string;
|
|
30
|
+
isLiveStream?: boolean;
|
|
31
|
+
hasDvrWindow?: boolean;
|
|
32
|
+
}
|
|
33
|
+
interface Subtitle {
|
|
34
|
+
iso: string;
|
|
35
|
+
location: string;
|
|
36
|
+
name: string;
|
|
37
|
+
}
|
|
38
|
+
interface StreamObject_Assets {
|
|
39
|
+
scrubbingThumbnail: string;
|
|
40
|
+
subtitles: Subtitle[] | null;
|
|
41
|
+
preroll?: string;
|
|
42
|
+
}
|
|
43
|
+
interface StreamObject_Metadata {
|
|
44
|
+
broadcaster?: string;
|
|
45
|
+
broadcasters?: string[];
|
|
46
|
+
country?: string[];
|
|
47
|
+
credits?: string[];
|
|
48
|
+
description: string;
|
|
49
|
+
duration?: string;
|
|
50
|
+
genre?: string[];
|
|
51
|
+
isDubbed?: boolean;
|
|
52
|
+
language?: string[];
|
|
53
|
+
nicam?: string[] | null;
|
|
54
|
+
poster?: string;
|
|
55
|
+
prid?: string;
|
|
56
|
+
sourceIP?: string;
|
|
57
|
+
ageRating?: string;
|
|
58
|
+
title: string;
|
|
59
|
+
hasPreroll?: string;
|
|
60
|
+
}
|
|
61
|
+
export interface Section {
|
|
62
|
+
cssClasses?: string[];
|
|
63
|
+
start: number;
|
|
64
|
+
end: number;
|
|
65
|
+
title: string;
|
|
66
|
+
}
|
|
67
|
+
export interface Fragments {
|
|
68
|
+
sections: Section[];
|
|
69
|
+
startAtBeginOfFragment?: boolean;
|
|
70
|
+
startAtFragment?: number;
|
|
71
|
+
stopAtEndOfFragment?: boolean;
|
|
72
|
+
}
|
|
73
|
+
export interface StreamOptions {
|
|
74
|
+
sourceConfig?: SourceConfig;
|
|
75
|
+
fragments?: Fragments;
|
|
76
|
+
startOffset?: number;
|
|
77
|
+
liveOffset?: boolean;
|
|
78
|
+
liveProgramTime?: number;
|
|
79
|
+
endpoint?: string;
|
|
80
|
+
preferredDRM?: string;
|
|
81
|
+
prid?: string;
|
|
82
|
+
}
|
|
83
|
+
export interface UIComponents {
|
|
84
|
+
errorMessageOverlay?: ErrorMessageOverlay;
|
|
85
|
+
nicam?: Label<{
|
|
86
|
+
text: string;
|
|
87
|
+
cssClass: string;
|
|
88
|
+
}>;
|
|
89
|
+
subtitlesButton?: SettingsPanelItem | undefined;
|
|
90
|
+
qualityButton?: SettingsPanelItem | undefined;
|
|
91
|
+
watchFromStartButton?: Button<ButtonConfig> | undefined;
|
|
92
|
+
controlbar?: ControlBar | undefined;
|
|
93
|
+
adbutton?: Button<ButtonConfig> | undefined;
|
|
94
|
+
adlabel?: Label<{
|
|
95
|
+
text: string;
|
|
96
|
+
cssClass: string;
|
|
97
|
+
}> | undefined;
|
|
98
|
+
seekBar?: SeekBar | undefined;
|
|
99
|
+
chromeCastButton?: CastToggleButton | undefined;
|
|
100
|
+
}
|
|
101
|
+
export interface CustomMessageHandlerResult {
|
|
102
|
+
defaultActionRequired?: boolean;
|
|
103
|
+
}
|
|
104
|
+
export declare enum CustomMessages {
|
|
105
|
+
TOGGLE_SETTINGS_PANEL = "toggleSettingsPanel",
|
|
106
|
+
DO_PLAY_NEXT = "doPlayNext"
|
|
107
|
+
}
|
|
108
|
+
export {};
|
|
@@ -22,11 +22,13 @@ export interface NPOTagObject {
|
|
|
22
22
|
pageTracker: PageTracker | null;
|
|
23
23
|
}
|
|
24
24
|
interface StreamObject_Stream {
|
|
25
|
+
avType: string;
|
|
25
26
|
drmToken?: string;
|
|
26
27
|
drmType: string;
|
|
27
28
|
streamProfile: string;
|
|
28
29
|
streamURL: string;
|
|
29
30
|
isLiveStream?: boolean;
|
|
31
|
+
hasDvrWindow?: boolean;
|
|
30
32
|
}
|
|
31
33
|
interface Subtitle {
|
|
32
34
|
iso: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/types/interfaces.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/types/interfaces.ts"],"names":[],"mappings":"AA0HA,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACtB,+DAA6C,CAAA;IAC7C,6CAA2B,CAAA;AAC/B,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@npo/player",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.11.0",
|
|
4
4
|
"description": "NPO Player",
|
|
5
5
|
"author": "Publieke Omroep <player@npo.nl>",
|
|
6
6
|
"contributors": [
|
|
@@ -16,12 +16,12 @@
|
|
|
16
16
|
"types": "./lib/npoplayer.d.ts",
|
|
17
17
|
"scripts": {
|
|
18
18
|
"build": "webpack --hot",
|
|
19
|
-
"build:scss": "npm run build:web-styles && npm run build:mobile-styles && cp src/scss/*.css dist && cp src/scss/*.css.map dist",
|
|
20
|
-
"build:web-styles": "sass src/scss/npoplayer.scss --style=compressed src/scss/npoplayer.css
|
|
21
|
-
"build:mobile-styles": "sass src/scss/npoplayer-mobile.scss --style=compressed src/scss/npoplayer-mobile.css
|
|
22
|
-
"build:cdn": "bash build-cdn.sh",
|
|
19
|
+
"build:scss": "npm run build:web-styles && npm run build:mobile-styles && mkdir -p dist && cp src/scss/*.css dist && cp src/scss/*.css.map dist",
|
|
20
|
+
"build:web-styles": "sass src/scss/npoplayer.scss:src/scss/npoplayer.css --style=compressed && postcss src/scss/npoplayer.css --use autoprefixer postcss-import -o src/scss/npoplayer.css",
|
|
21
|
+
"build:mobile-styles": "sass src/scss/npoplayer-mobile.scss:src/scss/npoplayer-mobile.css --style=compressed && postcss src/scss/npoplayer-mobile.css --use autoprefixer postcss-import -o src/scss/npoplayer-mobile.css",
|
|
22
|
+
"build:cdn": "npm run build && bash build-cdn.sh",
|
|
23
23
|
"lint": "eslint src --fix",
|
|
24
|
-
"bundle": "npm run lint && bash build-lib.sh && npm run build:scss",
|
|
24
|
+
"bundle": "npm run lint && bash build-lib.sh && npm run build:scss && npm run build:cdn",
|
|
25
25
|
"build:ts": "bash build-lib.sh",
|
|
26
26
|
"test": "jest",
|
|
27
27
|
"test:ci": "node_modules/.bin/jest",
|
|
@@ -65,6 +65,7 @@
|
|
|
65
65
|
"node-fetch": "^3.3.0",
|
|
66
66
|
"node-sass": "^7.0.3",
|
|
67
67
|
"postcss-cli": "^10.1.0",
|
|
68
|
+
"postcss-import": "^15.1.0",
|
|
68
69
|
"postcss-loader": "^7.3.3",
|
|
69
70
|
"postcss-scss": "^4.0.7",
|
|
70
71
|
"sass": "^1.58.0",
|
|
@@ -79,7 +80,7 @@
|
|
|
79
80
|
"webpack-dev-server": "^4.11.1"
|
|
80
81
|
},
|
|
81
82
|
"dependencies": {
|
|
82
|
-
"@npotag/tag": "^2.
|
|
83
|
+
"@npotag/tag": "^2.1.0",
|
|
83
84
|
"bitmovin-player": "^8.125.0",
|
|
84
85
|
"bitmovin-player-ui": "^3.48.0"
|
|
85
86
|
},
|