@latest-thinking/lt-player 1.0.4-m → 1.0.4-o
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/sass/sections/_control.scss +25 -0
- package/src/assets/sass/sections/_poster.scss +3 -0
- package/src/assets/sass/sections/_settings.scss +1 -1
- package/src/assets/sass/sections/_subtitles.scss +4 -0
- package/src/assets/sass/sections/controllers/_botom.scss +12 -5
- package/src/assets/sass/sections/controllers/_notification-rewind-forward.scss +69 -10
- package/src/components/addInfo/LTPlayerAdditionalInfoEvents.ts +3 -2
- package/src/components/controls/LTPlayerChapters.ts +8 -4
- package/src/components/controls/LTPlayerControlsEvents.ts +172 -51
- package/src/components/controls/settings/LTPlayerDesktopSettingsControllers.ts +2 -4
- package/src/components/events/LTPlayer.ts +7 -0
- package/src/components/poster/LTPlayerPosterEvents.ts +2 -0
- package/src/components/poster/LTPlayerPosterPreloadEvents.ts +17 -6
- package/src/services/IconsService.ts +15 -0
- package/src/services/LTPlayerRotateDeviceService.ts +0 -1
- package/src/views/controls.handlebars +66 -15
- package/src/views/settings.handlebars +3 -3
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import {LTPlayer} from "../LTPlayerType";
|
|
2
2
|
import {plyr} from "../../global/types/ModuleTypes";
|
|
3
3
|
|
|
4
|
-
|
|
5
4
|
export namespace LTPlayerControlsEvents {
|
|
6
5
|
|
|
7
6
|
export class Common {
|
|
@@ -9,14 +8,29 @@ export namespace LTPlayerControlsEvents {
|
|
|
9
8
|
backwardRewind = {
|
|
10
9
|
|
|
11
10
|
getSelectors(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
|
|
12
|
-
|
|
11
|
+
|
|
12
|
+
let selectors = {
|
|
13
13
|
playerContainer: instance.plyr.elements.container,
|
|
14
14
|
playerControlsContainer: instance.plyr.elements.controls,
|
|
15
15
|
forwardArea: instance.plyr.elements.controls.querySelector('.lt-player-forward-area'),
|
|
16
16
|
rewindArea: instance.plyr.elements.controls.querySelector('.lt-player-rewind-area'),
|
|
17
17
|
forwardAnimation: instance.plyr.elements.controls.querySelector('.lt-player-forward'),
|
|
18
|
-
rewindAnimation: instance.plyr.elements.controls.querySelector('.lt-player-rewind')
|
|
19
|
-
|
|
18
|
+
rewindAnimation: instance.plyr.elements.controls.querySelector('.lt-player-rewind'),
|
|
19
|
+
forwardAreaBackground: null as Element,
|
|
20
|
+
rewindAreaBackground: null as Element,
|
|
21
|
+
forwardAnimationBackground: null as Element,
|
|
22
|
+
rewindAnimationBackground: null as Element,
|
|
23
|
+
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
if (instance.playerConfig.getDevice() === 'mobile') {
|
|
27
|
+
selectors.forwardAreaBackground = instance.plyr.elements.container.querySelector('.plyr__controls__mobile-background').querySelector('.lt-player-forward-area')
|
|
28
|
+
selectors.rewindAreaBackground = instance.plyr.elements.container.querySelector('.plyr__controls__mobile-background').querySelector('.lt-player-rewind-area')
|
|
29
|
+
selectors.forwardAnimationBackground = instance.plyr.elements.container.querySelector('.plyr__controls__mobile-background').querySelector('.lt-player-forward')
|
|
30
|
+
selectors.rewindAnimationBackground = instance.plyr.elements.container.querySelector('.plyr__controls__mobile-background').querySelector('.lt-player-rewind')
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
return selectors
|
|
20
34
|
},
|
|
21
35
|
|
|
22
36
|
updateCurrentTime(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType ,time: number) {
|
|
@@ -29,29 +43,23 @@ export namespace LTPlayerControlsEvents {
|
|
|
29
43
|
|
|
30
44
|
playPause(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
|
|
31
45
|
|
|
32
|
-
const
|
|
33
|
-
const pauseInfoIcon = instance.plyr.elements.controls.querySelector('.player-state__pause-icon');
|
|
46
|
+
const icons = instance.iconService.getIconsByComponent('playPause') as {play : string, pause: string};
|
|
34
47
|
const playerStateInfo = instance.plyr.elements.controls.querySelector('.player-state');
|
|
48
|
+
const iconSelector: HTMLImageElement = playerStateInfo.querySelector('.player-state__icon');
|
|
35
49
|
|
|
36
50
|
const removeStateButtons = () => {
|
|
37
51
|
setTimeout(() => {
|
|
38
52
|
playerStateInfo.classList.remove('active');
|
|
39
|
-
|
|
40
|
-
playInfoIcon.classList.add('d-none');
|
|
41
|
-
pauseInfoIcon.classList.add('d-none');
|
|
42
|
-
}, 500)
|
|
43
|
-
}, 500)
|
|
44
|
-
|
|
53
|
+
}, 200)
|
|
45
54
|
}
|
|
46
55
|
|
|
47
|
-
|
|
48
56
|
if (instance.plyr.playing) {
|
|
49
|
-
|
|
57
|
+
iconSelector.src = icons.pause;
|
|
50
58
|
playerStateInfo.classList.add('active');
|
|
51
59
|
instance.plyr.togglePlay(false);
|
|
52
60
|
removeStateButtons();
|
|
53
61
|
} else {
|
|
54
|
-
|
|
62
|
+
iconSelector.src = icons.play;
|
|
55
63
|
playerStateInfo.classList.add('active');
|
|
56
64
|
instance.plyr.togglePlay(true);
|
|
57
65
|
removeStateButtons();
|
|
@@ -64,9 +72,58 @@ export namespace LTPlayerControlsEvents {
|
|
|
64
72
|
|
|
65
73
|
animateNotificationOut(selector: Element) {
|
|
66
74
|
selector.classList.remove('animate-in');
|
|
67
|
-
}
|
|
75
|
+
},
|
|
68
76
|
}
|
|
69
77
|
|
|
78
|
+
checkTitleBreakWord(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
|
|
79
|
+
const controlsSelector = instance.plyr.elements.controls;
|
|
80
|
+
const videoTitle = controlsSelector.querySelector('.poster-paragraph__content');
|
|
81
|
+
const readButton = controlsSelector.querySelector('.poster-paragraph__button');
|
|
82
|
+
|
|
83
|
+
if (!videoTitle) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
if (videoTitle.scrollHeight <= videoTitle.clientHeight) {
|
|
88
|
+
readButton.classList.add('d-none');
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const heightContent = videoTitle.scrollHeight;
|
|
93
|
+
|
|
94
|
+
const openHide = () => {
|
|
95
|
+
|
|
96
|
+
let inlineStyleElement = videoTitle as unknown as ElementCSSInlineStyle
|
|
97
|
+
|
|
98
|
+
if (videoTitle.classList.contains('open-content')) {
|
|
99
|
+
inlineStyleElement.style.maxHeight = null;
|
|
100
|
+
setTimeout(() => {
|
|
101
|
+
videoTitle.classList.remove('open-content');
|
|
102
|
+
}, 300)
|
|
103
|
+
readButton.innerHTML = 'Read more'
|
|
104
|
+
} else {
|
|
105
|
+
readButton.innerHTML = 'Hide'
|
|
106
|
+
inlineStyleElement.style.maxHeight = `${heightContent}px`;
|
|
107
|
+
videoTitle.classList.add('open-content');
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
if (readButton) {
|
|
112
|
+
|
|
113
|
+
if (instance.playerConfig.getDevice() === 'mobile') {
|
|
114
|
+
let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(readButton);
|
|
115
|
+
mobileEvent.on('singletap', function LTPlayerMobileShowHideTitle() {
|
|
116
|
+
openHide();
|
|
117
|
+
instance.playerControl.mobileEvents.showControls(instance)
|
|
118
|
+
})
|
|
119
|
+
} else {
|
|
120
|
+
readButton.addEventListener('click', function LTPlayerTitleButton() {
|
|
121
|
+
openHide();
|
|
122
|
+
})
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
}
|
|
70
127
|
|
|
71
128
|
playPauseIconTimeUpdate(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
|
|
72
129
|
|
|
@@ -94,7 +151,9 @@ export namespace LTPlayerControlsEvents {
|
|
|
94
151
|
constructor() {
|
|
95
152
|
this.common = new Common();
|
|
96
153
|
}
|
|
97
|
-
|
|
154
|
+
titleLineBreak(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
|
|
155
|
+
this.common.checkTitleBreakWord(instance)
|
|
156
|
+
}
|
|
98
157
|
subtitles(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
|
|
99
158
|
|
|
100
159
|
const playerContainer = instance.plyr.elements.container;
|
|
@@ -128,7 +187,7 @@ export namespace LTPlayerControlsEvents {
|
|
|
128
187
|
|
|
129
188
|
|
|
130
189
|
controls.addEventListener('mouseleave', function () {
|
|
131
|
-
controls.classList.remove('plyr__controls-enable')
|
|
190
|
+
// controls.classList.remove('plyr__controls-enable')
|
|
132
191
|
})
|
|
133
192
|
}
|
|
134
193
|
|
|
@@ -166,9 +225,23 @@ export namespace LTPlayerControlsEvents {
|
|
|
166
225
|
}
|
|
167
226
|
|
|
168
227
|
playPauseIcon(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType, type: string) {
|
|
228
|
+
let common = this.common;
|
|
169
229
|
switch (type) {
|
|
170
230
|
case 'timeupdate':
|
|
171
231
|
this.common.playPauseIconTimeUpdate(instance);
|
|
232
|
+
break
|
|
233
|
+
case 'ready':
|
|
234
|
+
const playButton = instance.plyr.elements.controls.querySelector('.play-button');
|
|
235
|
+
if (playButton) {
|
|
236
|
+
playButton.addEventListener('click', function LTPlayerPlayButton() {
|
|
237
|
+
if (instance.plyr.playing) {
|
|
238
|
+
instance.plyr.togglePlay(false);
|
|
239
|
+
} else {
|
|
240
|
+
instance.plyr.togglePlay(true);
|
|
241
|
+
}
|
|
242
|
+
common.playPauseIconTimeUpdate(instance);
|
|
243
|
+
})
|
|
244
|
+
}
|
|
172
245
|
}
|
|
173
246
|
}
|
|
174
247
|
|
|
@@ -180,22 +253,34 @@ export namespace LTPlayerControlsEvents {
|
|
|
180
253
|
if (selectors.forwardArea) {
|
|
181
254
|
selectors.forwardArea.addEventListener('dblclick', function LTPlayerForwardDbClick(event) {
|
|
182
255
|
event.preventDefault();
|
|
256
|
+
|
|
257
|
+
const playerState = selectors.playerControlsContainer.querySelector('.lt-player-notification__notification-button-state');
|
|
258
|
+
|
|
259
|
+
if (playerState && !playerState.classList.contains('d-none')) {
|
|
260
|
+
playerState.classList.add('d-none');
|
|
261
|
+
}
|
|
262
|
+
|
|
183
263
|
common.backwardRewind.animateNotificationIn(selectors.forwardAnimation);
|
|
184
264
|
common.backwardRewind.updateCurrentTime(instance, 10);
|
|
185
265
|
setTimeout(() => {
|
|
186
|
-
common.backwardRewind.animateNotificationOut(selectors.forwardAnimation)
|
|
266
|
+
common.backwardRewind.animateNotificationOut(selectors.forwardAnimation);
|
|
267
|
+
playerState.classList.remove('d-none');
|
|
187
268
|
}, 500)
|
|
188
269
|
})
|
|
189
270
|
|
|
190
271
|
selectors.forwardArea.addEventListener('click', function LTPlayerForwardClick(event) {
|
|
191
272
|
event.preventDefault();
|
|
192
|
-
const volumeControlArea = selectors.playerControlsContainer.querySelector('.bottom-controller__volume_control');
|
|
193
273
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
274
|
+
setTimeout(() => {
|
|
275
|
+
const volumeControlArea = selectors.playerControlsContainer.querySelector('.bottom-controller__volume_control');
|
|
276
|
+
|
|
277
|
+
if (volumeControlArea) {
|
|
278
|
+
if (!volumeControlArea.classList.contains('volume-control-enable')) {
|
|
279
|
+
common.backwardRewind.playPause(instance);
|
|
280
|
+
}
|
|
197
281
|
}
|
|
198
|
-
}
|
|
282
|
+
}, 100)
|
|
283
|
+
|
|
199
284
|
|
|
200
285
|
})
|
|
201
286
|
}
|
|
@@ -204,22 +289,35 @@ export namespace LTPlayerControlsEvents {
|
|
|
204
289
|
|
|
205
290
|
selectors.rewindArea.addEventListener('dblclick', function LTPlayerRewindDbClick(event) {
|
|
206
291
|
event.preventDefault();
|
|
292
|
+
|
|
293
|
+
const playerState = selectors.playerControlsContainer.querySelector('.lt-player-notification__notification-button-state');
|
|
294
|
+
|
|
295
|
+
if (playerState && !playerState.classList.contains('d-none')) {
|
|
296
|
+
playerState.classList.add('d-none');
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
|
|
207
300
|
common.backwardRewind.animateNotificationIn(selectors.rewindAnimation);
|
|
208
301
|
common.backwardRewind.updateCurrentTime(instance, -10);
|
|
209
302
|
setTimeout(() => {
|
|
210
|
-
common.backwardRewind.animateNotificationOut(selectors.rewindAnimation)
|
|
303
|
+
common.backwardRewind.animateNotificationOut(selectors.rewindAnimation);
|
|
304
|
+
playerState.classList.remove('d-none');
|
|
211
305
|
}, 500)
|
|
212
306
|
})
|
|
213
307
|
|
|
214
308
|
selectors.rewindArea.addEventListener('click', function LTPlayerRewindClick(event) {
|
|
215
309
|
event.preventDefault();
|
|
216
|
-
const volumeControlArea = selectors.playerControlsContainer.querySelector('.bottom-controller__volume_control');
|
|
217
310
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
311
|
+
setTimeout(() => {
|
|
312
|
+
const volumeControlArea = selectors.playerControlsContainer.querySelector('.bottom-controller__volume_control');
|
|
313
|
+
|
|
314
|
+
if (volumeControlArea) {
|
|
315
|
+
if (!volumeControlArea.classList.contains('volume-control-enable')) {
|
|
316
|
+
common.backwardRewind.playPause(instance);
|
|
317
|
+
}
|
|
221
318
|
}
|
|
222
|
-
}
|
|
319
|
+
}, 100)
|
|
320
|
+
|
|
223
321
|
})
|
|
224
322
|
|
|
225
323
|
}
|
|
@@ -434,22 +532,31 @@ export namespace LTPlayerControlsEvents {
|
|
|
434
532
|
clearTimeout(this.controlsTimeOut);
|
|
435
533
|
}
|
|
436
534
|
|
|
437
|
-
this.hideControls(instance);
|
|
535
|
+
this.hideControls(instance, false);
|
|
438
536
|
}
|
|
439
537
|
|
|
440
|
-
hideControls(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {
|
|
538
|
+
hideControls(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType, now: boolean) {
|
|
441
539
|
const playerContainer = instance.plyr.elements.container;
|
|
442
540
|
const playerControlsContainer = instance.plyr.elements.controls;
|
|
443
541
|
let playerControlsBackground = playerContainer.querySelector('.plyr__controls__mobile-background');
|
|
444
542
|
|
|
445
543
|
if (!playerControlsContainer.classList.contains('plyr__controls-enable-addInfo')) {
|
|
446
|
-
|
|
544
|
+
|
|
545
|
+
if (now) {
|
|
447
546
|
playerControlsContainer.classList.remove('plyr__controls-enable');
|
|
448
547
|
playerContainer.classList.add('plyr--hide-controls');
|
|
449
548
|
if (!playerControlsContainer.classList.contains('player-lt__modal__mobile-show-modal')) {
|
|
450
549
|
playerControlsBackground.classList.remove('d-none');
|
|
451
550
|
}
|
|
452
|
-
}
|
|
551
|
+
} else {
|
|
552
|
+
this.controlsTimeOut = setTimeout(() => {
|
|
553
|
+
playerControlsContainer.classList.remove('plyr__controls-enable');
|
|
554
|
+
playerContainer.classList.add('plyr--hide-controls');
|
|
555
|
+
if (!playerControlsContainer.classList.contains('player-lt__modal__mobile-show-modal')) {
|
|
556
|
+
playerControlsBackground.classList.remove('d-none');
|
|
557
|
+
}
|
|
558
|
+
}, 4000);
|
|
559
|
+
}
|
|
453
560
|
}
|
|
454
561
|
}
|
|
455
562
|
|
|
@@ -467,17 +574,17 @@ export namespace LTPlayerControlsEvents {
|
|
|
467
574
|
}
|
|
468
575
|
}
|
|
469
576
|
playPauseIcon(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType, type: string) {
|
|
470
|
-
|
|
471
577
|
let common = this.common;
|
|
578
|
+
let instanceMobile = this;
|
|
472
579
|
|
|
473
580
|
switch (type) {
|
|
474
581
|
case 'timeupdate':
|
|
475
582
|
common.playPauseIconTimeUpdate(instance);
|
|
476
583
|
break
|
|
477
584
|
case 'ready':
|
|
478
|
-
const playButton = instance.plyr.elements.
|
|
585
|
+
const playButton = instance.plyr.elements.controls.querySelector('.play-button');
|
|
479
586
|
let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(playButton);
|
|
480
|
-
if (mobileEvent
|
|
587
|
+
if (mobileEvent) {
|
|
481
588
|
mobileEvent.on('singletap', function LTPlayerMobilePLayPauseIcon() {
|
|
482
589
|
if (instance.plyr.playing) {
|
|
483
590
|
instance.plyr.togglePlay(false);
|
|
@@ -485,7 +592,7 @@ export namespace LTPlayerControlsEvents {
|
|
|
485
592
|
instance.plyr.togglePlay(true);
|
|
486
593
|
}
|
|
487
594
|
common.playPauseIconTimeUpdate(instance);
|
|
488
|
-
|
|
595
|
+
instanceMobile.showControls(instance);
|
|
489
596
|
});
|
|
490
597
|
}
|
|
491
598
|
}
|
|
@@ -495,24 +602,17 @@ export namespace LTPlayerControlsEvents {
|
|
|
495
602
|
|
|
496
603
|
let common = this.common;
|
|
497
604
|
const selectors = common.backwardRewind.getSelectors(instance);
|
|
498
|
-
const volumeControlArea = selectors.playerControlsContainer.querySelector('.bottom-controller__volume_control');
|
|
499
605
|
|
|
500
606
|
const singleTapAction = () => {
|
|
501
|
-
|
|
502
|
-
if (volumeControlArea) {
|
|
503
|
-
if (!volumeControlArea.classList.contains('volume-control-enable')) {
|
|
504
|
-
common.backwardRewind.playPause(instance);
|
|
505
|
-
instance.playerControl.mobileEvents.showControls(instance);
|
|
506
|
-
}
|
|
507
|
-
}
|
|
508
|
-
}
|
|
607
|
+
instance.playerControl.mobileEvents.hideControls(instance, true);
|
|
509
608
|
}
|
|
510
609
|
|
|
511
610
|
if (selectors.forwardArea) {
|
|
512
611
|
|
|
513
612
|
let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(selectors.forwardArea);
|
|
514
613
|
|
|
515
|
-
mobileEvent.on('doubletap', function LTPlayerMobileForwardDbClick() {
|
|
614
|
+
mobileEvent.on('doubletap', function LTPlayerMobileForwardDbClick(event) {
|
|
615
|
+
|
|
516
616
|
common.backwardRewind.animateNotificationIn(selectors.forwardAnimation);
|
|
517
617
|
common.backwardRewind.updateCurrentTime(instance, 10);
|
|
518
618
|
setTimeout(() => {
|
|
@@ -521,8 +621,18 @@ export namespace LTPlayerControlsEvents {
|
|
|
521
621
|
instance.playerControl.mobileEvents.showControls(instance);
|
|
522
622
|
})
|
|
523
623
|
|
|
524
|
-
mobileEvent.on('singletap', function LTPlayerMobileForwardDbClick() {
|
|
624
|
+
mobileEvent.on('singletap', function LTPlayerMobileForwardDbClick(event) {
|
|
525
625
|
singleTapAction();
|
|
626
|
+
});
|
|
627
|
+
|
|
628
|
+
let mobileEventBackground: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(selectors.forwardAreaBackground);
|
|
629
|
+
|
|
630
|
+
mobileEventBackground.on('doubletap', function LTPlayerMobileForwardDbClickBackground(event) {
|
|
631
|
+
common.backwardRewind.animateNotificationIn(selectors.forwardAnimationBackground);
|
|
632
|
+
common.backwardRewind.updateCurrentTime(instance, 10);
|
|
633
|
+
setTimeout(() => {
|
|
634
|
+
common.backwardRewind.animateNotificationOut(selectors.forwardAnimationBackground)
|
|
635
|
+
}, 500)
|
|
526
636
|
})
|
|
527
637
|
}
|
|
528
638
|
|
|
@@ -530,7 +640,8 @@ export namespace LTPlayerControlsEvents {
|
|
|
530
640
|
|
|
531
641
|
let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(selectors.rewindArea);
|
|
532
642
|
|
|
533
|
-
mobileEvent.on('doubletap', function LTPlayerMobileRewindDbClick() {
|
|
643
|
+
mobileEvent.on('doubletap', function LTPlayerMobileRewindDbClick(event) {
|
|
644
|
+
|
|
534
645
|
common.backwardRewind.animateNotificationIn(selectors.rewindAnimation);
|
|
535
646
|
common.backwardRewind.updateCurrentTime(instance, -10);
|
|
536
647
|
setTimeout(() => {
|
|
@@ -539,10 +650,20 @@ export namespace LTPlayerControlsEvents {
|
|
|
539
650
|
instance.playerControl.mobileEvents.showControls(instance);
|
|
540
651
|
})
|
|
541
652
|
|
|
542
|
-
mobileEvent.on('singletap', function LTPlayerMobileRewindClick() {
|
|
653
|
+
mobileEvent.on('singletap', function LTPlayerMobileRewindClick(event) {
|
|
543
654
|
singleTapAction();
|
|
544
655
|
})
|
|
545
656
|
|
|
657
|
+
let mobileEventBackground: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(selectors.rewindAreaBackground);
|
|
658
|
+
|
|
659
|
+
mobileEventBackground.on('doubletap', function LTPlayerMobileRewindDbClickBackground(event) {
|
|
660
|
+
common.backwardRewind.animateNotificationIn(selectors.rewindAnimationBackground);
|
|
661
|
+
common.backwardRewind.updateCurrentTime(instance, 10);
|
|
662
|
+
setTimeout(() => {
|
|
663
|
+
common.backwardRewind.animateNotificationOut(selectors.rewindAnimationBackground)
|
|
664
|
+
}, 500)
|
|
665
|
+
})
|
|
666
|
+
|
|
546
667
|
}
|
|
547
668
|
}
|
|
548
669
|
|
|
@@ -65,13 +65,11 @@ export class LTPlayerDesktopSettingsControllers implements SettingsControlsInter
|
|
|
65
65
|
let values:any = [1,1.25,1.50,2];
|
|
66
66
|
|
|
67
67
|
myRange.oninput = function() {
|
|
68
|
-
|
|
69
|
-
player.speed = parseInt(values[rangeInput.value]);
|
|
70
|
-
|
|
68
|
+
player.speed = parseFloat(values[rangeInput.value]);
|
|
71
69
|
myValue.innerHTML = values[rangeInput.value] + 'x';
|
|
72
70
|
};
|
|
73
71
|
|
|
74
|
-
player.speed =
|
|
72
|
+
player.speed = parseFloat(String(values[0]));
|
|
75
73
|
myValue.innerHTML = values[0] + 'x';
|
|
76
74
|
}
|
|
77
75
|
initSaveButton() {
|
|
@@ -56,6 +56,7 @@ export namespace LTPlayerEvents {
|
|
|
56
56
|
const volumeBackground = volumeControl.querySelector('.volume_control__background');
|
|
57
57
|
const volumeBackgroundArea = volumeControl.querySelector('.volume_control__background__area');
|
|
58
58
|
const volumeArea = volumeControl.querySelector('.volume_control__background__area__range');
|
|
59
|
+
const controlsBackground = player.elements.container.querySelector('.plyr__controls__mobile-background');
|
|
59
60
|
|
|
60
61
|
|
|
61
62
|
if (volumeButton) {
|
|
@@ -79,6 +80,12 @@ export namespace LTPlayerEvents {
|
|
|
79
80
|
volumeControl.classList.remove('volume-control-enable');
|
|
80
81
|
}
|
|
81
82
|
|
|
83
|
+
if (controlsBackground) {
|
|
84
|
+
if (!controlsBackground.classList.contains('d-none')) {
|
|
85
|
+
controlsBackground.classList.add('d-none');
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
82
89
|
}
|
|
83
90
|
const enablePoster = () => {
|
|
84
91
|
|
|
@@ -87,6 +87,7 @@ export namespace LTPlayerPosterEvents {
|
|
|
87
87
|
common.poster.getButtons(instance)?.forEach(button => {
|
|
88
88
|
button.addEventListener('click', function LTPlayerPosterButtons(event) {
|
|
89
89
|
event.preventDefault();
|
|
90
|
+
instance.playerControl.desktopEvents.titleLineBreak(instance);
|
|
90
91
|
common.poster.reset(instance);
|
|
91
92
|
})
|
|
92
93
|
});
|
|
@@ -108,6 +109,7 @@ export namespace LTPlayerPosterEvents {
|
|
|
108
109
|
|
|
109
110
|
if (mobileEvent) {
|
|
110
111
|
mobileEvent.on('singletap', function LTPlayerMobilePosterButtons() {
|
|
112
|
+
instance.playerControl.desktopEvents.titleLineBreak(instance);
|
|
111
113
|
|
|
112
114
|
common.poster.reset(instance);
|
|
113
115
|
|
|
@@ -16,6 +16,7 @@ export class LTPlayerPosterPreloadEvents {
|
|
|
16
16
|
playerContainer.querySelector(`.lt-player__poster`).insertAdjacentHTML('afterend', LoaderService.getSpinner());
|
|
17
17
|
const preloadData = instance.playerConfig.getPreload();
|
|
18
18
|
const playAutoPreload = () => {
|
|
19
|
+
console.log('preload play')
|
|
19
20
|
if (preloadData.start !== 0) {
|
|
20
21
|
instance.plyr.embed.setCurrentTime(preloadData.start).then(() => {
|
|
21
22
|
instance.plyr.embed.setMuted(true).then(function () {
|
|
@@ -30,13 +31,20 @@ export class LTPlayerPosterPreloadEvents {
|
|
|
30
31
|
LoaderService.removeSpinner(playerContainer)
|
|
31
32
|
} else {
|
|
32
33
|
instance.plyr.volume = 0;
|
|
33
|
-
instance.plyr.embed
|
|
34
|
+
if (instance.plyr.embed) {
|
|
35
|
+
instance.plyr.embed.play().then(function () {
|
|
36
|
+
LoaderService.removeSpinner(playerContainer)
|
|
37
|
+
});
|
|
38
|
+
} else {
|
|
39
|
+
instance.plyr.play()
|
|
34
40
|
LoaderService.removeSpinner(playerContainer)
|
|
35
|
-
}
|
|
41
|
+
}
|
|
42
|
+
|
|
36
43
|
}
|
|
37
44
|
}
|
|
38
45
|
|
|
39
46
|
const pausePreload = () => {
|
|
47
|
+
console.log('preload play')
|
|
40
48
|
if (preloadData.start !== 0) {
|
|
41
49
|
instance.plyr.embed.setCurrentTime(preloadData.start).then( () => {
|
|
42
50
|
instance.plyr.embed.pause().then(function() {
|
|
@@ -45,12 +53,15 @@ export class LTPlayerPosterPreloadEvents {
|
|
|
45
53
|
});
|
|
46
54
|
});
|
|
47
55
|
} else {
|
|
48
|
-
instance.plyr.
|
|
49
|
-
|
|
56
|
+
if (instance.plyr.embed) {
|
|
57
|
+
instance.plyr.embed.pause().then(function () {
|
|
58
|
+
LoaderService.removeSpinner(playerContainer)
|
|
59
|
+
});
|
|
60
|
+
} else {
|
|
61
|
+
instance.plyr.pause()
|
|
50
62
|
LoaderService.removeSpinner(playerContainer)
|
|
51
|
-
}
|
|
63
|
+
}
|
|
52
64
|
}
|
|
53
|
-
|
|
54
65
|
LoaderService.removeSpinner(playerContainer)
|
|
55
66
|
}
|
|
56
67
|
|
|
@@ -33,6 +33,11 @@ export class IconsService {
|
|
|
33
33
|
'university',
|
|
34
34
|
]
|
|
35
35
|
|
|
36
|
+
playPause = [
|
|
37
|
+
'play',
|
|
38
|
+
'pause'
|
|
39
|
+
]
|
|
40
|
+
|
|
36
41
|
constructor() {
|
|
37
42
|
this.path = require.context('../assets/icons', false);
|
|
38
43
|
}
|
|
@@ -86,6 +91,16 @@ export class IconsService {
|
|
|
86
91
|
}
|
|
87
92
|
})
|
|
88
93
|
})
|
|
94
|
+
break
|
|
95
|
+
case 'playPause':
|
|
96
|
+
this.path.keys().forEach(item => {
|
|
97
|
+
this.playPause.forEach(mapElement => {
|
|
98
|
+
let name = item.replace(/(\.(?:jpg|png|svg))$/i, "").replace('./', '');
|
|
99
|
+
if (name === mapElement) {
|
|
100
|
+
Object.assign(response, {[name] : this.path(item)})
|
|
101
|
+
}
|
|
102
|
+
})
|
|
103
|
+
})
|
|
89
104
|
}
|
|
90
105
|
|
|
91
106
|
|