@latest-thinking/lt-player 1.0.8 → 1.0.9-b
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/dist/css/lt-player-main.css +1 -1
- package/dist/css/lt-player-main.css.map +1 -1
- package/dist/js/lt-player-main.js +1 -1
- package/dist/js/lt-player-main.js.map +1 -1
- package/package.json +1 -1
- package/src/assets/css/sample.css +12 -0
- package/src/assets/sass/app.scss +0 -12
- package/src/assets/sass/core/_player.scss +6 -0
- package/src/assets/sass/sections/_additional-info.scss +7 -0
- package/src/assets/sass/sections/controllers/_botom.scss +38 -0
- package/src/components/config/LTPlayerConfig.ts +2 -0
- package/src/components/controls/LTPlayerControlsEvents.ts +42 -45
- package/src/components/controls/settings/LTPlayerDesktopSettingsControllers.ts +48 -5
- package/src/components/controls/settings/LTPlayerMobileSettingsControllers.ts +45 -34
- package/src/components/events/LTPlayerDesktop.ts +10 -2
- package/src/components/events/LTPlayerMobile.ts +17 -5
- package/src/views/controls.handlebars +28 -17
package/package.json
CHANGED
package/src/assets/sass/app.scss
CHANGED
|
@@ -28,18 +28,6 @@ body {
|
|
|
28
28
|
margin: 0;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
.container-text-portrait-player {
|
|
32
|
-
display: flex;
|
|
33
|
-
max-width: 800px;
|
|
34
|
-
max-height: 800px;
|
|
35
|
-
margin-bottom: 3rem;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
.container-text-landscape-player {
|
|
39
|
-
display: flex;
|
|
40
|
-
max-width: 1000px;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
31
|
//---------------------------------------------
|
|
44
32
|
// 3. General
|
|
45
33
|
//---------------------------------------------
|
|
@@ -50,6 +50,31 @@
|
|
|
50
50
|
margin-left: auto;
|
|
51
51
|
justify-content: end;
|
|
52
52
|
flex: 1;
|
|
53
|
+
|
|
54
|
+
.plyr__controls_speed-button {
|
|
55
|
+
width: 30px;
|
|
56
|
+
height: 30px;
|
|
57
|
+
background-color: $default-lt-player-blue;
|
|
58
|
+
font-size: $lt-player-font-size-xs;
|
|
59
|
+
font-weight: $lt-player-font-weight-md;
|
|
60
|
+
|
|
61
|
+
&:hover {
|
|
62
|
+
background-color: darken($default-lt-player-blue, 5%);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
&:focus,
|
|
66
|
+
&:active {
|
|
67
|
+
background-color: $default-lt-player-blue;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
span {
|
|
71
|
+
font-size: 10px;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
[class="playback-speed--1.25X"] {
|
|
75
|
+
font-size: 8px;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
53
78
|
}
|
|
54
79
|
|
|
55
80
|
.skip-backward-seconds,
|
|
@@ -313,6 +338,19 @@
|
|
|
313
338
|
padding: 16px;
|
|
314
339
|
}
|
|
315
340
|
}
|
|
341
|
+
|
|
342
|
+
.plyr__controls_speed-button {
|
|
343
|
+
width: 40px;
|
|
344
|
+
height: 40px;
|
|
345
|
+
|
|
346
|
+
span {
|
|
347
|
+
font-size: 14px;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
[class="playback-speed--1.25X"] {
|
|
351
|
+
font-size: 9px;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
316
354
|
}
|
|
317
355
|
}
|
|
318
356
|
}
|
|
@@ -246,7 +246,6 @@ export namespace LTPlayerControlsEvents {
|
|
|
246
246
|
instance.plyr.fullscreen.toggle();
|
|
247
247
|
})
|
|
248
248
|
}
|
|
249
|
-
|
|
250
249
|
}
|
|
251
250
|
|
|
252
251
|
fullscreenIcon(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType, type: string){
|
|
@@ -612,18 +611,19 @@ export namespace LTPlayerControlsEvents {
|
|
|
612
611
|
}
|
|
613
612
|
|
|
614
613
|
fullScreenButtons(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {
|
|
615
|
-
|
|
616
614
|
let playerControlsSelector = instance.plyr.elements.controls;
|
|
617
615
|
|
|
618
616
|
const fullScreenButtonContainer = playerControlsSelector.querySelector('.fullscreen-custom-control');
|
|
619
617
|
let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(fullScreenButtonContainer);
|
|
620
618
|
|
|
621
619
|
if (mobileEvent) {
|
|
622
|
-
mobileEvent.on('singletap', function LTPlayerMobileFullScreen() {
|
|
620
|
+
mobileEvent.on('singletap', function LTPlayerMobileFullScreen(event) {
|
|
621
|
+
event.preventDefault();
|
|
623
622
|
instance.plyr.fullscreen.toggle();
|
|
624
623
|
})
|
|
625
624
|
}
|
|
626
625
|
}
|
|
626
|
+
|
|
627
627
|
playPauseIcon(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType, type: string) {
|
|
628
628
|
let common = this.common;
|
|
629
629
|
let instanceMobile = this;
|
|
@@ -750,49 +750,46 @@ export namespace LTPlayerControlsEvents {
|
|
|
750
750
|
}
|
|
751
751
|
}
|
|
752
752
|
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
// volumeMute.classList.add('d-none');
|
|
766
|
-
// } else {
|
|
767
|
-
// volumeUp.classList.remove('d-none');
|
|
768
|
-
// volumeMute.classList.remove('d-none');
|
|
769
|
-
// volumeUp.classList.add('d-none');
|
|
770
|
-
// }
|
|
771
|
-
// }
|
|
772
|
-
//
|
|
773
|
-
// const setVolume = (): string => {
|
|
774
|
-
// if (instance.plyr.muted) {
|
|
775
|
-
// instance.plyr.muted = false;
|
|
776
|
-
// return 'up';
|
|
777
|
-
// } else {
|
|
778
|
-
// instance.plyr.muted = true;
|
|
779
|
-
// return 'mute';
|
|
780
|
-
// }
|
|
781
|
-
// }
|
|
782
|
-
//
|
|
783
|
-
// setVolumeIcon('up');
|
|
784
|
-
//
|
|
785
|
-
// let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(volumeButton);
|
|
786
|
-
//
|
|
787
|
-
// mobileEvent.on('singletap', function LTPlayerMobileRewindClick() {
|
|
788
|
-
// let volumeState = setVolume();
|
|
789
|
-
// setVolumeIcon(volumeState);
|
|
790
|
-
// instance.playerControl.mobileEvents.showControls(instance);
|
|
791
|
-
// })
|
|
792
|
-
//
|
|
793
|
-
// }
|
|
794
|
-
}
|
|
753
|
+
volume(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
|
|
754
|
+
let playerControlsContainer = instance.plyr.elements.controls;
|
|
755
|
+
const volume:HTMLElement = playerControlsContainer.querySelector('.bottom-controller__volume_control');
|
|
756
|
+
const setVolume = (): string => {
|
|
757
|
+
if (instance.plyr.muted) {
|
|
758
|
+
instance.plyr.muted = false;
|
|
759
|
+
return 'up';
|
|
760
|
+
} else {
|
|
761
|
+
instance.plyr.muted = true;
|
|
762
|
+
return 'mute';
|
|
763
|
+
}
|
|
764
|
+
}
|
|
795
765
|
|
|
766
|
+
if (volume) {
|
|
767
|
+
const volumeButton = volume.querySelector('button');
|
|
768
|
+
const volumeUp = volume.querySelector('.volume-max');
|
|
769
|
+
const volumeMute = volume.querySelector('.volume-mute');
|
|
796
770
|
|
|
771
|
+
const setVolumeIcon = (volumeState: string) => {
|
|
772
|
+
if (volumeState === 'up') {
|
|
773
|
+
volumeUp.classList.remove('d-none');
|
|
774
|
+
volumeMute.classList.remove('d-none');
|
|
775
|
+
volumeMute.classList.add('d-none');
|
|
776
|
+
} else {
|
|
777
|
+
volumeUp.classList.remove('d-none');
|
|
778
|
+
volumeMute.classList.remove('d-none');
|
|
779
|
+
volumeUp.classList.add('d-none');
|
|
780
|
+
}
|
|
781
|
+
}
|
|
797
782
|
|
|
783
|
+
setVolumeIcon('up');
|
|
784
|
+
|
|
785
|
+
let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(volumeButton);
|
|
786
|
+
|
|
787
|
+
mobileEvent.on('singletap', function LTPlayerMobileRewindClick() {
|
|
788
|
+
let volumeState = setVolume();
|
|
789
|
+
setVolumeIcon(volumeState);
|
|
790
|
+
instance.playerControl.mobileEvents.showControls(instance);
|
|
791
|
+
})
|
|
792
|
+
}
|
|
793
|
+
}
|
|
794
|
+
}
|
|
798
795
|
}
|
|
@@ -10,6 +10,7 @@ export class LTPlayerDesktopSettingsControllers implements SettingsControlsInter
|
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
init() {
|
|
13
|
+
this.setButtonSpeed();
|
|
13
14
|
this.settingsInstance.common.addSettingsTemplate(this.settingsInstance.playerInstance.playerConfig.getDevice());
|
|
14
15
|
this.addOpenSettingsEventButton();
|
|
15
16
|
this.initCaptionsEvent();
|
|
@@ -19,11 +20,12 @@ export class LTPlayerDesktopSettingsControllers implements SettingsControlsInter
|
|
|
19
20
|
|
|
20
21
|
addOpenSettingsEventButton() {
|
|
21
22
|
const selectors: defaultType = this.settingsInstance.common.getSelectors();
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
if (selectors.button) {
|
|
24
|
+
selectors.button.addEventListener('click', (event: MouseEvent) => {
|
|
25
|
+
event.preventDefault();
|
|
26
|
+
this.settingsInstance.common.openSettings();
|
|
27
|
+
})
|
|
28
|
+
}
|
|
27
29
|
}
|
|
28
30
|
|
|
29
31
|
initCaptionsEvent() {
|
|
@@ -84,4 +86,45 @@ export class LTPlayerDesktopSettingsControllers implements SettingsControlsInter
|
|
|
84
86
|
})
|
|
85
87
|
}
|
|
86
88
|
|
|
89
|
+
setButtonSpeed() {
|
|
90
|
+
let playerControlsContainer = this.settingsInstance.playerInstance.plyr.elements.controls;
|
|
91
|
+
let playerSpeedButton = playerControlsContainer.querySelector('.plyr__controls_speed-button');
|
|
92
|
+
let plyr = this.settingsInstance.playerInstance.plyr;
|
|
93
|
+
let instance = this.settingsInstance.playerInstance;
|
|
94
|
+
|
|
95
|
+
if (playerSpeedButton) {
|
|
96
|
+
let speedSpan = document.createElement('span');
|
|
97
|
+
playerSpeedButton.appendChild(speedSpan);
|
|
98
|
+
speedSpan.innerHTML = `1X`;
|
|
99
|
+
speedSpan.className = '';
|
|
100
|
+
speedSpan.classList.add('playback-speed--1X');
|
|
101
|
+
|
|
102
|
+
playerSpeedButton.addEventListener('click', function(event) {
|
|
103
|
+
let playSpeed = plyr.speed + 0.25;
|
|
104
|
+
|
|
105
|
+
if (playSpeed > 2) {
|
|
106
|
+
speedSpan.innerHTML = `1X`;
|
|
107
|
+
plyr.speed = 1;
|
|
108
|
+
speedSpan.className = '';
|
|
109
|
+
speedSpan.classList.add('playback-speed--1X');
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
if (playSpeed === 1.75) {
|
|
114
|
+
plyr.speed = playSpeed + 0.25
|
|
115
|
+
speedSpan.innerHTML = `2X`;
|
|
116
|
+
speedSpan.className = '';
|
|
117
|
+
speedSpan.classList.add('playback-speed--2X');
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
plyr.speed = playSpeed;
|
|
122
|
+
speedSpan.innerHTML = playSpeed + "X";
|
|
123
|
+
speedSpan.className = '';
|
|
124
|
+
speedSpan.classList.add('playback-speed--' + playSpeed + 'X');
|
|
125
|
+
|
|
126
|
+
instance.playerControl.mobileEvents.showControls(instance);
|
|
127
|
+
})
|
|
128
|
+
}
|
|
129
|
+
}
|
|
87
130
|
}
|
|
@@ -10,6 +10,7 @@ export class LTPlayerMobileSettingsControllers implements SettingsControlsInterf
|
|
|
10
10
|
|
|
11
11
|
init() {
|
|
12
12
|
this.addOpenSettingsEventButton();
|
|
13
|
+
this.setButtonSpeed();
|
|
13
14
|
}
|
|
14
15
|
|
|
15
16
|
addOpenSettingsEventButton() {
|
|
@@ -155,39 +156,49 @@ export class LTPlayerMobileSettingsControllers implements SettingsControlsInterf
|
|
|
155
156
|
instance.setInactiveModal();
|
|
156
157
|
})
|
|
157
158
|
}
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
159
|
+
setButtonSpeed() {
|
|
160
|
+
let playerControlsContainer = this.settingsInstance.playerInstance.plyr.elements.controls;
|
|
161
|
+
let playerSpeedButton = playerControlsContainer.querySelector('.plyr__controls_speed-button');
|
|
162
|
+
let plyr = this.settingsInstance.playerInstance.plyr;
|
|
163
|
+
let instance = this.settingsInstance.playerInstance;
|
|
164
|
+
|
|
165
|
+
if (playerSpeedButton) {
|
|
166
|
+
let speedSpan = document.createElement('span');
|
|
167
|
+
playerSpeedButton.appendChild(speedSpan);
|
|
168
|
+
speedSpan.innerHTML = `1X`;
|
|
169
|
+
speedSpan.className = '';
|
|
170
|
+
speedSpan.classList.add('playback-speed--1X');
|
|
171
|
+
|
|
172
|
+
let mobileEvent: HammerManager = this.settingsInstance.playerInstance.eventInstance.mobileEvents.setMobileEvent(playerSpeedButton);
|
|
173
|
+
if (mobileEvent) {
|
|
174
|
+
mobileEvent.on('singletap', function LTPlayerMobileSpeedButton() {
|
|
175
|
+
let playSpeed = plyr.speed + 0.25;
|
|
176
|
+
|
|
177
|
+
if (playSpeed > 2) {
|
|
178
|
+
speedSpan.innerHTML = `1X`;
|
|
179
|
+
plyr.speed = 1;
|
|
180
|
+
speedSpan.className = '';
|
|
181
|
+
speedSpan.classList.add('playback-speed--1X');
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
if (playSpeed === 1.75) {
|
|
186
|
+
plyr.speed = playSpeed + 0.25
|
|
187
|
+
speedSpan.innerHTML = `2X`;
|
|
188
|
+
speedSpan.className = '';
|
|
189
|
+
speedSpan.classList.add('playback-speed--2X');
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
plyr.speed = playSpeed;
|
|
194
|
+
speedSpan.innerHTML = playSpeed + "X";
|
|
195
|
+
speedSpan.className = '';
|
|
196
|
+
speedSpan.classList.add('playback-speed--' + playSpeed + 'X');
|
|
197
|
+
|
|
198
|
+
instance.playerControl.mobileEvents.showControls(instance);
|
|
199
|
+
})
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
192
203
|
|
|
193
204
|
}
|
|
@@ -140,8 +140,12 @@ export class LTPlayerDesktop extends LTPlayerCommon implements EventsInterfaces
|
|
|
140
140
|
let instance: LTPlayer.PortraitType | LTPlayer.LandscapeType = this.player;
|
|
141
141
|
let plyr: Plyr = this.plyr;
|
|
142
142
|
|
|
143
|
-
plyr.on('enterfullscreen', function LTPlayerDesktopEnterFullScreen() {
|
|
143
|
+
plyr.on('enterfullscreen', function LTPlayerDesktopEnterFullScreen(event) {
|
|
144
144
|
//remove mini player on fullscreen
|
|
145
|
+
const target = event.target as HTMLElement;
|
|
146
|
+
const parent = target.closest('.lt-player');
|
|
147
|
+
|
|
148
|
+
parent.classList.add('is-fullscreen');
|
|
145
149
|
instance.miniPlayer.event.removeMiniPLOnFullScreen(instance, 'enterfullscreen');
|
|
146
150
|
|
|
147
151
|
//fullscreen icon
|
|
@@ -151,8 +155,12 @@ export class LTPlayerDesktop extends LTPlayerCommon implements EventsInterfaces
|
|
|
151
155
|
|
|
152
156
|
});
|
|
153
157
|
|
|
154
|
-
plyr.on('exitfullscreen', function LTPlayerDesktopExitFullScreen() {
|
|
158
|
+
plyr.on('exitfullscreen', function LTPlayerDesktopExitFullScreen(event) {
|
|
155
159
|
//add mini player on exit fullscreen
|
|
160
|
+
const target = event.target as HTMLElement;
|
|
161
|
+
const parent = target.closest('.lt-player');
|
|
162
|
+
|
|
163
|
+
parent.classList.remove('is-fullscreen');
|
|
156
164
|
instance.miniPlayer.event.removeMiniPLOnFullScreen(instance, 'exitfullscreen');
|
|
157
165
|
|
|
158
166
|
//fullscreen icon
|
|
@@ -54,6 +54,8 @@ export class LTPlayerMobile extends LTPlayerCommon implements EventsInterfaces {
|
|
|
54
54
|
instance.playerId = instance.playerConfig.getPlayerId();
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
+
eventManager.setDefaultSettingsConfig();
|
|
58
|
+
|
|
57
59
|
if (instance.plyr.isHTML5) {
|
|
58
60
|
|
|
59
61
|
if (instance.hls) {
|
|
@@ -70,12 +72,12 @@ export class LTPlayerMobile extends LTPlayerCommon implements EventsInterfaces {
|
|
|
70
72
|
}
|
|
71
73
|
}
|
|
72
74
|
|
|
73
|
-
eventManager.setDefaultSettingsConfig();
|
|
74
|
-
|
|
75
75
|
instance.posterManager.mobileEvents.showControls(instance);
|
|
76
76
|
|
|
77
77
|
instance.playerControl.mobileEvents.controlsTimeShow(instance);
|
|
78
78
|
|
|
79
|
+
instance.playerControl.mobileEvents.fullScreenButtons(instance);
|
|
80
|
+
|
|
79
81
|
//set play/pause icon
|
|
80
82
|
instance.playerControl.mobileEvents.playPauseIcon(instance, 'ready');
|
|
81
83
|
|
|
@@ -84,7 +86,7 @@ export class LTPlayerMobile extends LTPlayerCommon implements EventsInterfaces {
|
|
|
84
86
|
instance.playerControl.mobileEvents.backwardForwardSeconds(instance);
|
|
85
87
|
|
|
86
88
|
//remove volume controller
|
|
87
|
-
|
|
89
|
+
instance.playerControl.mobileEvents.volume(instance);
|
|
88
90
|
|
|
89
91
|
//set settings controller
|
|
90
92
|
instance.playerControl.settingsControlsManager.init(instance);
|
|
@@ -128,14 +130,24 @@ export class LTPlayerMobile extends LTPlayerCommon implements EventsInterfaces {
|
|
|
128
130
|
let instance: LTPlayer.PortraitType | LTPlayer.LandscapeType = this.player;
|
|
129
131
|
let plyr: Plyr = this.plyr;
|
|
130
132
|
|
|
131
|
-
plyr.on('enterfullscreen', function LTPlayerDesktopEnterFullScreen() {
|
|
133
|
+
plyr.on('enterfullscreen', function LTPlayerDesktopEnterFullScreen(event) {
|
|
134
|
+
const target = event.target as HTMLElement;
|
|
135
|
+
const parent = target.closest('.lt-player');
|
|
136
|
+
|
|
137
|
+
parent.classList.add('is-fullscreen');
|
|
138
|
+
instance.miniPlayer.event.removeMiniPLOnFullScreen(instance, 'enterfullscreen');
|
|
132
139
|
//fullscreen icon
|
|
133
140
|
instance.playerControl.desktopEvents.fullscreenIcon(instance, 'enterfullscreen');
|
|
134
141
|
|
|
135
142
|
instance.videoService.removeObjectFit();
|
|
136
143
|
});
|
|
137
144
|
|
|
138
|
-
plyr.on('exitfullscreen', function LTPlayerDesktopExitFullScreen() {
|
|
145
|
+
plyr.on('exitfullscreen', function LTPlayerDesktopExitFullScreen(event) {
|
|
146
|
+
const target = event.target as HTMLElement;
|
|
147
|
+
const parent = target.closest('.lt-player');
|
|
148
|
+
|
|
149
|
+
parent.classList.remove('is-fullscreen');
|
|
150
|
+
instance.miniPlayer.event.removeMiniPLOnFullScreen(instance, 'exitfullscreen');
|
|
139
151
|
//fullscreen icon
|
|
140
152
|
instance.playerControl.desktopEvents.fullscreenIcon(instance, 'exitfullscreen');
|
|
141
153
|
instance.videoService.appendObjectFit();
|
|
@@ -208,17 +208,26 @@
|
|
|
208
208
|
<div class="top-controllers__body__center">
|
|
209
209
|
<p class="chapter"></p>
|
|
210
210
|
</div>
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
211
|
+
<div class="top-controllers__body__right">
|
|
212
|
+
{{#desktop}}
|
|
213
|
+
<button type="button" class="plyr__control fullscreen-custom-control">
|
|
214
|
+
<img class="filter minimize d-none" src="{{icons.minimize}}" alt="">
|
|
215
|
+
<img class="filter maximize" src="{{icons.maximize}}" alt="">
|
|
216
|
+
</button>
|
|
217
|
+
<button type="button" class="plyr__control mini-player-control">
|
|
218
|
+
<img class="filter" src="{{icons.mini-player}}" alt="">
|
|
219
|
+
</button>
|
|
220
|
+
{{/desktop}}
|
|
221
|
+
{{#mobile}}
|
|
222
|
+
<button type="button" class="plyr__control fullscreen-custom-control">
|
|
223
|
+
<img class="filter minimize d-none" src="{{icons.minimize}}" alt="">
|
|
224
|
+
<img class="filter maximize" src="{{icons.maximize}}" alt="">
|
|
225
|
+
</button>
|
|
226
|
+
<button type="button" class="plyr__control mini-player-control">
|
|
227
|
+
<img class="filter" src="{{icons.mini-player}}" alt="">
|
|
228
|
+
</button>
|
|
229
|
+
{{/mobile}}
|
|
230
|
+
</div>
|
|
222
231
|
</div>
|
|
223
232
|
</div>
|
|
224
233
|
<div class="lt-player-notification portrait">
|
|
@@ -275,9 +284,12 @@
|
|
|
275
284
|
<div class="bottom-controller">
|
|
276
285
|
{{#mobile}}
|
|
277
286
|
<div class="bottom-controller__left-buttons">
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
287
|
+
<div class="bottom-controller__volume_control">
|
|
288
|
+
<button type="button" class="plyr__control volume_control__volume-button button-open">
|
|
289
|
+
<img class="volume-max filter button-open" data-range-value="1" src="{{icons.volume-3}}" alt="">
|
|
290
|
+
<img class="volume-mute d-none filter button-open" data-range-value="0" src="{{icons.mute}}" alt="">
|
|
291
|
+
</button>
|
|
292
|
+
</div>
|
|
281
293
|
</div>
|
|
282
294
|
{{/mobile}}
|
|
283
295
|
{{#desktop}}
|
|
@@ -321,6 +333,7 @@
|
|
|
321
333
|
</div>
|
|
322
334
|
{{#mobile}}
|
|
323
335
|
<div class="bottom-controller__right-buttons">
|
|
336
|
+
<button type="button" class="plyr__control plyr__controls_speed-button"></button>
|
|
324
337
|
</div>
|
|
325
338
|
{{/mobile}}
|
|
326
339
|
{{#mobile}}
|
|
@@ -329,9 +342,7 @@
|
|
|
329
342
|
|
|
330
343
|
{{#desktop}}
|
|
331
344
|
<div class="bottom-controller__right-buttons">
|
|
332
|
-
<button type="button" class="plyr__control
|
|
333
|
-
<img class="filter settings" src="{{icons.settings}}" alt="">
|
|
334
|
-
</button>
|
|
345
|
+
<button type="button" class="plyr__control plyr__controls_speed-button"></button>
|
|
335
346
|
</div>
|
|
336
347
|
{{/desktop}}
|
|
337
348
|
</div>
|