@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.
Files changed (72) hide show
  1. package/README.md +5 -207
  2. package/lib/js/drm/verifydrm.test.js +1 -1
  3. package/lib/js/ui/nativemobileuifactory.js +4 -0
  4. package/lib/js/ui/nativemobileuifactory.js.map +1 -1
  5. package/lib/npoplayer.js +7 -3
  6. package/lib/npoplayer.js.map +1 -1
  7. package/lib/package.json +8 -7
  8. package/lib/src/js/ads/ster.d.ts +4 -0
  9. package/lib/src/js/ads/ster.test.d.ts +1 -0
  10. package/lib/src/js/api/getstreamobject.d.ts +3 -0
  11. package/lib/src/js/cdnproviders.d.ts +1 -0
  12. package/lib/src/js/checks/safari.d.ts +1 -0
  13. package/lib/src/js/checks/safari.test.d.ts +1 -0
  14. package/lib/src/js/drm/verifydrm.d.ts +4 -0
  15. package/lib/src/js/drm/verifydrm.test.d.ts +1 -0
  16. package/lib/src/js/fragments/setfragments.d.ts +4 -0
  17. package/lib/src/js/playeractions/customerrors.test.d.ts +1 -0
  18. package/lib/src/js/playeractions/handlers/customerrors.d.ts +50 -0
  19. package/lib/src/js/playeractions/handlers/error.d.ts +3 -0
  20. package/lib/src/js/playeractions/handlers/error.test.d.ts +1 -0
  21. package/lib/src/js/playeractions/handlers/handleoffsets.d.ts +6 -0
  22. package/lib/src/js/playeractions/handlers/handleoffsets.test.d.ts +1 -0
  23. package/lib/src/js/playeractions/handlers/processplayerconfig.d.ts +3 -0
  24. package/lib/src/js/playeractions/handlers/resolvekeypress.d.ts +3 -0
  25. package/lib/src/js/playeractions/playeractions.d.ts +4 -0
  26. package/lib/src/js/tracking/handlers/eventbinding.d.ts +3 -0
  27. package/lib/src/js/tracking/handlers/eventlogging.d.ts +2 -0
  28. package/lib/src/js/tracking/handlers/playertrackerinit.d.ts +4 -0
  29. package/lib/src/js/tracking/handlers/playertrackerstart.d.ts +1 -0
  30. package/lib/src/js/tracking/playertracker.d.ts +4 -0
  31. package/lib/src/js/ui/components/adbutton.d.ts +7 -0
  32. package/lib/src/js/ui/components/adlabel.d.ts +7 -0
  33. package/lib/src/js/ui/components/buttons.d.ts +30 -0
  34. package/lib/src/js/ui/components/controlbar.d.ts +3 -0
  35. package/lib/src/js/ui/components/ctabar.d.ts +9 -0
  36. package/lib/src/js/ui/components/nativemobile/addFragments.d.ts +1 -0
  37. package/lib/src/js/ui/components/nativemobile/buttons.d.ts +13 -0
  38. package/lib/src/js/ui/components/nativemobile/controlbar.d.ts +3 -0
  39. package/lib/src/js/ui/components/nativemobile/ctabar.d.ts +10 -0
  40. package/lib/src/js/ui/components/nativemobile/playnext.d.ts +10 -0
  41. package/lib/src/js/ui/components/nativemobile/titlebar.d.ts +2 -0
  42. package/lib/src/js/ui/components/nativemobile/topbar.d.ts +3 -0
  43. package/lib/src/js/ui/components/playnext.d.ts +11 -0
  44. package/lib/src/js/ui/components/settingspanel.d.ts +4 -0
  45. package/lib/src/js/ui/components/shared/playnextscreen.d.ts +2 -0
  46. package/lib/src/js/ui/components/titlebar.d.ts +3 -0
  47. package/lib/src/js/ui/components/topbar.d.ts +2 -0
  48. package/lib/src/js/ui/handlers/listboxhandlers.d.ts +5 -0
  49. package/lib/src/js/ui/handlers/nicamhandler.d.ts +2 -0
  50. package/lib/src/js/ui/handlers/nicamhandler.test.d.ts +1 -0
  51. package/lib/src/js/ui/handlers/playnexthandlers.d.ts +0 -0
  52. package/lib/src/js/ui/handlers/timecontrolhandlers.d.ts +3 -0
  53. package/lib/src/js/ui/nativemobileuicontainer.d.ts +6 -0
  54. package/lib/src/js/ui/nativemobileuifactory.d.ts +3 -0
  55. package/lib/src/js/ui/uicontainer.d.ts +3 -0
  56. package/lib/src/js/utilities/localizationconfig.d.ts +6 -0
  57. package/lib/src/js/utilities/printversion.d.ts +1 -0
  58. package/lib/src/js/utilities/utilities.d.ts +10 -0
  59. package/lib/src/npoplayer.d.ts +45 -0
  60. package/lib/src/npoplayer.test.d.ts +1 -0
  61. package/lib/src/types/classes.d.ts +4 -0
  62. package/lib/src/types/interfaces.d.ts +108 -0
  63. package/lib/types/interfaces.d.ts +2 -0
  64. package/lib/types/interfaces.js.map +1 -1
  65. package/package.json +8 -7
  66. package/src/scss/npoplayer.css +594 -2
  67. package/src/scss/npoplayer.scss +1 -1
  68. package/src/scss/variants/_player-base.scss +12 -1
  69. package/src/scss/variants/_player-large.scss +1 -1
  70. package/src/scss/variants/_player-medium.scss +1 -1
  71. package/src/scss/vars/_fonts.scss +9 -9
  72. 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,3 @@
1
+ import { PlayerAPI } from 'bitmovin-player';
2
+ import { ControlBar, type SettingsPanel } from 'bitmovin-player-ui';
3
+ export declare function createControlBar(player: PlayerAPI, settingsPanel: SettingsPanel): ControlBar;
@@ -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,2 @@
1
+ import { TitleBar } from 'bitmovin-player-ui';
2
+ export declare function createTitleBar(): TitleBar;
@@ -0,0 +1,3 @@
1
+ import { type SettingsPanel, TitleBar } from 'bitmovin-player-ui';
2
+ import { type PlayerAPI } from 'bitmovin-player';
3
+ export declare function createTopBar(player: PlayerAPI | null, settingsPanel: SettingsPanel): TitleBar;
@@ -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,4 @@
1
+ import { SettingsPanel } from 'bitmovin-player-ui';
2
+ import type NpoPlayer from '../../../npoplayer';
3
+ import { PlayerAPI } from 'bitmovin-player';
4
+ export declare function createSettingsPanel(npoplayer: NpoPlayer | PlayerAPI): SettingsPanel;
@@ -0,0 +1,2 @@
1
+ export declare function showPlayNextScreen(playNextFunction: () => void): void;
2
+ export declare function hidePlayNextScreen(): void;
@@ -0,0 +1,3 @@
1
+ import { TitleBar } from 'bitmovin-player-ui';
2
+ import type NpoPlayer from '../../../npoplayer';
3
+ export declare function createTitleBar(npoplayer: NpoPlayer): TitleBar;
@@ -0,0 +1,2 @@
1
+ import { type SettingsPanel, TitleBar } from 'bitmovin-player-ui';
2
+ export declare function createTopBar(settingsPanel: SettingsPanel): TitleBar;
@@ -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,2 @@
1
+ import { StreamObject } from 'types/interfaces';
2
+ export declare function processNicam(streamObject: StreamObject, containerId: string): void;
@@ -0,0 +1 @@
1
+ export {};
File without changes
@@ -0,0 +1,3 @@
1
+ import { type PlayerAPI } from 'bitmovin-player';
2
+ export declare function rewind(player: PlayerAPI | null): void;
3
+ export declare function forward(player: PlayerAPI | null): void;
@@ -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,3 @@
1
+ import { PlayerAPI, UIConfig } from 'bitmovin-player';
2
+ import { UIManager } from 'bitmovin-player-ui';
3
+ export declare function nativeMobileUiFactory(player: PlayerAPI, config?: UIConfig): UIManager;
@@ -0,0 +1,3 @@
1
+ import type NpoPlayer from '../../npoplayer';
2
+ import { UIContainer } from 'bitmovin-player-ui';
3
+ export declare function createUIContainer(npoplayer: NpoPlayer, variant: string): UIContainer;
@@ -0,0 +1,6 @@
1
+ export declare const localizationConfig: {
2
+ language: string;
3
+ vocabularies: {
4
+ nl: Record<string, string>;
5
+ };
6
+ };
@@ -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,4 @@
1
+ /// <reference types="node" />
2
+ import { EventEmitter } from 'events';
3
+ export declare class LogEmitter extends EventEmitter {
4
+ }
@@ -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":"AAwHA,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACtB,+DAA6C,CAAA;IAC7C,6CAA2B,CAAA;AAC/B,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB"}
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.10.2",
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 | postcss --use autoprefixer -r src/scss/npoplayer.css",
21
- "build:mobile-styles": "sass src/scss/npoplayer-mobile.scss --style=compressed src/scss/npoplayer-mobile.css | postcss --use autoprefixer -r 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.0.0",
83
+ "@npotag/tag": "^2.1.0",
83
84
  "bitmovin-player": "^8.125.0",
84
85
  "bitmovin-player-ui": "^3.48.0"
85
86
  },