@npo/player 1.23.2 → 1.24.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 (140) hide show
  1. package/README.md +1 -1
  2. package/lib/js/playeractions/handlers/error.js +2 -2
  3. package/lib/js/playeractions/handlers/error.test.js +2 -2
  4. package/lib/js/playeractions/handlers/handleoffsets.d.ts +4 -6
  5. package/lib/js/playeractions/handlers/handleoffsets.js +16 -17
  6. package/lib/js/playeractions/handlers/handleoffsets.test.js +73 -29
  7. package/lib/js/playeractions/handlers/mediasessionactions.js +24 -12
  8. package/lib/js/playeractions/handlers/processsourceconfig.js +16 -3
  9. package/lib/js/tracking/handlers/eventbinding.d.ts +1 -1
  10. package/lib/js/tracking/handlers/eventbinding.js +17 -23
  11. package/lib/js/tracking/handlers/eventlogging.d.ts +1 -1
  12. package/lib/js/tracking/handlers/eventlogging.js +18 -18
  13. package/lib/js/tracking/handlers/eventlogging.test.js +24 -24
  14. package/lib/js/tracking/handlers/playertrackerstart.js +4 -2
  15. package/lib/lang/nl.json +3 -1
  16. package/lib/npoplayer.d.ts +1 -2
  17. package/lib/npoplayer.js +25 -43
  18. package/lib/package.json +5 -5
  19. package/lib/services/a11y/setup.js +2 -2
  20. package/lib/services/a11y/setup.test.js +7 -8
  21. package/lib/services/advertHandlers/handlePreRolls.d.ts +2 -0
  22. package/lib/services/advertHandlers/handlePreRolls.js +132 -0
  23. package/lib/services/advertHandlers/handlePrerolls.test.js +52 -0
  24. package/lib/services/cdnProviders/cdnProviders.d.ts +4 -0
  25. package/lib/services/cdnProviders/cdnProviders.js +22 -0
  26. package/lib/services/cdnProviders/cndProviders.test.js +22 -0
  27. package/lib/services/eventListenerHandlers/removeEventListeners.d.ts +1 -1
  28. package/lib/services/eventListenerHandlers/removeEventListeners.js +4 -4
  29. package/lib/services/eventListenerHandlers/removeEventListeners.test.js +28 -13
  30. package/lib/services/liveStreamHandlers/handleLiveStreamControls.d.ts +1 -1
  31. package/lib/services/liveStreamHandlers/handleLiveStreamControls.js +3 -3
  32. package/lib/services/liveStreamHandlers/handleLiveStreamControls.test.d.ts +2 -0
  33. package/lib/services/liveStreamHandlers/handleLiveStreamControls.test.js +65 -0
  34. package/lib/services/localStorageHandlers/localStorageHandlers.d.ts +1 -1
  35. package/lib/services/localStorageHandlers/localStorageHandlers.test.js +0 -1
  36. package/lib/services/npoPlayerAPI/contants.d.ts +5 -0
  37. package/lib/services/npoPlayerAPI/contants.js +5 -0
  38. package/lib/services/npoPlayerAPI/npoPlayerAPI.d.ts +16 -4
  39. package/lib/services/npoPlayerAPI/npoPlayerAPI.js +65 -3
  40. package/lib/services/npoPlayerAPI/npoPlayerAPI.test.js +66 -1
  41. package/lib/services/segmentHandlers/addSegmentEventListeners.js +3 -3
  42. package/lib/services/segmentHandlers/addSegmentEventListeners.test.js +10 -9
  43. package/lib/services/segmentHandlers/convertFragmentToSegment.d.ts +1 -1
  44. package/lib/services/segmentHandlers/handleSegmentSeek.d.ts +1 -1
  45. package/lib/services/segmentHandlers/handleSegmentSeek.test.js +4 -4
  46. package/lib/services/segmentHandlers/handleSegmentTimeChanged.d.ts +1 -1
  47. package/lib/services/segmentHandlers/handleSegmentTimeChanged.test.js +33 -24
  48. package/lib/services/segmentHandlers/initSegment.d.ts +1 -1
  49. package/lib/services/segmentHandlers/initSegment.test.js +3 -1
  50. package/lib/services/segmentHandlers/setSegmentMarkers.d.ts +1 -1
  51. package/lib/services/services.d.ts +3 -1
  52. package/lib/services/services.js +8 -0
  53. package/lib/services/verticalVideoHandlers/handleVerticalVideoControls.d.ts +2 -0
  54. package/lib/services/verticalVideoHandlers/handleVerticalVideoControls.js +8 -0
  55. package/lib/services/verticalVideoHandlers/handleVerticalVideoControls.test.d.ts +1 -0
  56. package/lib/services/verticalVideoHandlers/handleVerticalVideoControls.test.js +36 -0
  57. package/lib/src/js/playeractions/handlers/handleoffsets.d.ts +4 -6
  58. package/lib/src/js/tracking/handlers/eventbinding.d.ts +1 -1
  59. package/lib/src/js/tracking/handlers/eventlogging.d.ts +1 -1
  60. package/lib/src/npoplayer.d.ts +1 -2
  61. package/lib/src/services/advertHandlers/handlePreRolls.d.ts +2 -0
  62. package/lib/src/services/advertHandlers/handlePrerolls.test.d.ts +1 -0
  63. package/lib/src/services/cdnProviders/cdnProviders.d.ts +4 -0
  64. package/lib/src/services/cdnProviders/cndProviders.test.d.ts +1 -0
  65. package/lib/src/services/eventListenerHandlers/removeEventListeners.d.ts +1 -1
  66. package/lib/src/services/liveStreamHandlers/handleLiveStreamControls.d.ts +1 -1
  67. package/lib/src/services/liveStreamHandlers/handleLiveStreamControls.test.d.ts +2 -0
  68. package/lib/src/services/localStorageHandlers/localStorageHandlers.d.ts +1 -1
  69. package/lib/src/services/npoPlayerAPI/contants.d.ts +5 -0
  70. package/lib/src/services/npoPlayerAPI/npoPlayerAPI.d.ts +16 -4
  71. package/lib/src/services/segmentHandlers/convertFragmentToSegment.d.ts +1 -1
  72. package/lib/src/services/segmentHandlers/handleSegmentSeek.d.ts +1 -1
  73. package/lib/src/services/segmentHandlers/handleSegmentTimeChanged.d.ts +1 -1
  74. package/lib/src/services/segmentHandlers/initSegment.d.ts +1 -1
  75. package/lib/src/services/segmentHandlers/setSegmentMarkers.d.ts +1 -1
  76. package/lib/src/services/services.d.ts +3 -1
  77. package/lib/src/services/verticalVideoHandlers/handleVerticalVideoControls.d.ts +2 -0
  78. package/lib/src/services/verticalVideoHandlers/handleVerticalVideoControls.test.d.ts +1 -0
  79. package/lib/src/types/events.d.ts +8 -1
  80. package/lib/src/types/interfaces.d.ts +8 -12
  81. package/lib/src/ui/components/audio/controlbar.d.ts +1 -1
  82. package/lib/src/ui/components/controlbar.d.ts +1 -1
  83. package/lib/src/ui/components/seekbar.d.ts +1 -1
  84. package/lib/src/ui/components/settingspanel.d.ts +1 -1
  85. package/lib/src/ui/components/verticalvideo/controlbar.d.ts +3 -0
  86. package/lib/src/ui/handlers/streamhandler.d.ts +2 -4
  87. package/lib/src/ui/uicontainer.d.ts +2 -2
  88. package/lib/tests/mocks/mockNpoplayer.js +0 -1
  89. package/lib/tests/mocks/playerContextMock.d.ts +67 -0
  90. package/lib/tests/mocks/playerContextMock.js +117 -0
  91. package/lib/types/events.d.ts +8 -1
  92. package/lib/types/events.js +184 -1
  93. package/lib/types/interfaces.d.ts +8 -12
  94. package/lib/types/interfaces.js +1 -0
  95. package/lib/ui/components/audio/controlbar.d.ts +1 -1
  96. package/lib/ui/components/audio/controlbar.js +6 -6
  97. package/lib/ui/components/controlbar.d.ts +1 -1
  98. package/lib/ui/components/controlbar.js +13 -11
  99. package/lib/ui/components/nativemobile/controlbar.js +0 -1
  100. package/lib/ui/components/seekbar.js +1 -1
  101. package/lib/ui/components/settingspanel.d.ts +1 -1
  102. package/lib/ui/components/settingspanel.js +68 -84
  103. package/lib/ui/components/topbar.js +6 -3
  104. package/lib/ui/components/verticalvideo/controlbar.d.ts +3 -0
  105. package/lib/ui/components/verticalvideo/controlbar.js +34 -0
  106. package/lib/ui/handlers/streamhandler.d.ts +2 -4
  107. package/lib/ui/handlers/streamhandler.js +16 -7
  108. package/lib/ui/nativemobileuifactory.js +2 -0
  109. package/lib/ui/uicontainer.d.ts +2 -2
  110. package/lib/ui/uicontainer.js +35 -29
  111. package/package.json +5 -5
  112. package/src/style/components/_settingspanel.scss +35 -3
  113. package/src/style/components/_subtitles.scss +29 -25
  114. package/src/style/components/_textbuttons.scss +2 -2
  115. package/src/style/components/_volumeslider.scss +1 -0
  116. package/src/style/components/vertical-video/_bottombar.scss +19 -0
  117. package/src/style/components/vertical-video/_buttons.scss +23 -0
  118. package/src/style/components/vertical-video/_hugeplaybacktogglebutton.scss +14 -0
  119. package/src/style/components/vertical-video/_seekbar.scss +19 -0
  120. package/src/style/components/vertical-video/_settingsbutton.scss +7 -0
  121. package/src/style/components/vertical-video/_settingspanel.scss +14 -0
  122. package/src/style/components/vertical-video/_shortvideo.scss +14 -0
  123. package/src/style/components/vertical-video/_subtitles.scss +3 -0
  124. package/src/style/components/vertical-video/_topbar.scss +17 -0
  125. package/src/style/components/vertical-video/_volumeslider.scss +9 -0
  126. package/src/style/npoplayer.css +74 -34
  127. package/src/style/npoplayer.scss +2 -1
  128. package/src/style/variants/_player-small.scss +18 -10
  129. package/src/style/variants/_player-vertical.scss +23 -0
  130. package/lib/js/ads/ster.d.ts +0 -4
  131. package/lib/js/ads/ster.js +0 -126
  132. package/lib/js/ads/ster.test.js +0 -63
  133. package/lib/js/cdnproviders.d.ts +0 -1
  134. package/lib/js/cdnproviders.js +0 -16
  135. package/lib/src/js/ads/ster.d.ts +0 -4
  136. package/lib/src/js/cdnproviders.d.ts +0 -1
  137. package/lib/tests/mocks/mockPlayerContext.d.ts +0 -2
  138. package/lib/tests/mocks/mockPlayerContext.js +0 -40
  139. /package/lib/{js/ads/ster.test.d.ts → services/advertHandlers/handlePrerolls.test.d.ts} +0 -0
  140. /package/lib/{src/js/ads/ster.test.d.ts → services/cdnProviders/cndProviders.test.d.ts} +0 -0
@@ -1,6 +1,4 @@
1
- import { type PlayerAPI } from 'bitmovin-player';
2
- import type NpoPlayer from '../../../npoplayer';
3
- import { type StreamOptions } from 'types/interfaces';
4
- export declare function handleStartOffset(player: PlayerAPI, offset?: number): void;
5
- export declare function shiftToProgramStart(player: PlayerAPI | undefined, timestamp?: number): void;
6
- export declare function handleLiveOffsetLogic(npoplayer: NpoPlayer, player: PlayerAPI | undefined, options: StreamOptions): void;
1
+ import { PlayerContext, type StreamOptions } from '../../../types/interfaces';
2
+ export declare function handleStartOffset(playerContext: PlayerContext, offset?: number): void;
3
+ export declare function shiftToProgramStart(playerContext: PlayerContext, timestamp?: number): void;
4
+ export declare function handleLiveOffsetLogic(playerContext: PlayerContext, options: StreamOptions): void;
@@ -1,3 +1,3 @@
1
1
  import { type PlayerAPI } from 'bitmovin-player';
2
2
  import type NpoPlayer from '../../../npoplayer';
3
- export declare function bindPlayerEvents(npoplayer: NpoPlayer, player: PlayerAPI): void;
3
+ export declare function bindPlayerEvents(npoPlayer: NpoPlayer, player: PlayerAPI): void;
@@ -1,2 +1,2 @@
1
1
  import NpoPlayer from '../../../npoplayer';
2
- export declare function logEvent(npoplayer: NpoPlayer, event: string, data?: any): void;
2
+ export declare function logEvent(npoPlayer: NpoPlayer, event: string, data?: any): void;
@@ -32,9 +32,8 @@ export default class NpoPlayer {
32
32
  mockNpoPlayer: any;
33
33
  userPreferences: LocalStorageData;
34
34
  constructor(_container: HTMLElement, _playerConfig: PlayerConfig, _npotag?: InitialisationProps | undefined, _npotaginstance?: NPOTag | undefined, _variant?: NpoPlayerUIVariants);
35
- initPlayer(_container: HTMLElement, playerConfig: PlayerConfig, variant: NpoPlayerUIVariants): void;
35
+ initPlayer(_container: HTMLElement, playerConfig: PlayerConfig): void;
36
36
  loadStream(source: string, options?: StreamOptions): Promise<void>;
37
- createUIManager(player: PlayerAPI, playerContext: PlayerContext, variant: NpoPlayerUIVariants): Promise<void>;
38
37
  doError(input: any, status?: number): void;
39
38
  play(): Promise<void>;
40
39
  pause(): void;
@@ -0,0 +1,2 @@
1
+ import { PlayerContext } from '../../types/interfaces';
2
+ export declare function handlePreRolls(playerContext: PlayerContext): Promise<void>;
@@ -0,0 +1,4 @@
1
+ export type CdnProvider = 'NEP-FASTLY' | 'NEP' | 'NEP-LSW' | 'EUROVISION' | 'KPN' | 'AKEMAI' | 'OMROEP-ICECAST' | 'OMROEP-CONTENT' | 'OMROEP-PODCAST' | 'OMROEP-VIDEO' | 'OMROEP-DOWNLOAD' | 'NOS' | 'NPOAUDIO';
2
+ export declare function createImmutableMap(entries: [string, CdnProvider][]): ReadonlyMap<string, CdnProvider>;
3
+ export declare const npoCdnProvidersData: [string, CdnProvider][];
4
+ export declare const npoCdnProviders: ReadonlyMap<string, CdnProvider>;
@@ -1,2 +1,2 @@
1
- import { PlayerContext } from 'types/interfaces';
1
+ import { PlayerContext } from '../../types/interfaces';
2
2
  export declare const removeEventListeners: (playerContext: PlayerContext) => void;
@@ -1,4 +1,4 @@
1
- import { PlayerContext } from 'types/interfaces';
1
+ import { PlayerContext } from '../../types/interfaces';
2
2
  export declare const handleLiveStreamControls: (playerContext: PlayerContext) => void;
3
3
  export declare function updateForwardButtonState(player: any): void;
4
4
  export declare function toggleForwardButtons(forwardButtons: NodeListOf<Element>, timeShift: number): void;
@@ -0,0 +1,2 @@
1
+ import '@testing-library/jest-dom';
2
+ export declare const TIME_SHIFT_THRESHOLD = -10;
@@ -1,4 +1,4 @@
1
- import { LocalStorageData, LocalStorageValues, PlayerContext } from 'types/interfaces';
1
+ import { LocalStorageData, LocalStorageValues, PlayerContext } from '../../types/interfaces';
2
2
  export declare function setLocalStorage(key: LocalStorageValues, value: any): void;
3
3
  export declare function getLocalStorage(): LocalStorageData;
4
4
  export declare function setValuesBasedOnLocalStorage(playerContext: PlayerContext): void;
@@ -0,0 +1,5 @@
1
+ export declare const DEFAULT_UI_DELAY = 3000;
2
+ export declare const PREVENT_UI_DELAY = -1;
3
+ export declare const VOLUME_STEP = 10;
4
+ export declare const VOLUME_MIN = 0;
5
+ export declare const VOLUME_MAX = 100;
@@ -1,5 +1,7 @@
1
- import { PlayerAPI, PlayerEvent, PlayerEventCallback, SourceConfig, TimeMode, ViewMode } from 'bitmovin-player';
2
- import { Technology } from 'types/interfaces';
1
+ import { AdBreak, AdConfig, PlayerAPI, PlayerConfig, SourceConfig, TimeMode, ViewMode } from 'bitmovin-player';
2
+ import { UIManager } from 'bitmovin-player-ui';
3
+ import { NpoPlayerUIVariants, PlayerContext, Technology } from 'types/interfaces';
4
+ import { NpoPlayerEventCallback, NpoPlayerEvent } from '../../types/events';
3
5
  export declare class NpoPlayerAPI {
4
6
  playerAPI: PlayerAPI;
5
7
  constructor(playerAPI: PlayerAPI);
@@ -10,21 +12,31 @@ export declare class NpoPlayerAPI {
10
12
  unmute(): void;
11
13
  getVolume(): number;
12
14
  setVolume(level: number): void;
15
+ increaseVolume(): void;
16
+ decreaseVolume(): void;
13
17
  setViewMode(viewMode: ViewMode): void;
14
18
  getViewMode(): ViewMode;
15
19
  areSubtitlesEnabled(): boolean;
16
20
  enableSubtitles(): void;
17
21
  isPaused(): boolean;
18
22
  isMuted(): boolean;
23
+ isLive(): boolean;
19
24
  getSupportedDRM(): Promise<string[]>;
20
25
  getSupportedTech(): Technology[];
21
- off(eventType: PlayerEvent, callback: PlayerEventCallback): void;
22
- on(eventType: PlayerEvent, callback: PlayerEventCallback): void;
26
+ off(eventType: NpoPlayerEvent, callback: NpoPlayerEventCallback): void;
27
+ on(eventType: NpoPlayerEvent, callback: NpoPlayerEventCallback): void;
23
28
  seek(time: number): void;
29
+ timeShift(time: number): void;
24
30
  getContainer(): HTMLElement;
25
31
  getNpoPlayerElement(): Element | null;
26
32
  addClassToNpoPlayerElement(className: string): void | undefined;
27
33
  removeClassFromNpoPlayerElement(className: string): void | undefined;
34
+ toggleClassOnNpoPlayerElement(className: string, toggle: boolean): void | undefined;
28
35
  getCurrentTime(mode?: TimeMode | undefined): number;
36
+ getDuration(): number;
29
37
  getTimeShift(): number;
38
+ scheduleAds(adConfig: AdConfig): Promise<AdBreak[]>;
39
+ getActiveAdBreak(): AdBreak | null;
40
+ getConfig(mergedConfig?: boolean): PlayerConfig;
41
+ createUIManager(playerContext: PlayerContext, variant: NpoPlayerUIVariants): Promise<void | UIManager>;
30
42
  }
@@ -1,2 +1,2 @@
1
- import { Fragment, Segment } from 'types/interfaces';
1
+ import { Fragment, Segment } from '../../types/interfaces';
2
2
  export declare function convertFragmentToSegment(fragment: Fragment): Segment;
@@ -1,4 +1,4 @@
1
- import { PlayerContext, Segment } from 'types/interfaces';
1
+ import { PlayerContext, Segment } from '../../types/interfaces';
2
2
  export declare const handleSegmentSeek: (playerContext: PlayerContext, segment: Segment) => (e: any) => void;
3
3
  export declare const getSeekTarget: (event: any) => number;
4
4
  export declare const isSeekOutsideSegment: (seekTarget: number, segment: Segment) => boolean;
@@ -1,2 +1,2 @@
1
- import { PlayerContext, Segment } from 'types/interfaces';
1
+ import { PlayerContext, Segment } from '../../types/interfaces';
2
2
  export declare const handleSegmentTimeChanged: (playerContext: PlayerContext, segment: Segment) => (e: any) => void;
@@ -1,4 +1,4 @@
1
- import { Fragment, PlayerContext, Segment } from 'types/interfaces';
1
+ import { Fragment, PlayerContext, Segment } from '../../types/interfaces';
2
2
  type SegmentOrFragment = {
3
3
  segment?: Segment;
4
4
  fragment?: Fragment;
@@ -1,2 +1,2 @@
1
- import { Segment, TimeLineMarker } from 'types/interfaces';
1
+ import { Segment, TimeLineMarker } from '../../types/interfaces';
2
2
  export declare function setSegmentMarkers(segment: Segment, title: string): Array<TimeLineMarker>;
@@ -1,4 +1,4 @@
1
- import { ApiPayload, Fragment, PlayerContext, Profile, Segment, TimeLineMarker, LocalStorageData, LocalStorageValues } from 'types/interfaces';
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
3
  export declare class NpoPlayerServices {
4
4
  getAVType(avType: string): AVType;
@@ -11,4 +11,6 @@ export declare class NpoPlayerServices {
11
11
  getStoredUserPrefs(): LocalStorageData;
12
12
  handleUserPrefs(playerContext: PlayerContext): void;
13
13
  setAccessibilityAttributes(playerContext: PlayerContext): void;
14
+ schedulePreRolls(playerContext: PlayerContext): Promise<void>;
15
+ handleVerticalVideoControls(playerContext: PlayerContext, variant: NpoPlayerUIVariants): void;
14
16
  }
@@ -0,0 +1,2 @@
1
+ import { PlayerContext, NpoPlayerUIVariants } from '../../types/interfaces';
2
+ export declare const handleVerticalVideoControls: (playerContext: PlayerContext, variant: NpoPlayerUIVariants) => void;
@@ -1,4 +1,9 @@
1
- export declare enum PlayerEvent {
1
+ import { PlayerEvent } from 'bitmovin-player';
2
+ type PlayerEventMap = {
3
+ [key in NpoPlayerEvent]: PlayerEvent;
4
+ };
5
+ export type NpoPlayerEventCallback = (event: NpoPlayerEvent) => void;
6
+ export declare enum NpoPlayerEvent {
2
7
  Ready = "ready",
3
8
  Play = "play",
4
9
  Playing = "playing",
@@ -89,3 +94,5 @@ export declare enum PlayerEvent {
89
94
  DrmLicenseAdded = "drmlicenseadded",
90
95
  AspectRatioChanged = "aspectratiochanged"
91
96
  }
97
+ export declare const playerEventMap: PlayerEventMap;
98
+ export {};
@@ -1,9 +1,10 @@
1
- import { PlayerEventCallback, type SourceConfig } from 'bitmovin-player';
2
1
  import { type ErrorMessageOverlay, type Label, ControlBar, SettingsPanelItem, Button, SeekBar, CastToggleButton, SettingsPanel } from 'bitmovin-player-ui';
3
2
  import { type NPOTag, type PageTracker } from '@npotag/tag';
4
3
  import { ButtonConfig } from 'bitmovin-player-ui/dist/js/framework/components/button';
5
4
  import NpoPlayer from '../npoplayer';
6
5
  import { NpoPlayerAPI } from '../services/npoPlayerAPI/npoPlayerAPI';
6
+ import { NpoPlayerEventCallback } from './events';
7
+ import { SourceConfig } from 'bitmovin-player';
7
8
  export { Technology } from 'bitmovin-player';
8
9
  export interface Profile {
9
10
  profileName: string;
@@ -15,9 +16,9 @@ export interface Segment {
15
16
  duration: number;
16
17
  }
17
18
  export interface EventListeners {
18
- liveStreamHandleTimeChangedCallback?: PlayerEventCallback;
19
- segmentHandleTimeChangedCallback?: PlayerEventCallback;
20
- segmentSeekFunctionCallback?: PlayerEventCallback;
19
+ liveStreamHandleTimeChangedCallback?: NpoPlayerEventCallback;
20
+ segmentHandleTimeChangedCallback?: NpoPlayerEventCallback;
21
+ segmentSeekFunctionCallback?: NpoPlayerEventCallback;
21
22
  }
22
23
  export interface StreamObject {
23
24
  stream: StreamObject_Stream;
@@ -76,19 +77,12 @@ interface StreamObject_Assets {
76
77
  }
77
78
  export interface StreamObject_Metadata {
78
79
  broadcaster?: string;
79
- broadcasters?: string[];
80
- country?: string[];
81
- credits?: string[];
82
80
  description: string;
83
81
  duration?: string;
84
- genre?: string[];
85
- isDubbed?: boolean;
86
- language?: string[];
87
82
  nicam?: string[] | null;
88
83
  poster?: string;
89
84
  posterIsDefault?: boolean;
90
85
  prid?: string;
91
- sourceIP?: string;
92
86
  ageRating?: string;
93
87
  title: string;
94
88
  hasPreroll?: string;
@@ -117,6 +111,7 @@ export interface StreamOptions {
117
111
  useWidevineServerCertificate?: boolean;
118
112
  customFallbackPoster?: string;
119
113
  autoFillTimeLineMarkerDuration?: boolean;
114
+ autoplay?: boolean;
120
115
  }
121
116
  export interface UIComponents {
122
117
  errorMessageOverlay?: ErrorMessageOverlay;
@@ -127,7 +122,7 @@ export interface UIComponents {
127
122
  subtitlesButton?: SettingsPanelItem | undefined;
128
123
  qualityButton?: SettingsPanelItem | undefined;
129
124
  watchFromStartButton?: Button<ButtonConfig> | undefined;
130
- controlbar?: ControlBar | undefined;
125
+ controlBar?: ControlBar | undefined;
131
126
  adbutton?: Button<ButtonConfig> | undefined;
132
127
  adlabel?: Label<{
133
128
  text: string;
@@ -178,6 +173,7 @@ export declare enum CustomMessages {
178
173
  export declare enum NpoPlayerUIVariants {
179
174
  DEFAULT = "default",
180
175
  AUDIO = "audio",
176
+ VERTICAL = "vertical",
181
177
  AD = "ad"
182
178
  }
183
179
  export declare enum ViewMode {
@@ -1,3 +1,3 @@
1
1
  import { ControlBar } from 'bitmovin-player-ui';
2
2
  import type NpoPlayer from '../../../npoplayer';
3
- export declare function createAudioControlBar(npoplayer: NpoPlayer): ControlBar;
3
+ export declare function createAudioControlBar(npoPlayer: NpoPlayer): ControlBar;
@@ -1,3 +1,3 @@
1
1
  import { ControlBar } from 'bitmovin-player-ui';
2
2
  import type NpoPlayer from '../../npoplayer';
3
- export declare function createControlBar(npoplayer: NpoPlayer): ControlBar;
3
+ export declare function createControlBar(npoPlayer: NpoPlayer): ControlBar;
@@ -1,6 +1,6 @@
1
1
  import { Container, PlaybackTimeLabel, SeekBar } from 'bitmovin-player-ui';
2
2
  import type NpoPlayer from '../../npoplayer';
3
3
  export declare function createSeekBar(npoplayer: NpoPlayer): Container<{
4
- components: (PlaybackTimeLabel | SeekBar)[];
4
+ components: (SeekBar | PlaybackTimeLabel)[];
5
5
  cssClasses: string[];
6
6
  }>;
@@ -1,4 +1,4 @@
1
1
  import { SettingsPanel } from 'bitmovin-player-ui';
2
2
  import type NpoPlayer from '../../npoplayer';
3
3
  import { PlayerAPI } from 'bitmovin-player';
4
- export declare function createSettingsPanel(npoplayer: NpoPlayer | PlayerAPI): SettingsPanel;
4
+ export declare function createSettingsPanel(npoPlayer: NpoPlayer | PlayerAPI): SettingsPanel;
@@ -0,0 +1,3 @@
1
+ import { ControlBar } from 'bitmovin-player-ui';
2
+ import type NpoPlayer from '../../../npoplayer';
3
+ export declare function createVerticalVideoControlBar(npoPlayer: NpoPlayer): ControlBar;
@@ -1,4 +1,2 @@
1
- import { PlayerContext, type StreamObject, type StreamOptions } from '../../types/interfaces';
2
- import { PlayerAPI, SourceConfig } from 'bitmovin-player';
3
- import { UIManager } from 'bitmovin-player-ui';
4
- export declare function processStream(streamObject: StreamObject | undefined, container: HTMLElement, streamOptions: StreamOptions | undefined, player: PlayerAPI, uiManager: UIManager | undefined, sourceConfig: SourceConfig, playerContext: PlayerContext): void;
1
+ import { PlayerContext } from '../../types/interfaces';
2
+ export declare function processStream(playerContext: PlayerContext): void;
@@ -1,5 +1,5 @@
1
- import type NpoPlayer from '../npoplayer';
1
+ import NpoPlayer from '../npoplayer';
2
2
  import { UIContainer } from 'bitmovin-player-ui';
3
3
  import { PlayerAPI } from 'bitmovin-player';
4
4
  import { NpoPlayerUIVariants } from '../types/interfaces';
5
- export declare function createUIContainer(npoplayer: NpoPlayer, player: PlayerAPI, variant: NpoPlayerUIVariants, container: HTMLElement): UIContainer;
5
+ export declare function createUIContainer(npoPlayer: NpoPlayer, player: PlayerAPI, variant: NpoPlayerUIVariants, container: HTMLElement): UIContainer;
@@ -37,7 +37,6 @@ export const mockNpoPlayer = {
37
37
  container: document.createElement('div'),
38
38
  initPlayer: jest.fn(),
39
39
  loadStream: jest.fn(),
40
- createUIManager: jest.fn(),
41
40
  doError: jest.fn(),
42
41
  player: {
43
42
  getCurrentTime: jest.fn().mockReturnValue(10)
@@ -0,0 +1,67 @@
1
+ /// <reference types="jest" />
2
+ import { NpoPlayerAPI } from '../../src/services/npoPlayerAPI/npoPlayerAPI';
3
+ import { PlayerContext, StreamObject } from '../../src/types/interfaces';
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
+ jwt: string;
20
+ apiPayload: {
21
+ baseURL: string;
22
+ jwt: string;
23
+ data: {};
24
+ };
25
+ adBreakActive: boolean;
26
+ version: string;
27
+ drmProfile: {
28
+ profileName: string;
29
+ drm: string;
30
+ };
31
+ variant: string;
32
+ isShowingPlayNextScreen: boolean;
33
+ canceledPlayNextScreen: boolean;
34
+ playerContext: undefined;
35
+ npoplayerServices: {
36
+ getStoredUserPrefs: jest.Mock<any, any, any>;
37
+ handleUserPrefs: jest.Mock<any, any, any>;
38
+ setAccessibilityAttributes: jest.Mock<any, any, any>;
39
+ keyboardHandler: jest.Mock<any, any, any>;
40
+ decideProfile: jest.Mock<any, any, any>;
41
+ verifyDRM: jest.Mock<any, any, any>;
42
+ };
43
+ eventListeners: undefined;
44
+ mockNpoPlayer: undefined;
45
+ userPreferences: {};
46
+ initPlayer: jest.Mock<any, any, any>;
47
+ loadStream: jest.Mock<any, any, any>;
48
+ doError: jest.Mock<any, any, any>;
49
+ play: jest.Mock<any, any, any>;
50
+ pause: jest.Mock<any, any, any>;
51
+ setVolume: jest.Mock<any, any, any>;
52
+ increaseVolume: jest.Mock<any, any, any>;
53
+ decreaseVolume: jest.Mock<any, any, any>;
54
+ goForward: jest.Mock<any, any, any>;
55
+ goBackwards: jest.Mock<any, any, any>;
56
+ watchFromStart: jest.Mock<any, any, any>;
57
+ showPlayNextScreen: jest.Mock<any, any, any>;
58
+ updateMarkers: jest.Mock<any, any, any>;
59
+ cancelPlayNextScreen: jest.Mock<any, any, any>;
60
+ hidePlayNextScreen: jest.Mock<any, any, any>;
61
+ doPlayNext: jest.Mock<any, any, any>;
62
+ destroy: jest.Mock<any, any, any>;
63
+ unload: jest.Mock<any, any, any>;
64
+ printVersion: jest.Mock<any, any, any>;
65
+ };
66
+ export declare const createPlayerContextMock: (overrides?: {}) => PlayerContext;
67
+ export default createPlayerContextMock;
@@ -0,0 +1,117 @@
1
+ import { VOLUME_MAX, VOLUME_MIN, VOLUME_STEP } from '../../src/services/npoPlayerAPI/contants';
2
+ import { mockPlayerAPI } from './mockPlayerAPI';
3
+ let volume = 50;
4
+ const setVolume = jest.fn((level) => {
5
+ volume = Math.max(VOLUME_MIN, Math.min(VOLUME_MAX, level));
6
+ });
7
+ export const createMockNpoPlayerAPI = (overrides = {}) => ({
8
+ playerAPI: mockPlayerAPI,
9
+ load: jest.fn(),
10
+ play: jest.fn(),
11
+ pause: jest.fn(),
12
+ mute: jest.fn(),
13
+ unmute: jest.fn(),
14
+ getVolume: jest.fn(() => {
15
+ return volume;
16
+ }),
17
+ setVolume: setVolume,
18
+ increaseVolume: jest.fn(() => {
19
+ setVolume(volume + VOLUME_STEP);
20
+ }),
21
+ decreaseVolume: jest.fn(() => {
22
+ setVolume(volume - VOLUME_STEP);
23
+ }),
24
+ setViewMode: jest.fn(),
25
+ getViewMode: jest.fn(),
26
+ areSubtitlesEnabled: jest.fn().mockReturnValue(false),
27
+ enableSubtitles: jest.fn(),
28
+ isPaused: jest.fn().mockReturnValue(false),
29
+ isMuted: jest.fn().mockReturnValue(false),
30
+ isLive: jest.fn().mockReturnValue(false),
31
+ getSupportedDRM: jest.fn().mockResolvedValue([]),
32
+ getSupportedTech: jest.fn().mockReturnValue([]),
33
+ off: jest.fn(),
34
+ on: jest.fn(),
35
+ seek: jest.fn(),
36
+ timeShift: jest.fn(),
37
+ getContainer: jest.fn(),
38
+ getNpoPlayerElement: jest.fn(),
39
+ addClassToNpoPlayerElement: jest.fn(),
40
+ removeClassFromNpoPlayerElement: jest.fn(),
41
+ toggleClassOnNpoPlayerElement: jest.fn(),
42
+ getCurrentTime: jest.fn().mockReturnValue(0),
43
+ getDuration: jest.fn().mockReturnValue(0),
44
+ getTimeShift: jest.fn().mockReturnValue(0),
45
+ scheduleAds: jest.fn().mockResolvedValue([]),
46
+ getActiveAdBreak: jest.fn().mockReturnValue(undefined),
47
+ getConfig: jest.fn().mockReturnValue({}),
48
+ createUIManager: jest.fn(),
49
+ ...overrides
50
+ });
51
+ export const createMockNpoPlayer = (overrides = {}) => ({
52
+ playerConfig: {},
53
+ sourceConfig: {},
54
+ streamObject: {
55
+ stream: { drmToken: undefined },
56
+ metadata: {
57
+ title: 'dummy-title',
58
+ description: 'dummy-description'
59
+ },
60
+ assets: {},
61
+ user: 'dummy'
62
+ },
63
+ player: createMockNpoPlayerAPI(),
64
+ uiManager: undefined,
65
+ npoTag: undefined,
66
+ streamTracker: undefined,
67
+ logEmitter: { emit: jest.fn() },
68
+ uiComponents: {},
69
+ container: document.createElement('div'),
70
+ streamOptions: {},
71
+ jwt: '',
72
+ apiPayload: { baseURL: '', jwt: '', data: {} },
73
+ adBreakActive: false,
74
+ version: '1.0.0',
75
+ drmProfile: { profileName: '', drm: '' },
76
+ variant: 'DEFAULT',
77
+ isShowingPlayNextScreen: false,
78
+ canceledPlayNextScreen: false,
79
+ playerContext: undefined,
80
+ npoplayerServices: {
81
+ getStoredUserPrefs: jest.fn(),
82
+ handleUserPrefs: jest.fn(),
83
+ setAccessibilityAttributes: jest.fn(),
84
+ keyboardHandler: jest.fn(),
85
+ decideProfile: jest.fn(),
86
+ verifyDRM: jest.fn()
87
+ },
88
+ eventListeners: undefined,
89
+ mockNpoPlayer: undefined,
90
+ userPreferences: {},
91
+ initPlayer: jest.fn(),
92
+ loadStream: jest.fn(),
93
+ doError: jest.fn(),
94
+ play: jest.fn(),
95
+ pause: jest.fn(),
96
+ setVolume: jest.fn(),
97
+ increaseVolume: jest.fn(),
98
+ decreaseVolume: jest.fn(),
99
+ goForward: jest.fn(),
100
+ goBackwards: jest.fn(),
101
+ watchFromStart: jest.fn(),
102
+ showPlayNextScreen: jest.fn(),
103
+ updateMarkers: jest.fn(),
104
+ cancelPlayNextScreen: jest.fn(),
105
+ hidePlayNextScreen: jest.fn(),
106
+ doPlayNext: jest.fn(),
107
+ destroy: jest.fn(),
108
+ unload: jest.fn(),
109
+ printVersion: jest.fn(),
110
+ ...overrides
111
+ });
112
+ export const createPlayerContextMock = (overrides = {}) => ({
113
+ player: createMockNpoPlayerAPI(),
114
+ npoplayer: createMockNpoPlayer(),
115
+ ...overrides
116
+ });
117
+ export default createPlayerContextMock;
@@ -1,4 +1,9 @@
1
- export declare enum PlayerEvent {
1
+ import { PlayerEvent } from 'bitmovin-player';
2
+ type PlayerEventMap = {
3
+ [key in NpoPlayerEvent]: PlayerEvent;
4
+ };
5
+ export type NpoPlayerEventCallback = (event: NpoPlayerEvent) => void;
6
+ export declare enum NpoPlayerEvent {
2
7
  Ready = "ready",
3
8
  Play = "play",
4
9
  Playing = "playing",
@@ -89,3 +94,5 @@ export declare enum PlayerEvent {
89
94
  DrmLicenseAdded = "drmlicenseadded",
90
95
  AspectRatioChanged = "aspectratiochanged"
91
96
  }
97
+ export declare const playerEventMap: PlayerEventMap;
98
+ export {};