@npo/player 1.13.2 → 1.15.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 (126) hide show
  1. package/README.md +1 -1
  2. package/lib/js/ads/ster.d.ts +3 -3
  3. package/lib/js/ads/ster.js +114 -98
  4. package/lib/js/ads/ster.js.map +1 -1
  5. package/lib/js/ads/ster.test.js +0 -27
  6. package/lib/js/ads/ster.test.js.map +1 -1
  7. package/lib/js/checks/{safari.d.ts → apple.d.ts} +1 -0
  8. package/lib/js/checks/{safari.js → apple.js} +11 -1
  9. package/lib/js/checks/apple.js.map +1 -0
  10. package/lib/js/checks/apple.test.js +21 -0
  11. package/lib/js/checks/apple.test.js.map +1 -0
  12. package/lib/js/drm/drm.d.ts +2 -0
  13. package/lib/js/drm/drm.js +3 -0
  14. package/lib/js/drm/drm.js.map +1 -0
  15. package/lib/js/drm/handlers/decideprofile.d.ts +3 -0
  16. package/lib/js/drm/handlers/decideprofile.js +52 -0
  17. package/lib/js/drm/handlers/decideprofile.js.map +1 -0
  18. package/lib/js/drm/{verifydrm.d.ts → handlers/verifydrm.d.ts} +2 -2
  19. package/lib/js/drm/{verifydrm.js → handlers/verifydrm.js} +2 -2
  20. package/lib/js/drm/handlers/verifydrm.js.map +1 -0
  21. package/lib/js/drm/handlers/verifydrm.test.js.map +1 -0
  22. package/lib/js/playeractions/handlers/handleoffsets.js.map +1 -1
  23. package/lib/js/playeractions/handlers/mediasessionactions.d.ts +2 -0
  24. package/lib/js/playeractions/handlers/mediasessionactions.js +107 -0
  25. package/lib/js/playeractions/handlers/mediasessionactions.js.map +1 -0
  26. package/lib/js/playeractions/handlers/processplayerconfig.js +2 -2
  27. package/lib/js/playeractions/handlers/processplayerconfig.js.map +1 -1
  28. package/lib/js/playeractions/handlers/processsourceconfig.d.ts +3 -0
  29. package/lib/js/playeractions/handlers/processsourceconfig.js +158 -0
  30. package/lib/js/playeractions/handlers/processsourceconfig.js.map +1 -0
  31. package/lib/js/playeractions/playeractions.d.ts +1 -0
  32. package/lib/js/playeractions/playeractions.js +1 -0
  33. package/lib/js/playeractions/playeractions.js.map +1 -1
  34. package/lib/js/tracking/handlers/eventbinding.js +37 -30
  35. package/lib/js/tracking/handlers/eventbinding.js.map +1 -1
  36. package/lib/js/tracking/handlers/eventlogging.js +1 -1
  37. package/lib/js/tracking/handlers/eventlogging.js.map +1 -1
  38. package/lib/js/ui/components/audio/controlbar.d.ts +3 -0
  39. package/lib/js/ui/components/audio/controlbar.js +23 -0
  40. package/lib/js/ui/components/audio/controlbar.js.map +1 -0
  41. package/lib/js/ui/components/controlbar.js +3 -16
  42. package/lib/js/ui/components/controlbar.js.map +1 -1
  43. package/lib/js/ui/components/nativemobile/buttons.d.ts +3 -3
  44. package/lib/js/ui/components/nativemobile/buttons.js +65 -52
  45. package/lib/js/ui/components/nativemobile/buttons.js.map +1 -1
  46. package/lib/js/ui/components/nativemobile/controlbar.js +7 -14
  47. package/lib/js/ui/components/nativemobile/controlbar.js.map +1 -1
  48. package/lib/js/ui/components/nativemobile/topbar.js +7 -15
  49. package/lib/js/ui/components/nativemobile/topbar.js.map +1 -1
  50. package/lib/js/ui/components/seekbar.d.ts +6 -0
  51. package/lib/js/ui/components/seekbar.js +21 -0
  52. package/lib/js/ui/components/seekbar.js.map +1 -0
  53. package/lib/js/ui/components/settingspanel.js +23 -1
  54. package/lib/js/ui/components/settingspanel.js.map +1 -1
  55. package/lib/js/ui/components/shared/playnextscreen.js +1 -1
  56. package/lib/js/ui/components/shared/playnextscreen.js.map +1 -1
  57. package/lib/js/ui/nativemobileuicontainer.d.ts +1 -1
  58. package/lib/js/ui/nativemobileuicontainer.js +12 -3
  59. package/lib/js/ui/nativemobileuicontainer.js.map +1 -1
  60. package/lib/js/ui/nativemobileuifactory.js +5 -5
  61. package/lib/js/ui/nativemobileuifactory.js.map +1 -1
  62. package/lib/js/ui/uicontainer.d.ts +2 -1
  63. package/lib/js/ui/uicontainer.js +26 -8
  64. package/lib/js/ui/uicontainer.js.map +1 -1
  65. package/lib/js/utilities/utilities.js +13 -2
  66. package/lib/js/utilities/utilities.js.map +1 -1
  67. package/lib/npoplayer.d.ts +6 -7
  68. package/lib/npoplayer.js +21 -241
  69. package/lib/npoplayer.js.map +1 -1
  70. package/lib/package.json +3 -3
  71. package/lib/src/js/ads/ster.d.ts +3 -3
  72. package/lib/src/js/checks/{safari.d.ts → apple.d.ts} +1 -0
  73. package/lib/src/js/drm/drm.d.ts +2 -0
  74. package/lib/src/js/drm/handlers/decideprofile.d.ts +3 -0
  75. package/lib/src/js/drm/{verifydrm.d.ts → handlers/verifydrm.d.ts} +2 -2
  76. package/lib/src/js/playeractions/handlers/mediasessionactions.d.ts +2 -0
  77. package/lib/src/js/playeractions/handlers/processsourceconfig.d.ts +3 -0
  78. package/lib/src/js/playeractions/playeractions.d.ts +1 -0
  79. package/lib/src/js/ui/components/audio/controlbar.d.ts +3 -0
  80. package/lib/src/js/ui/components/nativemobile/buttons.d.ts +3 -3
  81. package/lib/src/js/ui/components/seekbar.d.ts +6 -0
  82. package/lib/src/js/ui/nativemobileuicontainer.d.ts +1 -1
  83. package/lib/src/js/ui/uicontainer.d.ts +2 -1
  84. package/lib/src/npoplayer.d.ts +6 -7
  85. package/lib/src/types/interfaces.d.ts +6 -0
  86. package/lib/types/interfaces.d.ts +6 -0
  87. package/lib/types/interfaces.js +6 -0
  88. package/lib/types/interfaces.js.map +1 -1
  89. package/package.json +3 -3
  90. package/src/scss/components/_audio.scss +4 -0
  91. package/src/scss/components/_buffering.scss +37 -29
  92. package/src/scss/components/_hugeplaybacktogglebutton.scss +1 -1
  93. package/src/scss/components/_icons.scss +1 -1
  94. package/src/scss/components/_replay.scss +0 -5
  95. package/src/scss/components/_seekbar.scss +9 -5
  96. package/src/scss/components/_settingspanel.scss +6 -2
  97. package/src/scss/components/_subtitles.scss +45 -27
  98. package/src/scss/components/_volumeslider.scss +1 -0
  99. package/src/scss/components/audio/_bottombar.scss +43 -0
  100. package/src/scss/components/audio/_buffering.scss +8 -0
  101. package/src/scss/components/audio/_errors.scss +13 -0
  102. package/src/scss/components/audio/_metadata.scss +38 -0
  103. package/src/scss/components/audio/_playbutton.scss +66 -0
  104. package/src/scss/components/audio/_poster.scss +19 -0
  105. package/src/scss/components/audio/_replay.scss +28 -0
  106. package/src/scss/components/audio/_seekbar.scss +26 -0
  107. package/src/scss/components/audio/_topbar.scss +35 -0
  108. package/src/scss/components/audio/_vars.scss +5 -0
  109. package/src/scss/components/audio/_volumeslider.scss +35 -0
  110. package/src/scss/npoplayer.css +104 -45
  111. package/src/scss/npoplayer.scss +10 -6
  112. package/src/scss/variants/_player-audio.scss +55 -0
  113. package/src/scss/variants/_player-base.scss +4 -0
  114. package/src/scss/variants/_player-small.scss +4 -0
  115. package/src/scss/vars/_audio.scss +5 -0
  116. package/src/scss/vars/_colors.scss +4 -0
  117. package/lib/js/checks/safari.js.map +0 -1
  118. package/lib/js/checks/safari.test.js +0 -21
  119. package/lib/js/checks/safari.test.js.map +0 -1
  120. package/lib/js/drm/verifydrm.js.map +0 -1
  121. package/lib/js/drm/verifydrm.test.js.map +0 -1
  122. /package/lib/js/checks/{safari.test.d.ts → apple.test.d.ts} +0 -0
  123. /package/lib/js/drm/{verifydrm.test.d.ts → handlers/verifydrm.test.d.ts} +0 -0
  124. /package/lib/js/drm/{verifydrm.test.js → handlers/verifydrm.test.js} +0 -0
  125. /package/lib/src/js/checks/{safari.test.d.ts → apple.test.d.ts} +0 -0
  126. /package/lib/src/js/drm/{verifydrm.test.d.ts → handlers/verifydrm.test.d.ts} +0 -0
@@ -1,4 +1,4 @@
1
- import type NpoPlayer from '../../npoplayer';
2
- import { type ApiPayload } from '../../types/interfaces';
1
+ import type NpoPlayer from '../../../npoplayer';
2
+ import { type ApiPayload } from '../../../types/interfaces';
3
3
  import type { PlayerAPI } from 'bitmovin-player';
4
4
  export declare function verifyDRM(npoplayer: NpoPlayer, player: PlayerAPI, payload: ApiPayload): Promise<void>;
@@ -0,0 +1,2 @@
1
+ import { PlayerAPI, SourceConfig } from "bitmovin-player";
2
+ export declare function setupMediaSessionActionHandlers(player: PlayerAPI, sourceConfig: SourceConfig, _streamObject: any): void;
@@ -0,0 +1,3 @@
1
+ import { StreamObject } from 'types/interfaces';
2
+ import { SourceConfig } from 'bitmovin-player';
3
+ export declare function processSourceConfig(_sourceConfig: SourceConfig | undefined, _streamObject: StreamObject, drm?: string | null): SourceConfig;
@@ -2,3 +2,4 @@ export { resolveKeyPress } from "./handlers/resolvekeypress";
2
2
  export { handleStartOffset, handleLiveOffsetLogic, shiftToProgramStart } from "./handlers/handleoffsets";
3
3
  export { handlePlayerError } from "./handlers/error";
4
4
  export { processPlayerConfig } from "./handlers/processplayerconfig";
5
+ export { processSourceConfig } from "./handlers/processsourceconfig";
@@ -0,0 +1,3 @@
1
+ import { ControlBar } from 'bitmovin-player-ui';
2
+ import type NpoPlayer from '../../../../npoplayer';
3
+ export declare function createAudioControlBar(npoplayer: NpoPlayer): ControlBar;
@@ -20,8 +20,8 @@ export declare function createGoBackLiveButton(player: PlayerAPI): Button<{
20
20
  }>;
21
21
  export declare function createSettingsButton(settingsPanel: SettingsPanel): SettingsToggleButton;
22
22
  export declare function createPlaybackToggleButton(): PlaybackToggleButton;
23
- export declare function createVolumeToggleButton(): VolumeToggleButton;
24
- export declare function createPictureInPictureToggleButton(): PictureInPictureToggleButton;
23
+ export declare function createVolumeToggleButton(player: PlayerAPI): VolumeToggleButton;
24
+ export declare function createPictureInPictureToggleButton(player: PlayerAPI): PictureInPictureToggleButton;
25
25
  export declare function createAirPlayToggleButton(): AirPlayToggleButton;
26
26
  export declare function createCastToggleButton(): CastToggleButton;
27
- export declare function createFullscreenToggleButton(): FullscreenToggleButton;
27
+ export declare function createFullscreenToggleButton(player: PlayerAPI): FullscreenToggleButton;
@@ -0,0 +1,6 @@
1
+ import { Container, PlaybackTimeLabel, SeekBar } from 'bitmovin-player-ui';
2
+ import type NpoPlayer from '../../../npoplayer';
3
+ export declare function createSeekBar(npoplayer: NpoPlayer): Container<{
4
+ components: (PlaybackTimeLabel | SeekBar)[];
5
+ cssClasses: string[];
6
+ }>;
@@ -1,5 +1,5 @@
1
1
  import { UIContainer } from 'bitmovin-player-ui';
2
2
  import { PlayerAPI } from 'bitmovin-player';
3
3
  import { CustomMessageHandlerInterface, CustomMessages } from '../../types/interfaces';
4
- export declare function sendCustomMessage(message: CustomMessages, data?: CustomMessageHandlerInterface): any;
4
+ export declare function sendCustomMessage(message: CustomMessages, data?: CustomMessageHandlerInterface): CustomMessageHandlerInterface;
5
5
  export declare function nativeMobileUIContainer(player: PlayerAPI): UIContainer;
@@ -1,4 +1,5 @@
1
1
  import type NpoPlayer from '../../npoplayer';
2
2
  import { UIContainer } from 'bitmovin-player-ui';
3
3
  import { PlayerAPI } from 'bitmovin-player';
4
- export declare function createUIContainer(npoplayer: NpoPlayer, player: PlayerAPI, variant: string): UIContainer;
4
+ import { NpoPlayerUIVariants } from '../../types/interfaces';
5
+ export declare function createUIContainer(npoplayer: NpoPlayer, player: PlayerAPI, variant: NpoPlayerUIVariants, container: HTMLElement): UIContainer;
@@ -3,7 +3,8 @@ import { type InitialisationProps } from '@npotag/tag/dist/types/src/npoTag';
3
3
  import { type PlayerAPI, type PlayerConfig, type SourceConfig } from 'bitmovin-player';
4
4
  import { UIManager } from 'bitmovin-player-ui';
5
5
  import { LogEmitter } from './types/classes';
6
- import { type DRMProfile, type ApiPayload, type Fragments, type NPOTagObject, type Profile, type Section, type StreamObject, type StreamOptions, type UIComponents } from './types/interfaces';
6
+ import { type DRMProfile, type ApiPayload, type Fragments, type NPOTagObject, type Section, type StreamObject, type StreamOptions, type UIComponents, NpoPlayerUIVariants } from './types/interfaces';
7
+ export { type PlayerConfig, type InitialisationProps, type NPOTagObject, type StreamOptions, NpoPlayerUIVariants, };
7
8
  export default class NpoPlayer {
8
9
  playerConfig: PlayerConfig;
9
10
  sourceConfig: SourceConfig;
@@ -22,13 +23,12 @@ export default class NpoPlayer {
22
23
  adBreakActive: boolean;
23
24
  version: string;
24
25
  drmProfile: DRMProfile;
25
- constructor(_container: HTMLElement, _playerConfig: PlayerConfig, _npotag?: InitialisationProps | null, _npotaginstance?: NPOTag);
26
- initPlayer(_container: HTMLElement, playerConfig: PlayerConfig): void;
26
+ variant: NpoPlayerUIVariants;
27
+ constructor(_container: HTMLElement, _playerConfig: PlayerConfig, _npotag?: InitialisationProps | null, _npotaginstance?: NPOTag | undefined, _variant?: NpoPlayerUIVariants);
28
+ initPlayer(_container: HTMLElement, playerConfig: PlayerConfig, variant: NpoPlayerUIVariants): void;
27
29
  loadStream(source: string, options?: StreamOptions): Promise<void>;
28
- createUIManager(player: PlayerAPI, variant: string): Promise<void>;
30
+ createUIManager(player: PlayerAPI, variant: NpoPlayerUIVariants): Promise<void>;
29
31
  setFragments(fragments: Fragments): Promise<void>;
30
- decideProfile(preferredDRM?: string): Promise<Profile>;
31
- processSourceConfig(_sourceConfig: SourceConfig | undefined, _streamObject: StreamObject, drm?: string | null): SourceConfig;
32
32
  doError(input: any, status?: number): void;
33
33
  keyPress(e: KeyboardEvent): void;
34
34
  setVolume(volume: number): void;
@@ -42,5 +42,4 @@ export default class NpoPlayer {
42
42
  doPlayNext(): void;
43
43
  destroy(): boolean;
44
44
  unload(): boolean;
45
- isFairPlayDrmSupported(ks?: any): boolean;
46
45
  }
@@ -30,6 +30,7 @@ interface StreamObject_Stream {
30
30
  drmToken?: string;
31
31
  drmType: string;
32
32
  streamProfile: string;
33
+ sourceProfile: string;
33
34
  streamURL: string;
34
35
  isLiveStream?: boolean;
35
36
  hasDvrWindow?: boolean;
@@ -125,4 +126,9 @@ export declare enum CustomMessages {
125
126
  TOGGLE_PLAY_PAUSE = "togglePlayPause",
126
127
  TOGGLE_SETTINGS_PANEL = "toggleSettingsPanel"
127
128
  }
129
+ export declare enum NpoPlayerUIVariants {
130
+ DEFAULT = "default",
131
+ AUDIO = "audio",
132
+ AD = "ad"
133
+ }
128
134
  export {};
@@ -30,6 +30,7 @@ interface StreamObject_Stream {
30
30
  drmToken?: string;
31
31
  drmType: string;
32
32
  streamProfile: string;
33
+ sourceProfile: string;
33
34
  streamURL: string;
34
35
  isLiveStream?: boolean;
35
36
  hasDvrWindow?: boolean;
@@ -125,4 +126,9 @@ export declare enum CustomMessages {
125
126
  TOGGLE_PLAY_PAUSE = "togglePlayPause",
126
127
  TOGGLE_SETTINGS_PANEL = "toggleSettingsPanel"
127
128
  }
129
+ export declare enum NpoPlayerUIVariants {
130
+ DEFAULT = "default",
131
+ AUDIO = "audio",
132
+ AD = "ad"
133
+ }
128
134
  export {};
@@ -15,4 +15,10 @@ export var CustomMessages;
15
15
  CustomMessages["TOGGLE_PLAY_PAUSE"] = "togglePlayPause";
16
16
  CustomMessages["TOGGLE_SETTINGS_PANEL"] = "toggleSettingsPanel";
17
17
  })(CustomMessages || (CustomMessages = {}));
18
+ export var NpoPlayerUIVariants;
19
+ (function (NpoPlayerUIVariants) {
20
+ NpoPlayerUIVariants["DEFAULT"] = "default";
21
+ NpoPlayerUIVariants["AUDIO"] = "audio";
22
+ NpoPlayerUIVariants["AD"] = "ad";
23
+ })(NpoPlayerUIVariants || (NpoPlayerUIVariants = {}));
18
24
  //# sourceMappingURL=interfaces.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/types/interfaces.ts"],"names":[],"mappings":"AAmIA,MAAM,CAAN,IAAY,cAeX;AAfD,WAAY,cAAc;IACtB,gDAA8B,CAAA;IAC9B,6DAA2C,CAAA;IAC3C,mDAAiC,CAAA;IACjC,gEAA8C,CAAA;IAC9C,6CAA2B,CAAA;IAC3B,sDAAoC,CAAA;IACpC,mDAAiC,CAAA;IACjC,kDAAgC,CAAA;IAChC,wDAAsC,CAAA;IACtC,6DAA2C,CAAA;IAC3C,4CAA0B,CAAA;IAC1B,0CAAwB,CAAA;IACxB,uDAAqC,CAAA;IACrC,+DAA6C,CAAA;AACjD,CAAC,EAfW,cAAc,KAAd,cAAc,QAezB"}
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/types/interfaces.ts"],"names":[],"mappings":"AAoIA,MAAM,CAAN,IAAY,cAeX;AAfD,WAAY,cAAc;IACtB,gDAA8B,CAAA;IAC9B,6DAA2C,CAAA;IAC3C,mDAAiC,CAAA;IACjC,gEAA8C,CAAA;IAC9C,6CAA2B,CAAA;IAC3B,sDAAoC,CAAA;IACpC,mDAAiC,CAAA;IACjC,kDAAgC,CAAA;IAChC,wDAAsC,CAAA;IACtC,6DAA2C,CAAA;IAC3C,4CAA0B,CAAA;IAC1B,0CAAwB,CAAA;IACxB,uDAAqC,CAAA;IACrC,+DAA6C,CAAA;AACjD,CAAC,EAfW,cAAc,KAAd,cAAc,QAezB;AAED,MAAM,CAAN,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC3B,0CAAmB,CAAA;IACnB,sCAAe,CAAA;IACf,gCAAS,CAAA;AACb,CAAC,EAJW,mBAAmB,KAAnB,mBAAmB,QAI9B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@npo/player",
3
- "version": "1.13.2",
3
+ "version": "1.15.0",
4
4
  "description": "NPO Player",
5
5
  "author": "Publieke Omroep <player@npo.nl>",
6
6
  "contributors": [
@@ -81,8 +81,8 @@
81
81
  "webpack-dev-server": "^4.11.1"
82
82
  },
83
83
  "dependencies": {
84
- "@npotag/tag": "^2.1.0",
85
- "bitmovin-player": "^8.125.0",
84
+ "@npotag/tag": "^3.0.0",
85
+ "bitmovin-player": "8.125.0",
86
86
  "bitmovin-player-ui": "^3.48.0"
87
87
  },
88
88
  "browserslist": [
@@ -0,0 +1,4 @@
1
+ .bitmovinplayer-container.bitmovinplayer-audio-container {
2
+ height: 100px;
3
+ min-height: 100px;
4
+ }
@@ -1,42 +1,49 @@
1
1
  .bmpui-ui-buffering-overlay {
2
- background-color: var(--npo-player-bufferingcolor);
3
- display: block;
2
+ background-color: var(--npo-player-bufferingcolor);
3
+ display: block;
4
+ pointer-events: none;
4
5
 
5
- .bmpui-container-wrapper {
6
- display: flex;
7
- width: 100%;
8
- height: 100%;
9
- align-items: center;
10
- justify-content: center;
11
- padding: 0;
12
-
13
- .bmpui-ui-buffering-overlay-indicator:first-child,
14
- .bmpui-ui-buffering-overlay-indicator:last-child {
15
- display: none;
16
- animation: none;
17
- background: none;
18
- }
19
- }
6
+ >* {
7
+ pointer-events: none;
8
+ }
20
9
 
21
- .bmpui-ui-buffering-overlay-indicator {
22
- width: 56px;
23
- height: 56px;
24
- border-radius: 50%;
25
- background-image: conic-gradient(var(--npo-player-primarycolor), transparent);
26
- mask: radial-gradient(transparent 20px, var(--npo-player-primarycolor) 20px);
27
- animation: rotation 2s infinite ease-in;
10
+ .bmpui-container-wrapper {
11
+ display: flex;
12
+ width: 100%;
13
+ height: 100%;
14
+ align-items: center;
15
+ justify-content: center;
16
+ padding: 0;
17
+
18
+ .bmpui-ui-buffering-overlay-indicator:first-child,
19
+ .bmpui-ui-buffering-overlay-indicator:last-child {
20
+ display: none;
21
+ animation: none;
22
+ background: none;
28
23
  }
24
+ }
29
25
 
30
- &.bmpui-hidden {
31
- .bmpui-ui-buffering-overlay-indicator {
32
- animation: none;
33
- }
26
+ .bmpui-ui-buffering-overlay-indicator {
27
+ width: 56px;
28
+ height: 56px;
29
+ border-radius: 50%;
30
+ background-image: conic-gradient(var(--npo-player-primarycolor), transparent);
31
+ mask: radial-gradient(transparent 20px, var(--npo-player-primarycolor) 20px);
32
+ animation: none;
33
+ pointer-events: none;
34
+ }
35
+
36
+ &.bmpui-hidden {
37
+ .bmpui-ui-buffering-overlay-indicator {
38
+ animation: none;
34
39
  }
40
+ }
35
41
 
36
42
  }
37
43
 
38
44
  /* loading state */
39
45
  &:not(.bmpui-player-state-prepared):not(.bmpui-player-state-playing):not(.bmpui-player-state-paused):not(.bmpui-player-state-finished) {
46
+
40
47
  .bmpui-ui-buffering-overlay,
41
48
  .bmpui-ui-buffering-overlay.bmpui-hidden {
42
49
  display: block;
@@ -54,7 +61,8 @@
54
61
  from {
55
62
  transform: rotate(0deg);
56
63
  }
64
+
57
65
  to {
58
66
  transform: rotate(360deg);
59
67
  }
60
- }
68
+ }
@@ -49,7 +49,7 @@
49
49
  }
50
50
 
51
51
  &:before {
52
- border-radius: 500px;
52
+ border-radius: 50%;
53
53
  background: rgba(0, 0, 0, 0.5);
54
54
  }
55
55
 
@@ -13,7 +13,7 @@
13
13
  margin: 0;
14
14
  background-size: contain;
15
15
  background-color: var(--npo-player-iconcolor);
16
- background-image: none;
16
+ background-image: none !important;
17
17
  mask-size: contain;
18
18
  mask-position: 50% 50%;
19
19
  mask-repeat: no-repeat;
@@ -20,13 +20,8 @@
20
20
  background-color: var(--npo-player-iconcolor);
21
21
  mask-size: 48px;
22
22
  mask-image: url('data:image/svg+xml,<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M11.2721 14.1005C10.4911 13.3195 10.4911 12.0531 11.2721 11.2721C18.3015 4.24264 29.6985 4.24264 36.728 11.2721C43.7574 18.3015 43.7574 29.6985 36.728 36.7279C29.6985 43.7574 18.3015 43.7574 11.2721 36.7279C10.4911 35.9469 10.4911 34.6805 11.2721 33.8995C12.0532 33.1184 13.3195 33.1184 14.1005 33.8995C19.5679 39.3668 28.4322 39.3668 33.8995 33.8995C39.3669 28.4322 39.3669 19.5678 33.8995 14.1005C28.4322 8.63316 19.5679 8.63316 14.1005 14.1005C13.3195 14.8816 12.0532 14.8816 11.2721 14.1005Z" fill="white"/><path fill-rule="evenodd" clip-rule="evenodd" d="M11.199 4.00983C12.2981 4.11974 13.1 5.09983 12.9901 6.19891L12.2333 13.7666L19.801 13.0098C20.9001 12.8999 21.8802 13.7018 21.9901 14.8009C22.1 15.9 21.2981 16.8801 20.199 16.99L10.199 17.99C9.60213 18.0497 9.00997 17.8383 8.5858 17.4141C8.16163 16.99 7.95025 16.3978 8.00994 15.8009L9.00994 5.8009C9.11985 4.70181 10.0999 3.89992 11.199 4.00983Z" fill="white"/></svg>') !important;
23
- transition: transform .25s ease-in;
24
23
  }
25
24
  }
26
-
27
- .bmpui-image:hover:after {
28
- transform: rotate(-135deg);
29
- }
30
25
  }
31
26
 
32
27
  .bmpui-ui-playbacktogglebutton.bmpui-off {
@@ -13,16 +13,16 @@ $seekbar-border-radius: 2px;
13
13
  margin-top: 5px;
14
14
 
15
15
  .bmpui-seekbar-marker {
16
- background-color: var(--npo-player-primarycolor);
16
+ background-color: var(--npo-player-seekbar-marker);
17
17
  }
18
18
 
19
19
  .bmpui-seekbar-backdrop {
20
- background-color: var(--npo-player-white);
20
+ background-color: var(--npo-player-seekbar-background);
21
21
  opacity: 0.75;
22
22
  }
23
23
 
24
24
  .bmpui-seekbar-playbackposition {
25
- background: linear-gradient(90deg, var(--npo-player-primarycolor) 0%, var(--npo-player-primarycolor-light) 100%);
25
+ background: var(--npo-player-seekbar-playbackposition-background);
26
26
  }
27
27
 
28
28
  .bmpui-seekbar-seekposition {
@@ -47,6 +47,10 @@ $seekbar-border-radius: 2px;
47
47
  margin-top: -$seekbar-height;
48
48
  }
49
49
 
50
+ .bmpui-seekbar-bufferlevel {
51
+ background-color: var(--npo-player-seekbar-bufferlevel-background);
52
+ }
53
+
50
54
  .bmpui-seekbar-markers {
51
55
  position: relative;
52
56
  overflow: hidden;
@@ -62,8 +66,8 @@ $seekbar-border-radius: 2px;
62
66
  }
63
67
 
64
68
  .bmpui-seekbar-playbackposition-marker {
65
- background-color: var(--npo-player-textcolor);
66
- border-color: var(--npo-player-textcolor);
69
+ background-color: var(--npo-player-seekbar-marker);
70
+ border-color: currentColor;
67
71
  width: 16px;
68
72
  height: 16px;
69
73
 
@@ -171,14 +171,18 @@ $settings-panel-line-height: 19px;
171
171
  line-height: $settings-panel-line-height;
172
172
  color: var(--npo-player-textcolor);
173
173
  opacity: 1;
174
+ padding-top: 16px;
174
175
 
175
- span {
176
- padding-left: 35px;
176
+ .bmpui-label {
177
+ padding-left: 32px;
178
+ display: flex;
179
+ width: 100%;
177
180
 
178
181
  &::before {
179
182
  border-bottom: 0.17em solid var(--npo-player-textcolor);
180
183
  border-left: 0.17em solid var(--npo-player-textcolor);
181
184
  width: 0.5em;
185
+ top: auto;
182
186
  height: 0.5em;
183
187
  margin-left: -25px;
184
188
  }
@@ -1,32 +1,50 @@
1
1
  /* Subtitles */
2
- .bmpui-subtitle-region-container {
3
- font-size: 15.22px !important;
4
- position: static !important;
5
- .bmpui-ui-subtitle-label {
6
- /*Scale to container size*/
7
- position: absolute;
8
- overflow-wrap: break-word;
9
- overflow: hidden;
10
- flex-flow: column nowrap;
11
- display: inline-flex;
12
- writing-mode: horizontal-tb;
13
- text-align: center;
2
+ .bmpui-ui-subtitle-overlay {
3
+ .bmpui-container-wrapper {
4
+ display: block;
14
5
  width: 100%;
15
- justify-content: center;
16
- font-size: 1em !important;
17
- font-weight: 400 !important;
18
- inset: 78% auto 0px 0% !important;
19
- @container (min-width: 600px) {
20
- font-size: 1.593em !important;
21
- }
22
- @container (min-width: 700px) {
23
- font-size: 1.867em !important;
24
- }
25
- @container (min-width: 1200px) {
26
- font-size: 3.2em !important;
27
- }
28
- @container (min-width: 1440px) {
29
- font-size: 3.84em !important;
6
+ height: 100%;
7
+ }
8
+
9
+ .bmpui-subtitle-region-container {
10
+ font-size: 15.22px !important;
11
+ position: static !important;
12
+ display: block;
13
+ width: 100%;
14
+ height: 100%;
15
+
16
+ .bmpui-ui-subtitle-label {
17
+ box-sizing: border-box;
18
+ position: absolute;
19
+ overflow-wrap: break-word;
20
+ overflow: hidden;
21
+ writing-mode: horizontal-tb;
22
+ width: 100% !important;
23
+ display: block !important;
24
+ bottom: 18px !important;
25
+ left: 0 !important;
26
+ right: 0!important;
27
+ top: auto !important;
28
+ font-size: 1em !important;
29
+ font-weight: 400 !important;
30
+ inset: none !important;
31
+ padding: 0 18px;
32
+
33
+ @container (min-width: 600px) {
34
+ font-size: 1.593em !important;
35
+ }
36
+
37
+ @container (min-width: 700px) {
38
+ font-size: 1.867em !important;
39
+ }
40
+
41
+ @container (min-width: 1200px) {
42
+ font-size: 3.2em !important;
43
+ }
44
+
45
+ @container (min-width: 1440px) {
46
+ font-size: 3.84em !important;
47
+ }
30
48
  }
31
49
  }
32
50
  }
@@ -29,6 +29,7 @@
29
29
  }
30
30
 
31
31
  // vertical slider in topbar
32
+ &.bmpui-audio,
32
33
  .bmpui-controlbar-small {
33
34
  .bmpui-ui-volumeslider.bmpui-vertical {
34
35
  position: absolute;
@@ -0,0 +1,43 @@
1
+ .bmpui-ui-controlbar {
2
+ background: none;
3
+
4
+ &.bmpui-ui-controlbar-bottom {
5
+ height: auto;
6
+ padding-left: $player-spacing-left;
7
+ padding-bottom: $player-spacing;
8
+
9
+ >.bmpui-container-wrapper {
10
+ display: flex;
11
+ width: 100%;
12
+ }
13
+
14
+ .bmpui-ui-container.bmpui-controlbar-top {
15
+ width: 100%;
16
+ }
17
+
18
+ .bmpui-ui-controlbar {
19
+ background: none;
20
+ padding: 0;
21
+ position: relative;
22
+ }
23
+
24
+ .bmpui-controlbar-bottom {
25
+ padding: 0 !important;
26
+
27
+ .bmpui-container-wrapper {
28
+ margin: 0 !important;
29
+ }
30
+ }
31
+ }
32
+ }
33
+
34
+ &.bmpui-layout-max-width-400 {
35
+ .bmpui-ui-controlbar.bmpui-ui-controlbar-bottom {
36
+ display: block;
37
+ padding: 0 20px 10px;
38
+ }
39
+
40
+ .bmpui-ui-container.bmpui-controlbar-bottom {
41
+ display: block;
42
+ }
43
+ }
@@ -0,0 +1,8 @@
1
+ // not used right now
2
+ .bmpui-ui-buffering-overlay {
3
+ width: 64px;
4
+ height: 64px;
5
+ top: $player-spacing;
6
+ margin-top: $player-spacing-inner;
7
+ left: $player-spacing-left;
8
+ }
@@ -0,0 +1,13 @@
1
+ .bmpui-ui-errormessage-overlay {
2
+ background-color: var(--npo-audio-player-background-color);
3
+ z-index: 100;
4
+
5
+ &::before {
6
+ display: none;
7
+ }
8
+
9
+ .bmpui-ui-errormessage-label {
10
+ text-shadow: none;
11
+ color: var(--npo-audio-player-text-color);
12
+ }
13
+ }
@@ -0,0 +1,38 @@
1
+ .bmpui-metadata {
2
+ padding: 0;
3
+ display: block !important;
4
+
5
+ .bmpui-label-metadata-title {
6
+ padding: $player-spacing 40px 0 $player-spacing-left;
7
+ text-shadow: none;
8
+ font-size: 16px;
9
+ line-height: 20.83px;
10
+ margin-left: 79px;
11
+ margin-top: $player-spacing-inner;
12
+
13
+ // Max 3 lines
14
+ display: -webkit-box;
15
+ -webkit-line-clamp: 3;
16
+ -webkit-box-orient: vertical;
17
+ overflow: hidden;
18
+ text-overflow: ellipsis;
19
+ }
20
+
21
+ .bmpui-label-metadata-description,
22
+ .bmpui-nicam {
23
+ display: none;
24
+ }
25
+ }
26
+
27
+ &.bmpui-layout-max-width-400 {
28
+ .bmpui-label-metadata-title {
29
+ padding-left: 55px;
30
+ padding-top: 0;
31
+ margin-top: 13px;
32
+ font-size: 14px;
33
+ line-height: 17.01px;
34
+ height: 50px;
35
+ display: flex;
36
+ align-items: center;
37
+ }
38
+ }
@@ -0,0 +1,66 @@
1
+ .bmpui-ui-playbacktoggle-overlay {
2
+ display: none;
3
+ animation: none;
4
+ }
5
+
6
+ &.bmpui-player-state-playing,
7
+ &.bmpui-player-state-paused,
8
+ &.bmpui-player-state-idle,
9
+ &.bmpui-player-state-prepared,
10
+ &.bmpui-player-state-finished {
11
+ .bmpui-ui-playbacktoggle-overlay {
12
+ display: block;
13
+ animation: none;
14
+ }
15
+ }
16
+
17
+ .bmpui-ui-playbacktoggle-overlay {
18
+ opacity: 1;
19
+ width: 64px;
20
+ height: 64px;
21
+ top: $player-spacing;
22
+ margin-top: $player-spacing-inner;
23
+ left: $player-spacing-left;
24
+
25
+ .bmpui-ui-hugeplaybacktogglebutton {
26
+ padding: 0;
27
+
28
+ .bmpui-image {
29
+ &::before {
30
+ top: 0;
31
+ left: 0;
32
+ width: 100%;
33
+ height: 100%;
34
+ background-color: var(--npo-player-primarycolor);
35
+ }
36
+
37
+ &::after {
38
+ background-color: var(--npo-audio-player-background-color);
39
+ }
40
+ }
41
+
42
+ &.bmpui-on .bmpui-image {
43
+ animation: none;
44
+ transition: none;
45
+ visibility: visible;
46
+
47
+ &:after {
48
+ mask-image: var(--npo-player-icon-pause);
49
+ }
50
+ }
51
+ }
52
+ }
53
+
54
+ &.bmpui-layout-max-width-400 {
55
+ .bmpui-ui-playbacktoggle-overlay {
56
+ width: 36px;
57
+ height: 36px;
58
+ left: 90px;
59
+ margin-top: 7px;
60
+
61
+ .bmpui-image::after {
62
+ width: 60px;
63
+ height: 60px;
64
+ }
65
+ }
66
+ }
@@ -0,0 +1,19 @@
1
+ .bitmovinplayer-poster {
2
+ top: $player-spacing;
3
+ left: $player-spacing;
4
+ height: 120px;
5
+ width: 120px;
6
+ width: auto;
7
+ right: auto;
8
+ bottom: auto;
9
+ aspect-ratio: 1 / 1;
10
+ border-radius: var(--npo-audio-player-poster-border-radius);
11
+ background-color: var(--npo-audio-player-poster-background);
12
+ display: block !important;
13
+ z-index: 1;
14
+
15
+ @container (max-width: 400px) {
16
+ width: 50px;
17
+ height: 50px;
18
+ }
19
+ }