@npo/player 1.17.1 → 1.18.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 (154) hide show
  1. package/README.md +2 -1
  2. package/lib/js/ads/ster.js +1 -2
  3. package/lib/js/ads/ster.test.js +0 -1
  4. package/lib/js/api/getstreamobject.js +0 -1
  5. package/lib/js/api/getstreamobject.test.js +0 -1
  6. package/lib/js/cdnproviders.js +10 -7
  7. package/lib/js/checks/apple.js +0 -1
  8. package/lib/js/checks/apple.test.js +0 -1
  9. package/lib/js/drm/drm.js +0 -1
  10. package/lib/js/drm/handlers/decideprofile.js +0 -1
  11. package/lib/js/drm/handlers/verifydrm.js +0 -1
  12. package/lib/js/drm/handlers/verifydrm.test.js +0 -1
  13. package/lib/js/fragments/removefragments.js +0 -1
  14. package/lib/js/fragments/setfragments.js +0 -1
  15. package/lib/js/playeractions/customerrors.test.js +0 -1
  16. package/lib/js/playeractions/handlers/customerrors.js +0 -1
  17. package/lib/js/playeractions/handlers/error.js +0 -1
  18. package/lib/js/playeractions/handlers/error.test.js +0 -1
  19. package/lib/js/playeractions/handlers/handleoffsets.js +0 -1
  20. package/lib/js/playeractions/handlers/handleoffsets.test.js +0 -1
  21. package/lib/js/playeractions/handlers/mediasessionactions.js +0 -1
  22. package/lib/js/playeractions/handlers/processplayerconfig.js +0 -1
  23. package/lib/js/playeractions/handlers/processsourceconfig.js +10 -6
  24. package/lib/js/playeractions/handlers/resolvekeypress.js +0 -1
  25. package/lib/js/playeractions/playeractions.js +0 -1
  26. package/lib/js/tracking/handlers/eventbinding.js +1 -3
  27. package/lib/js/tracking/handlers/eventlogging.js +0 -1
  28. package/lib/js/tracking/handlers/playertrackerinit.js +0 -1
  29. package/lib/js/tracking/handlers/playertrackerstart.js +0 -1
  30. package/lib/js/tracking/playertracker.js +0 -1
  31. package/lib/js/ui/components/adbutton.js +0 -1
  32. package/lib/js/ui/components/adlabel.js +0 -1
  33. package/lib/js/ui/components/audio/controlbar.js +0 -1
  34. package/lib/js/ui/components/buttons.d.ts +6 -0
  35. package/lib/js/ui/components/buttons.js +16 -3
  36. package/lib/js/ui/components/controlbar.js +0 -1
  37. package/lib/js/ui/components/ctabar.js +0 -1
  38. package/lib/js/ui/components/nativemobile/addFragments.js +0 -1
  39. package/lib/js/ui/components/nativemobile/buttons.js +0 -1
  40. package/lib/js/ui/components/nativemobile/controlbar.js +0 -1
  41. package/lib/js/ui/components/nativemobile/ctabar.js +0 -1
  42. package/lib/js/ui/components/nativemobile/playnext.js +0 -7
  43. package/lib/js/ui/components/nativemobile/titlebar.js +0 -1
  44. package/lib/js/ui/components/nativemobile/topbar.js +0 -1
  45. package/lib/js/ui/components/playnext.js +3 -3
  46. package/lib/js/ui/components/seekbar.js +0 -1
  47. package/lib/js/ui/components/settingspanel.js +0 -1
  48. package/lib/js/ui/components/shared/playnextscreen.d.ts +2 -2
  49. package/lib/js/ui/components/shared/playnextscreen.js +30 -13
  50. package/lib/js/ui/components/titlebar.js +0 -1
  51. package/lib/js/ui/components/topbar.js +0 -1
  52. package/lib/js/ui/handlers/accessibilityhandler.js +0 -1
  53. package/lib/js/ui/handlers/listboxhandlers.js +0 -1
  54. package/lib/js/ui/handlers/nicamhandler.d.ts +1 -1
  55. package/lib/js/ui/handlers/nicamhandler.js +1 -3
  56. package/lib/js/ui/handlers/nicamhandler.test.js +10 -15
  57. package/lib/js/ui/handlers/playnexthandlers.js +0 -1
  58. package/lib/js/ui/handlers/streamhandler.d.ts +3 -3
  59. package/lib/js/ui/handlers/streamhandler.js +4 -5
  60. package/lib/js/ui/handlers/timecontrolhandlers.js +0 -1
  61. package/lib/js/ui/nativemobileuicontainer.js +0 -1
  62. package/lib/js/ui/nativemobileuifactory.js +1 -2
  63. package/lib/js/ui/uicontainer.js +0 -1
  64. package/lib/js/utilities/localizationconfig.js +0 -1
  65. package/lib/js/utilities/printversion.js +0 -1
  66. package/lib/js/utilities/utilities.js +0 -1
  67. package/lib/js/utilities/utilities.test.js +0 -1
  68. package/lib/npoplayer.d.ts +3 -0
  69. package/lib/npoplayer.js +38 -8
  70. package/lib/npoplayer.test.js +0 -1
  71. package/lib/package.json +1 -1
  72. package/lib/src/js/ui/components/buttons.d.ts +6 -0
  73. package/lib/src/js/ui/components/shared/playnextscreen.d.ts +2 -2
  74. package/lib/src/js/ui/handlers/nicamhandler.d.ts +1 -1
  75. package/lib/src/js/ui/handlers/streamhandler.d.ts +3 -3
  76. package/lib/src/npoplayer.d.ts +3 -0
  77. package/lib/src/types/interfaces.d.ts +8 -1
  78. package/lib/types/classes.js +0 -1
  79. package/lib/types/interfaces.d.ts +8 -1
  80. package/lib/types/interfaces.js +0 -1
  81. package/package.json +1 -1
  82. package/src/scss/components/_playnext.scss +21 -33
  83. package/src/scss/components/_subtitles.scss +16 -0
  84. package/src/scss/components/_textbuttons.scss +18 -18
  85. package/src/scss/npoplayer.css +16 -11
  86. package/src/scss/variants/_player-large.scss +10 -0
  87. package/src/scss/variants/_player-medium.scss +6 -0
  88. package/src/scss/variants/_player-small.scss +6 -0
  89. package/lib/js/ads/ster.js.map +0 -1
  90. package/lib/js/ads/ster.test.js.map +0 -1
  91. package/lib/js/api/getstreamobject.js.map +0 -1
  92. package/lib/js/api/getstreamobject.test.js.map +0 -1
  93. package/lib/js/cdnproviders.js.map +0 -1
  94. package/lib/js/checks/apple.js.map +0 -1
  95. package/lib/js/checks/apple.test.js.map +0 -1
  96. package/lib/js/drm/drm.js.map +0 -1
  97. package/lib/js/drm/handlers/decideprofile.js.map +0 -1
  98. package/lib/js/drm/handlers/verifydrm.js.map +0 -1
  99. package/lib/js/drm/handlers/verifydrm.test.js.map +0 -1
  100. package/lib/js/fragments/removefragments.js.map +0 -1
  101. package/lib/js/fragments/setfragments.js.map +0 -1
  102. package/lib/js/playeractions/customerrors.test.js.map +0 -1
  103. package/lib/js/playeractions/handlers/customerrors.js.map +0 -1
  104. package/lib/js/playeractions/handlers/error.js.map +0 -1
  105. package/lib/js/playeractions/handlers/error.test.js.map +0 -1
  106. package/lib/js/playeractions/handlers/handleoffsets.js.map +0 -1
  107. package/lib/js/playeractions/handlers/handleoffsets.test.js.map +0 -1
  108. package/lib/js/playeractions/handlers/mediasessionactions.js.map +0 -1
  109. package/lib/js/playeractions/handlers/processplayerconfig.js.map +0 -1
  110. package/lib/js/playeractions/handlers/processsourceconfig.js.map +0 -1
  111. package/lib/js/playeractions/handlers/resolvekeypress.js.map +0 -1
  112. package/lib/js/playeractions/playeractions.js.map +0 -1
  113. package/lib/js/tracking/handlers/eventbinding.js.map +0 -1
  114. package/lib/js/tracking/handlers/eventlogging.js.map +0 -1
  115. package/lib/js/tracking/handlers/playertrackerinit.js.map +0 -1
  116. package/lib/js/tracking/handlers/playertrackerstart.js.map +0 -1
  117. package/lib/js/tracking/playertracker.js.map +0 -1
  118. package/lib/js/ui/components/adbutton.js.map +0 -1
  119. package/lib/js/ui/components/adlabel.js.map +0 -1
  120. package/lib/js/ui/components/audio/controlbar.js.map +0 -1
  121. package/lib/js/ui/components/buttons.js.map +0 -1
  122. package/lib/js/ui/components/controlbar.js.map +0 -1
  123. package/lib/js/ui/components/ctabar.js.map +0 -1
  124. package/lib/js/ui/components/nativemobile/addFragments.js.map +0 -1
  125. package/lib/js/ui/components/nativemobile/buttons.js.map +0 -1
  126. package/lib/js/ui/components/nativemobile/controlbar.js.map +0 -1
  127. package/lib/js/ui/components/nativemobile/ctabar.js.map +0 -1
  128. package/lib/js/ui/components/nativemobile/playnext.js.map +0 -1
  129. package/lib/js/ui/components/nativemobile/titlebar.js.map +0 -1
  130. package/lib/js/ui/components/nativemobile/topbar.js.map +0 -1
  131. package/lib/js/ui/components/playnext.js.map +0 -1
  132. package/lib/js/ui/components/seekbar.js.map +0 -1
  133. package/lib/js/ui/components/settingspanel.js.map +0 -1
  134. package/lib/js/ui/components/shared/playnextscreen.js.map +0 -1
  135. package/lib/js/ui/components/titlebar.js.map +0 -1
  136. package/lib/js/ui/components/topbar.js.map +0 -1
  137. package/lib/js/ui/handlers/accessibilityhandler.js.map +0 -1
  138. package/lib/js/ui/handlers/listboxhandlers.js.map +0 -1
  139. package/lib/js/ui/handlers/nicamhandler.js.map +0 -1
  140. package/lib/js/ui/handlers/nicamhandler.test.js.map +0 -1
  141. package/lib/js/ui/handlers/playnexthandlers.js.map +0 -1
  142. package/lib/js/ui/handlers/streamhandler.js.map +0 -1
  143. package/lib/js/ui/handlers/timecontrolhandlers.js.map +0 -1
  144. package/lib/js/ui/nativemobileuicontainer.js.map +0 -1
  145. package/lib/js/ui/nativemobileuifactory.js.map +0 -1
  146. package/lib/js/ui/uicontainer.js.map +0 -1
  147. package/lib/js/utilities/localizationconfig.js.map +0 -1
  148. package/lib/js/utilities/printversion.js.map +0 -1
  149. package/lib/js/utilities/utilities.js.map +0 -1
  150. package/lib/js/utilities/utilities.test.js.map +0 -1
  151. package/lib/npoplayer.js.map +0 -1
  152. package/lib/npoplayer.test.js.map +0 -1
  153. package/lib/types/classes.js.map +0 -1
  154. package/lib/types/interfaces.js.map +0 -1
@@ -36,7 +36,7 @@ export function nativeMobileUiFactory(player, config = {}) {
36
36
  };
37
37
  const updateUI = () => {
38
38
  if (_streamObject.metadata?.ageRating) {
39
- processNicam(_streamObject, 'ui-container', null);
39
+ processNicam(_streamObject, document.querySelector('#ui-container .bmpui-nicam'), null);
40
40
  }
41
41
  const isLiveStream = _streamObject.stream?.isLiveStream && _streamObject.stream?.hasDvrWindow;
42
42
  if (isLiveStream) {
@@ -93,4 +93,3 @@ export function nativeMobileUiFactory(player, config = {}) {
93
93
  });
94
94
  return mobileUIManager;
95
95
  }
96
- //# sourceMappingURL=nativemobileuifactory.js.map
@@ -77,4 +77,3 @@ export function createUIContainer(npoplayer, player, variant, container) {
77
77
  hideDelay: uiDelay
78
78
  });
79
79
  }
80
- //# sourceMappingURL=uicontainer.js.map
@@ -5,4 +5,3 @@ export const localizationConfig = {
5
5
  nl: nlJson.default
6
6
  }
7
7
  };
8
- //# sourceMappingURL=localizationconfig.js.map
@@ -24,4 +24,3 @@ export function printVersion(version) {
24
24
  const versionStyle = 'font-size: 24px; font-weight: bold; padding: 2px 4px;';
25
25
  console.log(`%c${asciiArt}%c${title} %c${versionString}`, `color: ${colorCode}; background-color: rgb(11, 28, 54);`, titleStyle, versionStyle);
26
26
  }
27
- //# sourceMappingURL=printversion.js.map
@@ -68,4 +68,3 @@ export async function isMediaUrl(url) {
68
68
  export function replaceSpecialChars(text) {
69
69
  return text.replace(/['()*]/g, (char) => `%${char.charCodeAt(0).toString(16).toUpperCase()}`);
70
70
  }
71
- //# sourceMappingURL=utilities.js.map
@@ -48,4 +48,3 @@ describe('isUrl', () => {
48
48
  expect(isUrl(invalidUrl)).toBe(false);
49
49
  });
50
50
  });
51
- //# sourceMappingURL=utilities.test.js.map
@@ -24,6 +24,8 @@ export default class NpoPlayer {
24
24
  version: string;
25
25
  drmProfile: DRMProfile;
26
26
  variant: NpoPlayerUIVariants;
27
+ isShowingPlayNextScreen: boolean;
28
+ canceledPlayNextScreen: boolean;
27
29
  constructor(_container: HTMLElement, _playerConfig: PlayerConfig, _npotag?: InitialisationProps | null, _npotaginstance?: NPOTag | undefined, _variant?: NpoPlayerUIVariants);
28
30
  initPlayer(_container: HTMLElement, playerConfig: PlayerConfig, variant: NpoPlayerUIVariants): void;
29
31
  loadStream(source: string, options?: StreamOptions): Promise<void>;
@@ -37,6 +39,7 @@ export default class NpoPlayer {
37
39
  goBackwards(seconds: number): void;
38
40
  watchFromStart(): void;
39
41
  showPlayNextScreen(): void;
42
+ cancelPlayNextScreen(): void;
40
43
  hidePlayNextScreen(): void;
41
44
  doPlayNext(): void;
42
45
  destroy(): boolean;
package/lib/npoplayer.js CHANGED
@@ -43,6 +43,8 @@ export default class NpoPlayer {
43
43
  initPlayerTracker(this, _npotag, _npotaginstance);
44
44
  this.logEmitter = new LogEmitter();
45
45
  this.uiComponents = {};
46
+ this.isShowingPlayNextScreen = false;
47
+ this.canceledPlayNextScreen = false;
46
48
  this.initPlayer(this.container, _playerConfig, this.variant);
47
49
  }
48
50
  initPlayer(_container, playerConfig, variant) {
@@ -55,6 +57,7 @@ export default class NpoPlayer {
55
57
  }, true);
56
58
  }
57
59
  async loadStream(source, options = {}) {
60
+ this.streamOptions = options;
58
61
  if (this.player == null) {
59
62
  console.error('Er is nog geen player geladen.');
60
63
  return;
@@ -118,17 +121,25 @@ export default class NpoPlayer {
118
121
  this.player.on(PlayerEvent.AdBreakFinished, () => { void addAccessibilityAttributes(this.container, this.streamObject.metadata); });
119
122
  if (this.sourceConfig?.metadata) {
120
123
  this.sourceConfig.metadata.jwt = source;
121
- this.sourceConfig.metadata.av_type = this.streamObject.stream.avType;
124
+ this.sourceConfig.metadata.streamLinkAsJsonString = JSON.stringify(this.streamObject);
122
125
  this.sourceConfig.metadata.npoTagSession = String(this.npoTag?.npoTagInstance?.getSerializedSessionInfo());
123
126
  }
124
- this.player.off(PlayerEvent.PlaybackFinished, () => {
127
+ this.player.off(PlayerEvent.TimeChanged, () => {
125
128
  this.showPlayNextScreen();
126
129
  });
127
- if (options?.prid != null) {
128
- this.player.on(PlayerEvent.PlaybackFinished, () => {
130
+ this.player.off(PlayerEvent.Paused, () => {
131
+ this.hidePlayNextScreen();
132
+ });
133
+ if (options?.playNext?.showPlayNext === true) {
134
+ this.player.on(PlayerEvent.TimeChanged, () => {
129
135
  this.showPlayNextScreen();
130
136
  });
137
+ this.player.on(PlayerEvent.Paused, () => {
138
+ this.hidePlayNextScreen();
139
+ });
131
140
  }
141
+ if (options?.startOffset != null)
142
+ playerAction.handleStartOffset(this.player, options.startOffset);
132
143
  const setLiveOffsetListener = function () {
133
144
  if (this.player === null)
134
145
  return;
@@ -206,20 +217,40 @@ export default class NpoPlayer {
206
217
  playerAction.shiftToProgramStart(this.player, this.streamOptions.liveProgramTime);
207
218
  }
208
219
  showPlayNextScreen() {
209
- showPlayNextScreen(this.doPlayNext.bind(this));
220
+ if (this.player == null || !this.streamOptions.playNext?.showPlayNext)
221
+ return;
222
+ const videoDuration = this.player.getDuration();
223
+ const overlayDuration = this.streamOptions.playNext?.duration || 10;
224
+ const offset = this.streamOptions.playNext?.offset || overlayDuration;
225
+ const showPlayNextAt = videoDuration - offset;
226
+ if (!this.isShowingPlayNextScreen && this.player.getCurrentTime() > showPlayNextAt && !this.canceledPlayNextScreen) {
227
+ this.isShowingPlayNextScreen = true;
228
+ showPlayNextScreen(overlayDuration, this.container, this.streamOptions.playNext?.proceedCallback);
229
+ }
230
+ else if (this.isShowingPlayNextScreen && this.player.getCurrentTime() < showPlayNextAt) {
231
+ this.isShowingPlayNextScreen = false;
232
+ hidePlayNextScreen(this.container);
233
+ }
234
+ }
235
+ cancelPlayNextScreen() {
236
+ this.canceledPlayNextScreen = true;
237
+ this.hidePlayNextScreen();
238
+ void this.streamOptions.playNext?.cancelCallback?.();
210
239
  }
211
240
  hidePlayNextScreen() {
212
- hidePlayNextScreen();
241
+ this.isShowingPlayNextScreen = false;
242
+ hidePlayNextScreen(this.container);
213
243
  }
214
244
  doPlayNext() {
215
245
  this.hidePlayNextScreen();
216
- void this.loadStream(this.jwt, this.streamOptions);
246
+ void this.streamOptions.playNext?.proceedCallback?.();
217
247
  }
218
248
  destroy() {
219
249
  try {
220
250
  if (this.npoTag != null) {
221
251
  clearInterval(this.npoTag.heartbeatInterval);
222
252
  }
253
+ logEvent(this, 'stop');
223
254
  this.uiManager?.release();
224
255
  void this.player?.destroy();
225
256
  return true;
@@ -252,4 +283,3 @@ window.bitmovin.playerui.UIFactory = {
252
283
  return nativeMobileUiFactory(player, config);
253
284
  }
254
285
  };
255
- //# sourceMappingURL=npoplayer.js.map
@@ -12,4 +12,3 @@ test("player init", async () => {
12
12
  expect(player).toBeInstanceOf(NpoPlayer);
13
13
  expect(player.playerConfig.key).toBe(testPlayerConfig.key);
14
14
  });
15
- //# sourceMappingURL=npoplayer.test.js.map
package/lib/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@npo/player",
3
- "version": "1.17.1",
3
+ "version": "1.18.0",
4
4
  "description": "NPO Player",
5
5
  "author": "Publieke Omroep <player@npo.nl>",
6
6
  "contributors": [
@@ -16,6 +16,12 @@ export declare function createPlayNextButton(player: PlayerAPI, npoplayer: NpoPl
16
16
  ariaLabel: string;
17
17
  hidden: false;
18
18
  }>;
19
+ export declare function createCancelPlayNextButton(player: PlayerAPI, npoplayer: NpoPlayer): Button<{
20
+ cssClass: string;
21
+ text: string;
22
+ ariaLabel: string;
23
+ hidden: false;
24
+ }>;
19
25
  export declare function createskipIntroButton(player: PlayerAPI): Button<{
20
26
  cssClass: string;
21
27
  text: string;
@@ -1,2 +1,2 @@
1
- export declare function showPlayNextScreen(playNextFunction: () => void): void;
2
- export declare function hidePlayNextScreen(): void;
1
+ export declare function showPlayNextScreen(overlayDuration: number, containerEl: HTMLElement, proceedCallBack?: () => void): void;
2
+ export declare function hidePlayNextScreen(containerEl: HTMLElement): void;
@@ -1,3 +1,3 @@
1
1
  import { StreamObject, StreamOptions } from 'types/interfaces';
2
- export declare function processNicam(streamObject: StreamObject, containerId: string, streamOptions: StreamOptions | null): void;
2
+ export declare function processNicam(streamObject: StreamObject, nicamElement: HTMLElement | null, streamOptions: StreamOptions | null): void;
3
3
  export declare function addNicamIcon(character: string, nicamElement: Element): void;
@@ -1,4 +1,4 @@
1
- import { type StreamObject, type StreamOptions } from "../../../types/interfaces";
2
- import { PlayerAPI, SourceConfig } from "bitmovin-player";
3
- import { UIManager } from "bitmovin-player-ui";
1
+ import { type StreamObject, type StreamOptions } from '../../../types/interfaces';
2
+ import { PlayerAPI, SourceConfig } from 'bitmovin-player';
3
+ import { UIManager } from 'bitmovin-player-ui';
4
4
  export declare function processStream(streamObject: StreamObject | undefined, container: HTMLElement, streamOptions: StreamOptions | null, player: PlayerAPI, uiManager: UIManager, sourceConfig: SourceConfig): void;
@@ -24,6 +24,8 @@ export default class NpoPlayer {
24
24
  version: string;
25
25
  drmProfile: DRMProfile;
26
26
  variant: NpoPlayerUIVariants;
27
+ isShowingPlayNextScreen: boolean;
28
+ canceledPlayNextScreen: boolean;
27
29
  constructor(_container: HTMLElement, _playerConfig: PlayerConfig, _npotag?: InitialisationProps | null, _npotaginstance?: NPOTag | undefined, _variant?: NpoPlayerUIVariants);
28
30
  initPlayer(_container: HTMLElement, playerConfig: PlayerConfig, variant: NpoPlayerUIVariants): void;
29
31
  loadStream(source: string, options?: StreamOptions): Promise<void>;
@@ -37,6 +39,7 @@ export default class NpoPlayer {
37
39
  goBackwards(seconds: number): void;
38
40
  watchFromStart(): void;
39
41
  showPlayNextScreen(): void;
42
+ cancelPlayNextScreen(): void;
40
43
  hidePlayNextScreen(): void;
41
44
  doPlayNext(): void;
42
45
  destroy(): boolean;
@@ -83,9 +83,9 @@ export interface StreamOptions {
83
83
  liveProgramTime?: number;
84
84
  endpoint?: string;
85
85
  preferredDRM?: string;
86
- prid?: string;
87
86
  ageRating?: string;
88
87
  nicam?: string[] | null;
88
+ playNext?: PlayNext;
89
89
  }
90
90
  export interface UIComponents {
91
91
  errorMessageOverlay?: ErrorMessageOverlay;
@@ -131,4 +131,11 @@ export declare enum NpoPlayerUIVariants {
131
131
  AUDIO = "audio",
132
132
  AD = "ad"
133
133
  }
134
+ export interface PlayNext {
135
+ showPlayNext?: boolean;
136
+ duration?: number;
137
+ offset?: number;
138
+ proceedCallback?: () => void;
139
+ cancelCallback?: () => void;
140
+ }
134
141
  export {};
@@ -1,4 +1,3 @@
1
1
  import { EventEmitter } from 'events';
2
2
  export class LogEmitter extends EventEmitter {
3
3
  }
4
- //# sourceMappingURL=classes.js.map
@@ -83,9 +83,9 @@ export interface StreamOptions {
83
83
  liveProgramTime?: number;
84
84
  endpoint?: string;
85
85
  preferredDRM?: string;
86
- prid?: string;
87
86
  ageRating?: string;
88
87
  nicam?: string[] | null;
88
+ playNext?: PlayNext;
89
89
  }
90
90
  export interface UIComponents {
91
91
  errorMessageOverlay?: ErrorMessageOverlay;
@@ -131,4 +131,11 @@ export declare enum NpoPlayerUIVariants {
131
131
  AUDIO = "audio",
132
132
  AD = "ad"
133
133
  }
134
+ export interface PlayNext {
135
+ showPlayNext?: boolean;
136
+ duration?: number;
137
+ offset?: number;
138
+ proceedCallback?: () => void;
139
+ cancelCallback?: () => void;
140
+ }
134
141
  export {};
@@ -21,4 +21,3 @@ export var NpoPlayerUIVariants;
21
21
  NpoPlayerUIVariants["AUDIO"] = "audio";
22
22
  NpoPlayerUIVariants["AD"] = "ad";
23
23
  })(NpoPlayerUIVariants || (NpoPlayerUIVariants = {}));
24
- //# sourceMappingURL=interfaces.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@npo/player",
3
- "version": "1.17.1",
3
+ "version": "1.18.0",
4
4
  "description": "NPO Player",
5
5
  "author": "Publieke Omroep <player@npo.nl>",
6
6
  "contributors": [
@@ -6,47 +6,35 @@
6
6
  left: 0;
7
7
  right: 0;
8
8
  background-color: rgba(0, 0, 0, 0.07);
9
- svg {
10
- .ui-circle {
11
- animation: progress 15s ease-out forwards;
12
- }
13
- }
14
- &.show {
9
+ z-index: 10;
10
+ pointer-events: none;
11
+
12
+ &.show {
15
13
  display: block;
16
14
  }
15
+
17
16
  .bmpui-container-wrapper {
18
17
  position: relative;
19
18
  height: 100%;
20
19
  display: flex;
21
- justify-content: center;
22
- align-items: center;
23
- .bmpui-ui-hugeplaynextbacktogglebutton {
24
- position: relative;
25
- height: 7.3em;
26
- width: 7.3em;
27
- cursor: pointer;
28
- transition: background-size linear 0.2s !important;
29
- background-image: var(--npo-player-icon-play) !important;
30
- background-size: 60%;
31
- &:hover {
32
- background-size: 70%;
33
- }
20
+ align-items: flex-end;
21
+ justify-content: flex-end;
22
+ padding: 16px;
23
+ pointer-events: none;
24
+
25
+ .bmpui-ui-textbutton {
26
+ margin-left: 8px;
27
+ pointer-events: all;
28
+ }
29
+
30
+ .ui-playNextButton {
31
+ background-color: var(--npo-player-textcolor);
32
+ width: 200px;
33
+ white-space: nowrap;
34
+
34
35
  .bmpui-label {
35
- display: none;
36
- position: absolute;
37
- bottom: -2em;
38
- width: 100em;
39
- text-align: center;
40
- font-weight: 700;
41
- left: calc(-50em + 3.5em);
42
- font-size: 22px;
36
+ color: var(--npo-player-graycolor-dark);
43
37
  }
44
38
  }
45
39
  }
46
40
  }
47
-
48
- @keyframes progress {
49
- 0% {
50
- stroke-dasharray: 0 100;
51
- }
52
- }
@@ -47,4 +47,20 @@
47
47
  }
48
48
  }
49
49
  }
50
+
51
+ .green {
52
+ color: green;
53
+ }
54
+
55
+ .cyan {
56
+ color: cyan;
57
+ }
58
+
59
+ .white {
60
+ color: white;
61
+ }
62
+
63
+ .yellow {
64
+ color: yellow;
65
+ }
50
66
  }
@@ -18,25 +18,25 @@
18
18
  @-moz-document url-prefix() {
19
19
  backdrop-filter: brightness(1);
20
20
  }
21
+ }
21
22
 
22
- .bmpui-ui-textbutton {
23
- padding: 12px 20px;
24
- background: rgba(3, 14, 30, 0.6);
25
- border: 1px solid #ffffff;
26
- backdrop-filter: blur(10px);
27
- border-radius: 10px;
28
- height: 48px;
29
- box-sizing: border-box;
30
- font-weight: 700;
23
+ .bmpui-ui-textbutton {
24
+ padding: 6px 14px;
25
+ background: rgba(3, 14, 30, 0.6);
26
+ border: 1px solid #ffffff;
27
+ backdrop-filter: blur(10px);
28
+ border-radius: 8px;
29
+ height: 36px;
30
+ box-sizing: border-box;
31
+ font-weight: 700;
31
32
 
32
- .bmpui-label {
33
- display: block;
34
- font-family: var(--fontBold) !important;
35
- font-size: 16px;
36
- line-height: 19px;
37
- align-items: center;
38
- text-align: center;
39
- color: #ffffff;
40
- }
33
+ .bmpui-label {
34
+ display: block;
35
+ font-family: var(--fontBold) !important;
36
+ font-size: 14px;
37
+ line-height: 16.8px;
38
+ align-items: center;
39
+ text-align: center;
40
+ color: #ffffff;
41
41
  }
42
42
  }