@npo/player 1.20.3 → 1.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -0
- package/lib/js/api/getstreamobject.test.js +2 -2
- package/lib/js/markers/updateLiveMarkers.d.ts +4 -0
- package/lib/js/markers/updateLiveMarkers.js +21 -0
- package/lib/js/markers/updateLiveMarkers.test.d.ts +1 -0
- package/lib/js/markers/updateLiveMarkers.test.js +53 -0
- package/lib/js/playeractions/handlers/error.d.ts +2 -2
- package/lib/js/playeractions/handlers/processsourceconfig.d.ts +1 -1
- package/lib/js/playeractions/handlers/processsourceconfig.js +12 -10
- package/lib/js/ui/components/adbutton.js +1 -1
- package/lib/js/ui/components/buttons.js +2 -2
- package/lib/js/ui/components/nativemobile/buttons.d.ts +7 -1
- package/lib/js/ui/components/nativemobile/buttons.js +27 -4
- package/lib/js/ui/components/nativemobile/controlbar.js +1 -2
- package/lib/js/ui/components/nativemobile/playnext.d.ts +2 -1
- package/lib/js/ui/components/nativemobile/playnext.js +5 -4
- package/lib/js/ui/components/settingspanel.js +30 -23
- package/lib/js/ui/components/shared/playnextscreen.d.ts +2 -2
- package/lib/js/ui/components/shared/playnextscreen.js +14 -2
- package/lib/js/ui/components/shared/playnextstreen.test.d.ts +6 -0
- package/lib/js/ui/components/shared/playnextstreen.test.js +56 -0
- package/lib/js/ui/handlers/accessibilityhandler.js +26 -2
- package/lib/js/ui/handlers/accessibilityhandler.test.d.ts +1 -0
- package/lib/js/ui/handlers/accessibilityhandler.test.js +63 -0
- package/lib/js/ui/handlers/domhandlers.d.ts +3 -0
- package/lib/js/ui/handlers/domhandlers.js +7 -0
- package/lib/js/ui/handlers/domhandlers.test.d.ts +1 -0
- package/lib/js/ui/handlers/domhandlers.test.js +49 -0
- package/lib/js/ui/handlers/nicamhandler.js +1 -1
- package/lib/js/ui/handlers/streamhandler.js +4 -4
- package/lib/js/ui/nativemobileuicontainer.js +5 -5
- package/lib/js/ui/nativemobileuifactory.js +82 -42
- package/lib/js/ui/nativemobileuifactory.test.d.ts +1 -0
- package/lib/js/ui/nativemobileuifactory.test.js +66 -0
- package/lib/js/ui/uicontainer.js +4 -3
- package/lib/js/utilities/utilities.d.ts +3 -0
- package/lib/js/utilities/utilities.js +9 -0
- package/lib/lang/nl.json +1 -1
- package/lib/npoplayer-bridge.test.d.ts +1 -0
- package/lib/npoplayer-bridge.test.js +23 -0
- package/lib/npoplayer.d.ts +2 -1
- package/lib/npoplayer.js +13 -4
- package/lib/npoplayer.test.js +4 -4
- package/lib/package.json +3 -2
- package/lib/src/js/markers/updateLiveMarkers.d.ts +4 -0
- package/lib/src/js/markers/updateLiveMarkers.test.d.ts +1 -0
- package/lib/src/js/playeractions/handlers/error.d.ts +2 -2
- package/lib/src/js/playeractions/handlers/processsourceconfig.d.ts +1 -1
- package/lib/src/js/ui/components/nativemobile/buttons.d.ts +7 -1
- package/lib/src/js/ui/components/nativemobile/playnext.d.ts +2 -1
- package/lib/src/js/ui/components/shared/playnextscreen.d.ts +2 -2
- package/lib/src/js/ui/components/shared/playnextstreen.test.d.ts +6 -0
- package/lib/src/js/ui/handlers/accessibilityhandler.test.d.ts +1 -0
- package/lib/src/js/ui/handlers/domhandlers.d.ts +3 -0
- package/lib/src/js/ui/handlers/domhandlers.test.d.ts +1 -0
- package/lib/src/js/ui/nativemobileuifactory.test.d.ts +1 -0
- package/lib/src/js/utilities/utilities.d.ts +3 -0
- package/lib/src/npoplayer-bridge.test.d.ts +1 -0
- package/lib/src/npoplayer.d.ts +2 -1
- package/lib/src/types/interfaces.d.ts +26 -2
- package/lib/tests/mocks/mockNpoplayer.js +4 -1
- package/lib/types/interfaces.d.ts +26 -2
- package/lib/types/interfaces.js +12 -2
- package/package.json +3 -2
- package/src/scss/components/_advert.scss +34 -68
- package/src/scss/components/_hugeplaybacktogglebutton.scss +11 -0
- package/src/scss/components/_icons.scss +50 -40
- package/src/scss/components/_nicam.scss +9 -2
- package/src/scss/components/_playnext.scss +5 -1
- package/src/scss/components/_replay.scss +1 -1
- package/src/scss/components/_seekbar.scss +13 -0
- package/src/scss/components/_settingspanel.scss +37 -12
- package/src/scss/components/_textbuttons.scss +12 -11
- package/src/scss/components/_volumeslider.scss +5 -0
- package/src/scss/components/audio/_playbutton.scss +6 -0
- package/src/scss/components/audio/_volumeslider.scss +6 -1
- package/src/scss/npoplayer.css +80 -56
- package/src/scss/npoplayer.scss +3 -0
- package/src/scss/variants/_player-base.scss +1 -9
- package/src/scss/variants/_player-large.scss +20 -0
- package/src/scss/variants/_player-medium.scss +31 -1
- package/src/scss/variants/_player-native-mobile.scss +4 -0
- package/src/scss/variants/_player-small.scss +11 -8
- package/src/scss/vars/_colors.scss +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { PlayerAPI } from 'bitmovin-player';
|
|
1
2
|
import { type LocalizableText } from 'bitmovin-player-ui/dist/js/framework/localization/i18n';
|
|
2
3
|
export declare const jwtToBase64: (jwt: string) => string;
|
|
3
4
|
export declare const base64ToObject: (base64: string) => Record<string, any>;
|
|
@@ -11,3 +12,5 @@ export declare function getModuleExport(module: unknown): unknown;
|
|
|
11
12
|
export declare function isUrl(url: string): boolean;
|
|
12
13
|
export declare function isMediaUrl(url: string): Promise<boolean>;
|
|
13
14
|
export declare function replaceSpecialChars(text: string): string;
|
|
15
|
+
export declare function getPlayerElement(player: PlayerAPI, query: string): Element | null;
|
|
16
|
+
export declare function removePlayerElementClass(player: PlayerAPI, query: string, className: string): void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/lib/src/npoplayer.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ 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 NPOTagObject, type Section, type StreamObject, type StreamOptions, type UIComponents, NpoPlayerUIVariants } from './types/interfaces';
|
|
6
|
+
import { type DRMProfile, type ApiPayload, type NPOTagObject, type Section, type StreamObject, type StreamOptions, type UIComponents, type TimeLineMarker, NpoPlayerUIVariants } from './types/interfaces';
|
|
7
7
|
export { type PlayerConfig, type InitialisationProps, type NPOTagObject, type StreamOptions, NpoPlayerUIVariants, };
|
|
8
8
|
export default class NpoPlayer {
|
|
9
9
|
playerConfig: PlayerConfig;
|
|
@@ -41,6 +41,7 @@ export default class NpoPlayer {
|
|
|
41
41
|
goBackwards(seconds: number): void;
|
|
42
42
|
watchFromStart(): void;
|
|
43
43
|
showPlayNextScreen(): void;
|
|
44
|
+
updateMarkers(timeLineMarkers: TimeLineMarker[]): void;
|
|
44
45
|
cancelPlayNextScreen(): void;
|
|
45
46
|
hidePlayNextScreen(): void;
|
|
46
47
|
doPlayNext(): void;
|
|
@@ -95,6 +95,8 @@ export interface StreamOptions {
|
|
|
95
95
|
nicam?: string[] | null;
|
|
96
96
|
playNext?: PlayNext;
|
|
97
97
|
ster?: SterData;
|
|
98
|
+
enableSubtitles?: boolean;
|
|
99
|
+
useWidevineServerCertificate?: boolean;
|
|
98
100
|
}
|
|
99
101
|
export interface UIComponents {
|
|
100
102
|
errorMessageOverlay?: ErrorMessageOverlay;
|
|
@@ -118,15 +120,33 @@ export interface UIComponents {
|
|
|
118
120
|
export interface CustomMessageHandlerInterface {
|
|
119
121
|
defaultActionRequired?: boolean;
|
|
120
122
|
isChecked?: boolean;
|
|
123
|
+
playNext?: {
|
|
124
|
+
remainingCountDownDuration: number;
|
|
125
|
+
};
|
|
126
|
+
error?: ErrorEvent;
|
|
127
|
+
errorMessage?: {
|
|
128
|
+
input: string;
|
|
129
|
+
status: number;
|
|
130
|
+
};
|
|
121
131
|
}
|
|
122
132
|
export declare enum CustomMessages {
|
|
123
133
|
CLICK_CAST = "castButtonClick",
|
|
124
134
|
CLICK_GO_BACK_TO_LIVE = "clickGoBackToLive",
|
|
125
|
-
CLICK_PLAY_NEXT = "clickPlayNext",
|
|
126
135
|
CLICK_WATCH_FROM_START = "clickWatchFromStart",
|
|
127
|
-
|
|
136
|
+
DO_ERROR = "doError",
|
|
137
|
+
ERROR_TRIGGERED = "errorTriggerd",
|
|
128
138
|
JAVASCRIPT_READY = "javascriptReady",
|
|
139
|
+
PLAY_NEXT_CANCEL_CLICK = "playNextCancelClick",
|
|
140
|
+
PLAY_NEXT_COUNTDOWN_CANCELED = "playNextCountdownCanceled",
|
|
141
|
+
PLAY_NEXT_COUNTDOWN_FINISHED = "playNextCountdownFinished",
|
|
142
|
+
PLAY_NEXT_COUNTDOWN_PROGRESS = "playNextCountdownProgress",
|
|
143
|
+
PLAY_NEXT_OVERLAY_HIDDEN = "playNextOverlayHidden",
|
|
144
|
+
PLAY_NEXT_OVERLAY_HIDE = "playNextOverlayHide",
|
|
145
|
+
PLAY_NEXT_OVERLAY_SHOW = "playNextOverlayShow",
|
|
146
|
+
PLAY_NEXT_OVERLAY_SHOWN = "playNextOverlayShown",
|
|
147
|
+
PLAY_NEXT_PROCEED_CLICK = "playNextProceedClick",
|
|
129
148
|
SET_STREAM_LINK = "setStreamLink",
|
|
149
|
+
SET_WEB_DATA = "setWebData",
|
|
130
150
|
TOGGLE_AIRPLAY = "toggleAirplay",
|
|
131
151
|
TOGGLE_FULLSCREEN = "toggleFullScreen",
|
|
132
152
|
TOGGLE_FULLSCREEN_UI = "toggleFullscreenUI",
|
|
@@ -147,4 +167,8 @@ export interface PlayNext {
|
|
|
147
167
|
proceedCallback?: () => void;
|
|
148
168
|
cancelCallback?: () => void;
|
|
149
169
|
}
|
|
170
|
+
export type TimeLineMarker = {
|
|
171
|
+
time: number;
|
|
172
|
+
title: string;
|
|
173
|
+
};
|
|
150
174
|
export {};
|
|
@@ -95,6 +95,8 @@ export interface StreamOptions {
|
|
|
95
95
|
nicam?: string[] | null;
|
|
96
96
|
playNext?: PlayNext;
|
|
97
97
|
ster?: SterData;
|
|
98
|
+
enableSubtitles?: boolean;
|
|
99
|
+
useWidevineServerCertificate?: boolean;
|
|
98
100
|
}
|
|
99
101
|
export interface UIComponents {
|
|
100
102
|
errorMessageOverlay?: ErrorMessageOverlay;
|
|
@@ -118,15 +120,33 @@ export interface UIComponents {
|
|
|
118
120
|
export interface CustomMessageHandlerInterface {
|
|
119
121
|
defaultActionRequired?: boolean;
|
|
120
122
|
isChecked?: boolean;
|
|
123
|
+
playNext?: {
|
|
124
|
+
remainingCountDownDuration: number;
|
|
125
|
+
};
|
|
126
|
+
error?: ErrorEvent;
|
|
127
|
+
errorMessage?: {
|
|
128
|
+
input: string;
|
|
129
|
+
status: number;
|
|
130
|
+
};
|
|
121
131
|
}
|
|
122
132
|
export declare enum CustomMessages {
|
|
123
133
|
CLICK_CAST = "castButtonClick",
|
|
124
134
|
CLICK_GO_BACK_TO_LIVE = "clickGoBackToLive",
|
|
125
|
-
CLICK_PLAY_NEXT = "clickPlayNext",
|
|
126
135
|
CLICK_WATCH_FROM_START = "clickWatchFromStart",
|
|
127
|
-
|
|
136
|
+
DO_ERROR = "doError",
|
|
137
|
+
ERROR_TRIGGERED = "errorTriggerd",
|
|
128
138
|
JAVASCRIPT_READY = "javascriptReady",
|
|
139
|
+
PLAY_NEXT_CANCEL_CLICK = "playNextCancelClick",
|
|
140
|
+
PLAY_NEXT_COUNTDOWN_CANCELED = "playNextCountdownCanceled",
|
|
141
|
+
PLAY_NEXT_COUNTDOWN_FINISHED = "playNextCountdownFinished",
|
|
142
|
+
PLAY_NEXT_COUNTDOWN_PROGRESS = "playNextCountdownProgress",
|
|
143
|
+
PLAY_NEXT_OVERLAY_HIDDEN = "playNextOverlayHidden",
|
|
144
|
+
PLAY_NEXT_OVERLAY_HIDE = "playNextOverlayHide",
|
|
145
|
+
PLAY_NEXT_OVERLAY_SHOW = "playNextOverlayShow",
|
|
146
|
+
PLAY_NEXT_OVERLAY_SHOWN = "playNextOverlayShown",
|
|
147
|
+
PLAY_NEXT_PROCEED_CLICK = "playNextProceedClick",
|
|
129
148
|
SET_STREAM_LINK = "setStreamLink",
|
|
149
|
+
SET_WEB_DATA = "setWebData",
|
|
130
150
|
TOGGLE_AIRPLAY = "toggleAirplay",
|
|
131
151
|
TOGGLE_FULLSCREEN = "toggleFullScreen",
|
|
132
152
|
TOGGLE_FULLSCREEN_UI = "toggleFullscreenUI",
|
|
@@ -147,4 +167,8 @@ export interface PlayNext {
|
|
|
147
167
|
proceedCallback?: () => void;
|
|
148
168
|
cancelCallback?: () => void;
|
|
149
169
|
}
|
|
170
|
+
export type TimeLineMarker = {
|
|
171
|
+
time: number;
|
|
172
|
+
title: string;
|
|
173
|
+
};
|
|
150
174
|
export {};
|
package/lib/types/interfaces.js
CHANGED
|
@@ -2,11 +2,21 @@ export var CustomMessages;
|
|
|
2
2
|
(function (CustomMessages) {
|
|
3
3
|
CustomMessages["CLICK_CAST"] = "castButtonClick";
|
|
4
4
|
CustomMessages["CLICK_GO_BACK_TO_LIVE"] = "clickGoBackToLive";
|
|
5
|
-
CustomMessages["CLICK_PLAY_NEXT"] = "clickPlayNext";
|
|
6
5
|
CustomMessages["CLICK_WATCH_FROM_START"] = "clickWatchFromStart";
|
|
7
|
-
CustomMessages["
|
|
6
|
+
CustomMessages["DO_ERROR"] = "doError";
|
|
7
|
+
CustomMessages["ERROR_TRIGGERED"] = "errorTriggerd";
|
|
8
8
|
CustomMessages["JAVASCRIPT_READY"] = "javascriptReady";
|
|
9
|
+
CustomMessages["PLAY_NEXT_CANCEL_CLICK"] = "playNextCancelClick";
|
|
10
|
+
CustomMessages["PLAY_NEXT_COUNTDOWN_CANCELED"] = "playNextCountdownCanceled";
|
|
11
|
+
CustomMessages["PLAY_NEXT_COUNTDOWN_FINISHED"] = "playNextCountdownFinished";
|
|
12
|
+
CustomMessages["PLAY_NEXT_COUNTDOWN_PROGRESS"] = "playNextCountdownProgress";
|
|
13
|
+
CustomMessages["PLAY_NEXT_OVERLAY_HIDDEN"] = "playNextOverlayHidden";
|
|
14
|
+
CustomMessages["PLAY_NEXT_OVERLAY_HIDE"] = "playNextOverlayHide";
|
|
15
|
+
CustomMessages["PLAY_NEXT_OVERLAY_SHOW"] = "playNextOverlayShow";
|
|
16
|
+
CustomMessages["PLAY_NEXT_OVERLAY_SHOWN"] = "playNextOverlayShown";
|
|
17
|
+
CustomMessages["PLAY_NEXT_PROCEED_CLICK"] = "playNextProceedClick";
|
|
9
18
|
CustomMessages["SET_STREAM_LINK"] = "setStreamLink";
|
|
19
|
+
CustomMessages["SET_WEB_DATA"] = "setWebData";
|
|
10
20
|
CustomMessages["TOGGLE_AIRPLAY"] = "toggleAirplay";
|
|
11
21
|
CustomMessages["TOGGLE_FULLSCREEN"] = "toggleFullScreen";
|
|
12
22
|
CustomMessages["TOGGLE_FULLSCREEN_UI"] = "toggleFullscreenUI";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@npo/player",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.21.0",
|
|
4
4
|
"description": "NPO Player",
|
|
5
5
|
"author": "Publieke Omroep <player@npo.nl>",
|
|
6
6
|
"contributors": [
|
|
@@ -25,7 +25,8 @@
|
|
|
25
25
|
"build:ts": "bash build-lib.sh",
|
|
26
26
|
"test": "jest",
|
|
27
27
|
"test:ci": "jest --collectCoverage --testResultsProcessor=jest-sonar-reporter",
|
|
28
|
-
"version:dev": "npm version prerelease --preid=dev --no-git-tag-version"
|
|
28
|
+
"version:dev": "npm version prerelease --preid=dev --no-git-tag-version",
|
|
29
|
+
"prepublishOnly": "aws codeartifact login --tool npm --namespace @npo-player --repository npo-player --domain npoplayer $([ -z \"$TF_BUILD\" ] && echo \" --profile codeartifact\")"
|
|
29
30
|
},
|
|
30
31
|
"files": [
|
|
31
32
|
"LICENSE",
|
|
@@ -36,21 +36,26 @@
|
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
+
.bmpui-current-time {
|
|
40
|
+
display: none;
|
|
41
|
+
}
|
|
42
|
+
|
|
39
43
|
.bmpui-adLabel {
|
|
40
44
|
position: absolute;
|
|
41
45
|
display: flex;
|
|
42
46
|
align-items: center;
|
|
43
|
-
top:
|
|
44
|
-
left:
|
|
45
|
-
font-
|
|
46
|
-
font-
|
|
47
|
+
top: 12px;
|
|
48
|
+
left: 12px;
|
|
49
|
+
font-size: 14px;
|
|
50
|
+
font-family: 'NPOSans', sans-serif;
|
|
47
51
|
|
|
48
52
|
&::before {
|
|
49
53
|
content: '';
|
|
50
54
|
display: inline-block;
|
|
51
|
-
height:
|
|
52
|
-
width:
|
|
55
|
+
height: 57px;
|
|
56
|
+
width: 48px;
|
|
53
57
|
margin-right: 8px;
|
|
58
|
+
background-size: 100% 100%;
|
|
54
59
|
background-image: url("data:image/svg+xml,%3Csvg width='59' height='44' viewBox='0 0 39 30' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M0 15.0338L19.4156 0.414307L38.8238 15.0338L19.4156 29.5855L0 15.0338ZM19.4223 27.5128L36.0603 15.0303L19.4223 2.48968L2.76764 15.0301L19.4223 27.5128Z' fill='white'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M13.2215 13.9887C12.4213 13.3085 11.7303 12.721 11.7303 11.9329C11.7303 11.2697 12.064 10.8895 12.6461 10.8895C12.8494 10.8895 13.5139 10.9733 13.6141 12.0211L15.2164 11.8445C15.0406 10.3315 14.1464 9.42878 12.8164 9.42878C11.1077 9.42878 10.1279 10.3468 10.1279 11.9472C10.1279 13.5345 11.202 14.4297 12.1495 15.2195C12.9488 15.8859 13.704 16.5152 13.704 17.4532C13.704 18.0625 13.3087 18.4261 12.6463 18.4261C12.0333 18.4261 11.6413 17.8635 11.5647 16.8842C11.4962 16.894 10.0231 17.1058 9.96039 17.1152C10.0361 18.5001 10.8656 19.8866 12.5614 19.8866C14.2547 19.8866 15.3066 18.8944 15.3066 17.297C15.3062 15.7618 14.1987 14.8196 13.2215 13.9887ZM15.7374 13.4513V12.1456H16.6171V10.0881H18.2065V12.1456H19.2708V13.4513H18.2067V17.8506C18.2067 18.2478 18.377 18.4748 18.746 18.4748H19.271V19.837C19.0583 19.8936 18.8736 19.922 18.4762 19.922C17.2843 19.922 16.6173 19.3688 16.6173 18.2048V13.4513H15.7374ZM26.2467 19.7803V12.1458H27.7649V13.0398H27.7933C28.1768 12.3871 28.8435 12.0041 29.5958 12.0041H29.922V13.6642C29.6383 13.5932 29.3688 13.5081 28.9002 13.5081C28.3611 13.5081 27.8358 13.8485 27.8358 14.5297V19.7803H26.2467ZM23.4859 17.5288C23.4599 18.3273 23.1512 18.6659 22.6083 18.6659C22.0409 18.6659 21.7284 18.2968 21.7284 17.4167V16.3098H25.0775V14.8908C25.0775 13.2164 24.4249 12.0528 22.6085 12.0528C20.7921 12.0528 20.1395 13.2164 20.1395 14.8908V17.133C20.1395 18.8073 20.7921 19.9714 22.6085 19.9714C24.2771 19.9714 24.9661 18.9917 25.0655 17.5288H23.4859ZM21.7284 14.6073C21.7284 13.7275 22.0409 13.3583 22.6083 13.3583C23.1761 13.3583 23.4882 13.7275 23.4882 14.6073V15.0049H21.7284V14.6073Z' fill='white'/%3E%3C/svg%3E%0A");
|
|
55
60
|
}
|
|
56
61
|
}
|
|
@@ -62,31 +67,36 @@
|
|
|
62
67
|
left: 0;
|
|
63
68
|
top: 0;
|
|
64
69
|
|
|
65
|
-
&::before
|
|
70
|
+
&::before,
|
|
71
|
+
&::after {
|
|
66
72
|
content: '';
|
|
67
73
|
position: absolute;
|
|
68
|
-
|
|
69
|
-
height: 161px;
|
|
74
|
+
left: 0;
|
|
70
75
|
width: 100%;
|
|
76
|
+
z-index: 0;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
&::before {
|
|
71
80
|
top: 0;
|
|
72
|
-
|
|
81
|
+
background: var(--npo-player-topcolor);
|
|
82
|
+
height: 56px;
|
|
73
83
|
}
|
|
74
84
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
height: fit-content;
|
|
80
|
-
width: fit-content;
|
|
81
|
-
|
|
82
|
-
.bmpui-label {
|
|
83
|
-
font-family: 'NPOSansRegular', sans-serif;
|
|
84
|
-
font-weight: normal;
|
|
85
|
-
font-size: 12px;
|
|
86
|
-
line-height: 0;
|
|
87
|
-
text-align: left;
|
|
88
|
-
}
|
|
85
|
+
&::after {
|
|
86
|
+
bottom: 0;
|
|
87
|
+
background: var(--npo-player-bottomcolor);
|
|
88
|
+
height: 112px;
|
|
89
89
|
}
|
|
90
|
+
|
|
91
|
+
.bmpui-container-wrapper {
|
|
92
|
+
z-index: 1;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.bmpui-ui-controlbar,
|
|
97
|
+
.bmpui-ui-controlbar-bottom {
|
|
98
|
+
background: none;
|
|
99
|
+
z-index: 2;
|
|
90
100
|
}
|
|
91
101
|
|
|
92
102
|
.bmpui-ui-playbacktoggle-overlay {
|
|
@@ -100,48 +110,4 @@
|
|
|
100
110
|
opacity: 0;
|
|
101
111
|
}
|
|
102
112
|
}
|
|
103
|
-
|
|
104
|
-
&.bmpui-layout-max-width-400,
|
|
105
|
-
&.bmpui-layout-max-width-600 {
|
|
106
|
-
.bmpui-controlbar-textbuttons {
|
|
107
|
-
display: flex;
|
|
108
|
-
width: 100%;
|
|
109
|
-
justify-content: center;
|
|
110
|
-
padding-right: 0;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
.bmpui-adLabel {
|
|
114
|
-
left: 10px;
|
|
115
|
-
top: 10px;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
.bmpui-layout-max-width-400 {
|
|
120
|
-
.bmpui-adLabel {
|
|
121
|
-
top: 10px;
|
|
122
|
-
left: 10px;
|
|
123
|
-
font-size: 14px;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
&.bmpui-layout-max-width-800 {
|
|
128
|
-
.bmpui-controlbar-textbuttons {
|
|
129
|
-
position: absolute;
|
|
130
|
-
padding: 24px;
|
|
131
|
-
align-items: flex-start;
|
|
132
|
-
justify-content: flex-start;
|
|
133
|
-
|
|
134
|
-
> .bmpui-container-wrapper {
|
|
135
|
-
display: flex;
|
|
136
|
-
align-items: center;
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
.bmpui-adLabel {
|
|
141
|
-
position: relative;
|
|
142
|
-
top: 0;
|
|
143
|
-
left: 0;
|
|
144
|
-
margin-right: 16px;
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
113
|
}
|
|
@@ -8,10 +8,21 @@
|
|
|
8
8
|
.bmpui-image {
|
|
9
9
|
animation: none;
|
|
10
10
|
}
|
|
11
|
+
|
|
12
|
+
&:focus-visible {
|
|
13
|
+
.bmpui-image {
|
|
14
|
+
@include focusStyle(-2px);
|
|
15
|
+
z-index: 1;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
11
18
|
}
|
|
12
19
|
}
|
|
13
20
|
}
|
|
14
21
|
|
|
22
|
+
&.bmpui-controls-shown .bmpui-ui-hugeplaybacktogglebutton:focus {
|
|
23
|
+
box-shadow: none !important;
|
|
24
|
+
}
|
|
25
|
+
|
|
15
26
|
&.bmpui-player-state-playing {
|
|
16
27
|
.bmpui-ui-playbacktoggle-overlay {
|
|
17
28
|
display: unset;
|
|
@@ -7,134 +7,144 @@
|
|
|
7
7
|
.bmpui-ui-casttogglebutton,
|
|
8
8
|
.bmpui-ui-airplaytogglebutton,
|
|
9
9
|
.bmpui-ui-piptogglebutton {
|
|
10
|
-
|
|
10
|
+
background-image: none;
|
|
11
|
+
width: 21px;
|
|
11
12
|
height: 40px;
|
|
12
|
-
padding: 0;
|
|
13
|
+
padding: 0 5px;
|
|
13
14
|
margin: 0;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
|
|
16
|
+
&:focus-visible {
|
|
17
|
+
@include focusStyle();
|
|
18
|
+
border-radius: 2px;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.bmpui-label {
|
|
22
|
+
width: 21px;
|
|
23
|
+
height: 40px;
|
|
24
|
+
padding: 0;
|
|
25
|
+
margin: 0;
|
|
26
|
+
background-size: contain;
|
|
27
|
+
background-color: var(--npo-player-iconcolor);
|
|
28
|
+
background-image: none !important;
|
|
29
|
+
mask-size: contain;
|
|
30
|
+
mask-position: 50% 50%;
|
|
31
|
+
mask-repeat: no-repeat;
|
|
32
|
+
display: block;
|
|
33
|
+
color: transparent;
|
|
34
|
+
}
|
|
20
35
|
}
|
|
21
36
|
|
|
22
37
|
.bmpui-ui-settingstogglebutton,
|
|
23
38
|
.bmpui-ui-casttogglebutton,
|
|
24
39
|
.bmpui-ui-airplaytogglebutton,
|
|
25
40
|
.bmpui-ui-piptogglebutton {
|
|
26
|
-
&.bmpui-on {
|
|
41
|
+
&.bmpui-on .bmpui-label {
|
|
27
42
|
background-color: var(--npo-player-iconcolor-active);
|
|
28
43
|
}
|
|
29
44
|
}
|
|
30
45
|
|
|
31
46
|
.bmpui-controlbar-bottom {
|
|
32
47
|
.bmpui-container-wrapper {
|
|
33
|
-
gap:
|
|
48
|
+
gap: 10px;
|
|
34
49
|
}
|
|
35
50
|
}
|
|
36
51
|
|
|
37
52
|
/* Icon rewind 10 sec */
|
|
38
|
-
.bmpui-ui-rewindbutton {
|
|
53
|
+
.bmpui-ui-rewindbutton .bmpui-label {
|
|
39
54
|
mask-image: var(--npo-player-icon-backward);
|
|
40
55
|
}
|
|
41
56
|
|
|
42
57
|
/* Icon forward 10 sec */
|
|
43
|
-
.bmpui-ui-forwardbutton {
|
|
58
|
+
.bmpui-ui-forwardbutton .bmpui-label {
|
|
44
59
|
mask-image: var(--npo-player-icon-forward);
|
|
45
60
|
}
|
|
46
61
|
|
|
47
|
-
.bmpui-ui-rewindbutton:hover,
|
|
48
|
-
.bmpui-ui-forwardbutton:hover {
|
|
49
|
-
filter: drop-shadow(0 0 1px var(--npo-player-iconcolor));
|
|
50
|
-
}
|
|
51
|
-
|
|
52
62
|
/* Icon Small Play/Pause Toggle */
|
|
53
63
|
.bmpui-ui-playbacktogglebutton {
|
|
54
|
-
&.bmpui-off {
|
|
64
|
+
&.bmpui-off .bmpui-label {
|
|
55
65
|
mask-image: var(--npo-player-icon-play);
|
|
56
66
|
}
|
|
57
67
|
|
|
58
|
-
&.bmpui-on {
|
|
68
|
+
&.bmpui-on .bmpui-label {
|
|
59
69
|
mask-image: var(--npo-player-icon-pause);
|
|
60
70
|
}
|
|
61
71
|
}
|
|
62
72
|
|
|
63
73
|
/* Icon Full Screen */
|
|
64
74
|
.bmpui-ui-fullscreentogglebutton {
|
|
65
|
-
&.bmpui-off {
|
|
75
|
+
&.bmpui-off .bmpui-label {
|
|
66
76
|
mask-image: var(--npo-player-icon-fullscreen);
|
|
67
77
|
}
|
|
68
78
|
|
|
69
|
-
&.bmpui-on {
|
|
79
|
+
&.bmpui-on .bmpui-label {
|
|
70
80
|
mask-image: var(--npo-player-icon-fullscreen-active);
|
|
71
81
|
}
|
|
72
82
|
}
|
|
73
83
|
|
|
74
84
|
/* Icon Settings */
|
|
75
85
|
.bmpui-ui-settingstogglebutton {
|
|
76
|
-
&.bmpui-off {
|
|
86
|
+
&.bmpui-off .bmpui-label {
|
|
77
87
|
mask-image: var(--npo-player-icon-settings);
|
|
78
88
|
}
|
|
79
89
|
|
|
80
|
-
&.bmpui-on {
|
|
90
|
+
&.bmpui-on .bmpui-label {
|
|
81
91
|
mask-image: var(--npo-player-icon-settings-active);
|
|
82
92
|
}
|
|
83
93
|
}
|
|
84
94
|
|
|
85
95
|
/* Icon Cast */
|
|
86
96
|
.bmpui-ui-casttogglebutton {
|
|
87
|
-
&.bmpui-off {
|
|
97
|
+
&.bmpui-off .bmpui-label {
|
|
88
98
|
mask-image: var(--npo-player-icon-cast);
|
|
89
99
|
}
|
|
90
100
|
|
|
91
|
-
&.bmpui-on {
|
|
101
|
+
&.bmpui-on .bmpui-label {
|
|
92
102
|
mask-image: var(--npo-player-icon-cast-active);
|
|
93
103
|
}
|
|
94
104
|
}
|
|
95
105
|
|
|
96
106
|
/* Icon Airplay */
|
|
97
107
|
.bmpui-ui-airplaytogglebutton {
|
|
98
|
-
&.bmpui-off {
|
|
108
|
+
&.bmpui-off .bmpui-label {
|
|
99
109
|
mask-image: var(--npo-player-icon-airplay);
|
|
100
110
|
}
|
|
101
111
|
|
|
102
|
-
&.bmpui-on {
|
|
112
|
+
&.bmpui-on .bmpui-label {
|
|
103
113
|
mask-image: var(--npo-player-icon-airplay-active);
|
|
104
114
|
}
|
|
105
115
|
}
|
|
106
116
|
|
|
107
117
|
/* Icon PIP */
|
|
108
118
|
.bmpui-ui-piptogglebutton {
|
|
109
|
-
&.bmpui-off {
|
|
119
|
+
&.bmpui-off .bmpui-label {
|
|
110
120
|
mask-image: var(--npo-player-icon-pip);
|
|
111
121
|
}
|
|
112
122
|
|
|
113
|
-
&.bmpui-on {
|
|
123
|
+
&.bmpui-on .bmpui-label {
|
|
114
124
|
mask-image: var(--npo-player-icon-pip-active);
|
|
115
125
|
}
|
|
116
126
|
}
|
|
117
127
|
|
|
118
128
|
/* Icon Volume */
|
|
119
|
-
.bmpui-ui-volumetogglebutton.bmpui-muted {
|
|
129
|
+
.bmpui-ui-volumetogglebutton.bmpui-muted .bmpui-label {
|
|
120
130
|
mask-image: var(--npo-player-icon-volume-muted);
|
|
121
131
|
}
|
|
122
132
|
|
|
123
|
-
.bmpui-ui-volumetogglebutton.bmpui-unmuted[data-bmpui-volume-level-tens='1'],
|
|
124
|
-
.bmpui-ui-volumetogglebutton.bmpui-unmuted[data-bmpui-volume-level-tens='2'],
|
|
125
|
-
.bmpui-ui-volumetogglebutton.bmpui-unmuted[data-bmpui-volume-level-tens='3'],
|
|
126
|
-
.bmpui-ui-volumetogglebutton.bmpui-unmuted[data-bmpui-volume-level-tens='4'] {
|
|
133
|
+
.bmpui-ui-volumetogglebutton.bmpui-unmuted[data-bmpui-volume-level-tens='1'] .bmpui-label,
|
|
134
|
+
.bmpui-ui-volumetogglebutton.bmpui-unmuted[data-bmpui-volume-level-tens='2'] .bmpui-label,
|
|
135
|
+
.bmpui-ui-volumetogglebutton.bmpui-unmuted[data-bmpui-volume-level-tens='3'] .bmpui-label,
|
|
136
|
+
.bmpui-ui-volumetogglebutton.bmpui-unmuted[data-bmpui-volume-level-tens='4'] .bmpui-label {
|
|
127
137
|
mask-image: var(--npo-player-icon-volume-1);
|
|
128
138
|
}
|
|
129
139
|
|
|
130
|
-
.bmpui-ui-volumetogglebutton.bmpui-unmuted[data-bmpui-volume-level-tens='5'],
|
|
131
|
-
.bmpui-ui-volumetogglebutton.bmpui-unmuted[data-bmpui-volume-level-tens='6'],
|
|
132
|
-
.bmpui-ui-volumetogglebutton.bmpui-unmuted[data-bmpui-volume-level-tens='7'] {
|
|
140
|
+
.bmpui-ui-volumetogglebutton.bmpui-unmuted[data-bmpui-volume-level-tens='5'] .bmpui-label,
|
|
141
|
+
.bmpui-ui-volumetogglebutton.bmpui-unmuted[data-bmpui-volume-level-tens='6'] .bmpui-label,
|
|
142
|
+
.bmpui-ui-volumetogglebutton.bmpui-unmuted[data-bmpui-volume-level-tens='7'] .bmpui-label {
|
|
133
143
|
mask-image: var(--npo-player-icon-volume-2);
|
|
134
144
|
}
|
|
135
145
|
|
|
136
|
-
.bmpui-ui-volumetogglebutton.bmpui-unmuted[data-bmpui-volume-level-tens='8'],
|
|
137
|
-
.bmpui-ui-volumetogglebutton.bmpui-unmuted[data-bmpui-volume-level-tens='9'],
|
|
138
|
-
.bmpui-ui-volumetogglebutton.bmpui-unmuted[data-bmpui-volume-level-tens='10'] {
|
|
146
|
+
.bmpui-ui-volumetogglebutton.bmpui-unmuted[data-bmpui-volume-level-tens='8'] .bmpui-label,
|
|
147
|
+
.bmpui-ui-volumetogglebutton.bmpui-unmuted[data-bmpui-volume-level-tens='9'] .bmpui-label,
|
|
148
|
+
.bmpui-ui-volumetogglebutton.bmpui-unmuted[data-bmpui-volume-level-tens='10'] .bmpui-label {
|
|
139
149
|
mask-image: var(--npo-player-icon-volume-3);
|
|
140
150
|
}
|
|
@@ -83,8 +83,8 @@
|
|
|
83
83
|
&.bmpui-player-state-prepared,
|
|
84
84
|
&.bmpui-player-state-prepared.bmpui-layout-max-width-400,
|
|
85
85
|
&.bmpui-player-state-prepared.bmpui-layout-max-width-600,
|
|
86
|
-
&.show-nicam:not(.bmpui-player-state-paused).bmpui-layout-max-width-400,
|
|
87
|
-
&.show-nicam:not(.bmpui-player-state-paused).bmpui-layout-max-width-600 {
|
|
86
|
+
&.bmpui-show-nicam:not(.bmpui-player-state-paused).bmpui-layout-max-width-400,
|
|
87
|
+
&.bmpui-show-nicam:not(.bmpui-player-state-paused).bmpui-layout-max-width-600 {
|
|
88
88
|
.bmpui-metadata,
|
|
89
89
|
.bmpui-metadata.bmpui-title-bar {
|
|
90
90
|
display: block;
|
|
@@ -97,4 +97,11 @@
|
|
|
97
97
|
display: none;
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
|
+
|
|
101
|
+
&.bmpui-settings-panel-shown.bmpui-layout-max-width-400,
|
|
102
|
+
&.bmpui-settings-panel-shown.bmpui-layout-max-width-600 {
|
|
103
|
+
.bmpui-metadata {
|
|
104
|
+
padding-top: 40px;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
100
107
|
}
|
|
@@ -29,12 +29,16 @@
|
|
|
29
29
|
|
|
30
30
|
.ui-playNextButton {
|
|
31
31
|
background-color: var(--npo-player-textcolor);
|
|
32
|
-
width: 200px;
|
|
33
32
|
white-space: nowrap;
|
|
34
33
|
|
|
35
34
|
.bmpui-label {
|
|
36
35
|
color: var(--npo-player-graycolor-dark);
|
|
37
36
|
}
|
|
37
|
+
|
|
38
|
+
&:focus-visible {
|
|
39
|
+
@include focusStyle();
|
|
40
|
+
outline-color: var(--npo-player-primarycolor);
|
|
41
|
+
}
|
|
38
42
|
}
|
|
39
43
|
}
|
|
40
44
|
}
|
|
@@ -5,6 +5,11 @@ $seekbar-border-radius: 2px;
|
|
|
5
5
|
position: relative;
|
|
6
6
|
cursor: default;
|
|
7
7
|
|
|
8
|
+
&:focus-visible {
|
|
9
|
+
@include focusStyle(2px);
|
|
10
|
+
border-radius: 2px;
|
|
11
|
+
}
|
|
12
|
+
|
|
8
13
|
.bmpui-seekbar {
|
|
9
14
|
cursor: pointer;
|
|
10
15
|
height: $seekbar-height;
|
|
@@ -28,6 +33,14 @@ $seekbar-border-radius: 2px;
|
|
|
28
33
|
background-color: var(--npo-player-seekbar-background);
|
|
29
34
|
opacity: 0.75;
|
|
30
35
|
}
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
.bmpui-npo-livestream-marker{
|
|
39
|
+
background-color: var(--npo-player-seekbar-playbackposition-background);
|
|
40
|
+
border-right: var(--npo-player-secondarycolor) 3px solid;
|
|
41
|
+
pointer-events: none;
|
|
42
|
+
}
|
|
43
|
+
|
|
31
44
|
|
|
32
45
|
.bmpui-seekbar-playbackposition {
|
|
33
46
|
background: var(--npo-player-seekbar-playbackposition-background);
|