@latest-thinking/lt-player 1.0.7-a → 1.0.7-c
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/js/lt-player-main.js +1 -1
- package/dist/js/lt-player-main.js.map +1 -1
- package/package.json +2 -1
- package/src/components/LTPlayerSetup.ts +7 -0
- package/src/components/controls/LTPlayerControlsEvents.ts +94 -59
- package/src/components/events/LTPlayerCommon.ts +0 -4
- package/src/components/events/LTPlayerDesktop.ts +2 -2
- package/src/components/events/LTPlayerMobile.ts +4 -4
- package/src/components/poster/LTPlayerPosterEvents.ts +33 -28
- package/src/components/share/LTPlayerShareDesktop.ts +14 -3
- package/src/index.ts +4 -9
- package/src/views/controls.handlebars +4 -4
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@latest-thinking/lt-player",
|
|
3
|
-
"version": "1.0.7-
|
|
3
|
+
"version": "1.0.7-c",
|
|
4
4
|
"description": "LT player.",
|
|
5
5
|
"main": "dist/js/lt-player-main.js",
|
|
6
6
|
"module": "dist/js/lt-player-main.js",
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
"@types/mustache": "^4.2.2",
|
|
26
26
|
"babel-loader": "^8.2.3",
|
|
27
27
|
"clean-webpack-plugin": "^4.0.0",
|
|
28
|
+
"container-query-polyfill": "^1.0.2",
|
|
28
29
|
"copy-webpack-plugin": "^10.2.0",
|
|
29
30
|
"cross-env": "^7.0.3",
|
|
30
31
|
"css-loader": "^6.7.2",
|
|
@@ -180,6 +180,13 @@ export class LTPlayerSetup {
|
|
|
180
180
|
const processVideo = () => {
|
|
181
181
|
let videoTag = document.createElement('video');
|
|
182
182
|
videoTag.src = url;
|
|
183
|
+
|
|
184
|
+
if (url.includes('.m3u8')) {
|
|
185
|
+
return new Promise((resolve) => {
|
|
186
|
+
resolve('portrait')
|
|
187
|
+
})
|
|
188
|
+
}
|
|
189
|
+
|
|
183
190
|
return new Promise((resolve) => {
|
|
184
191
|
videoTag.addEventListener( "loadedmetadata", function (e) {
|
|
185
192
|
if (this.videoWidth > this.videoHeight) {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import {LTPlayer} from "../LTPlayerType";
|
|
2
2
|
import {plyr} from "../../global/types/ModuleTypes";
|
|
3
|
+
import * as events from "events";
|
|
3
4
|
|
|
4
5
|
export namespace LTPlayerControlsEvents {
|
|
5
6
|
|
|
@@ -122,7 +123,6 @@ export namespace LTPlayerControlsEvents {
|
|
|
122
123
|
})
|
|
123
124
|
}
|
|
124
125
|
}
|
|
125
|
-
|
|
126
126
|
}
|
|
127
127
|
|
|
128
128
|
playPauseIconTimeUpdate(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
|
|
@@ -154,21 +154,32 @@ export namespace LTPlayerControlsEvents {
|
|
|
154
154
|
}
|
|
155
155
|
}
|
|
156
156
|
|
|
157
|
-
|
|
158
157
|
}
|
|
159
|
-
}
|
|
160
158
|
|
|
161
|
-
|
|
159
|
+
subtitlesShow(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
|
|
160
|
+
const playerContainer = instance.plyr.elements.container;
|
|
161
|
+
const playerControls = instance.plyr.elements.controls;
|
|
162
162
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
163
|
+
const captions = playerContainer.querySelector('.plyr__captions');
|
|
164
|
+
|
|
165
|
+
let checkCaptions = (instance.plyr as plyr).captions.active;
|
|
166
|
+
|
|
167
|
+
if (!checkCaptions) {
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
if (!captions) {
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
if (!playerControls.classList.contains('plyr__controls-enable')) {
|
|
176
|
+
if (captions.classList.contains('d-none')) {
|
|
177
|
+
captions.classList.remove('d-none');
|
|
178
|
+
}
|
|
179
|
+
}
|
|
169
180
|
}
|
|
170
|
-
subtitles(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
|
|
171
181
|
|
|
182
|
+
subtitlesHide(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
|
|
172
183
|
const playerContainer = instance.plyr.elements.container;
|
|
173
184
|
const playerControls = instance.plyr.elements.controls;
|
|
174
185
|
const captions = playerContainer.querySelector('.plyr__captions');
|
|
@@ -183,26 +194,43 @@ export namespace LTPlayerControlsEvents {
|
|
|
183
194
|
return;
|
|
184
195
|
}
|
|
185
196
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
return;
|
|
197
|
+
if (playerControls.classList.contains('plyr__controls-enable')) {
|
|
198
|
+
if (!captions.classList.contains('d-none')) {
|
|
199
|
+
captions.classList.add('d-none');
|
|
200
|
+
}
|
|
191
201
|
}
|
|
192
|
-
|
|
193
|
-
// captions.classList.add('on-controls-hover');
|
|
202
|
+
|
|
194
203
|
|
|
195
204
|
}
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
export class Desktop {
|
|
208
|
+
|
|
209
|
+
common: Common
|
|
210
|
+
constructor() {
|
|
211
|
+
this.common = new Common();
|
|
212
|
+
}
|
|
213
|
+
titleLineBreak(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
|
|
214
|
+
this.common.checkTitleBreakWord(instance)
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
|
|
196
218
|
showHide(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
|
|
197
219
|
const controls = instance.plyr.elements.controls;
|
|
220
|
+
const eventsInstance = this;
|
|
221
|
+
|
|
198
222
|
controls.addEventListener('mouseover', function () {
|
|
199
|
-
controls.classList.add('plyr__controls-enable')
|
|
223
|
+
controls.classList.add('plyr__controls-enable');
|
|
224
|
+
eventsInstance.common.subtitlesHide(instance);
|
|
200
225
|
})
|
|
201
226
|
|
|
202
227
|
|
|
203
228
|
controls.addEventListener('mouseleave', function () {
|
|
204
229
|
if (!controls.classList.contains('plyr__controls-enable-settings')) {
|
|
205
|
-
controls.classList.remove('plyr__controls-enable')
|
|
230
|
+
controls.classList.remove('plyr__controls-enable');
|
|
231
|
+
setTimeout(()=>{
|
|
232
|
+
eventsInstance.common.subtitlesShow(instance);
|
|
233
|
+
}, 100)
|
|
206
234
|
}
|
|
207
235
|
})
|
|
208
236
|
}
|
|
@@ -370,45 +398,28 @@ export namespace LTPlayerControlsEvents {
|
|
|
370
398
|
|
|
371
399
|
const volume:HTMLElement = playerControlsContainer.querySelector('.bottom-controller__volume_control');
|
|
372
400
|
const openVolumeButton: HTMLElement = playerControlsContainer.querySelector('.volume_control__volume-button');
|
|
373
|
-
const
|
|
401
|
+
const muteUnmuteVolumeButton: HTMLElement = playerControlsContainer.querySelector('.volume_control__volume-button-close');
|
|
374
402
|
const volumeControl: HTMLElement = playerControlsContainer.querySelector('.volume_control__background__area');
|
|
375
403
|
const volumeBackground: HTMLElement = playerControlsContainer.querySelector('.volume_control__background');
|
|
376
404
|
const volumeRangeControl: HTMLElement = playerControlsContainer.querySelector('.volume_control__background__area__range');
|
|
405
|
+
const rangeVolumesItems: NodeListOf<HTMLElement>= volume.querySelectorAll('.volume-max, .volume-75, .volume-50, .volume-mute');
|
|
406
|
+
|
|
407
|
+
openVolumeButton.addEventListener('mouseover', (event) => {
|
|
408
|
+
volumeControl.classList.remove('d-none');
|
|
409
|
+
volumeBackground.classList.remove('d-none');
|
|
410
|
+
openVolumeButton.classList.add('d-none');
|
|
411
|
+
volume.classList.add('volume-control-enable');
|
|
412
|
+
volume.classList.add('volume-area-open')
|
|
413
|
+
})
|
|
377
414
|
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
}
|
|
384
|
-
|
|
385
|
-
if (!volume.classList.contains('volume-control-enable')) {
|
|
386
|
-
if (!eventTarget.classList.contains('button-open')) {
|
|
387
|
-
return;
|
|
388
|
-
}
|
|
389
|
-
}
|
|
390
|
-
|
|
391
|
-
if (
|
|
392
|
-
!eventTarget.classList.contains('button-close') &&
|
|
393
|
-
!eventTarget.classList.contains('volume-area-open')
|
|
394
|
-
) {
|
|
395
|
-
if (!volume.classList.contains('volume-control-enable')) {
|
|
396
|
-
volumeControl.classList.remove('d-none');
|
|
397
|
-
volumeBackground.classList.remove('d-none');
|
|
398
|
-
openVolumeButton.classList.add('d-none');
|
|
399
|
-
volume.classList.add('volume-control-enable');
|
|
400
|
-
volume.classList.add('volume-area-open')
|
|
401
|
-
} else {
|
|
402
|
-
volumeControl.classList.add('d-none');
|
|
403
|
-
volumeBackground.classList.add('d-none');
|
|
404
|
-
openVolumeButton.classList.remove('d-none');
|
|
405
|
-
volume.classList.remove('volume-control-enable');
|
|
406
|
-
}
|
|
407
|
-
}
|
|
408
|
-
event.preventDefault();
|
|
415
|
+
volume.addEventListener('mouseleave', () => {
|
|
416
|
+
volumeControl.classList.add('d-none');
|
|
417
|
+
volumeBackground.classList.add('d-none');
|
|
418
|
+
openVolumeButton.classList.remove('d-none');
|
|
419
|
+
volume.classList.remove('volume-control-enable');
|
|
409
420
|
})
|
|
410
421
|
|
|
411
|
-
|
|
422
|
+
muteUnmuteVolumeButton.addEventListener('click', (event) => {
|
|
412
423
|
event.preventDefault();
|
|
413
424
|
if (instance.plyr.volume > 0) {
|
|
414
425
|
instance.playerControl.playerVolumeBefore = instance.plyr.volume;
|
|
@@ -433,12 +444,11 @@ export namespace LTPlayerControlsEvents {
|
|
|
433
444
|
range = range.toString()
|
|
434
445
|
}
|
|
435
446
|
|
|
436
|
-
const volumeMax: HTMLElement =
|
|
437
|
-
const volume75: HTMLElement =
|
|
438
|
-
const volume50: HTMLElement =
|
|
439
|
-
const volumeMute: HTMLElement =
|
|
447
|
+
const volumeMax: HTMLElement = muteUnmuteVolumeButton.querySelector('.volume-max');
|
|
448
|
+
const volume75: HTMLElement = muteUnmuteVolumeButton.querySelector('.volume-75');
|
|
449
|
+
const volume50: HTMLElement = muteUnmuteVolumeButton.querySelector('.volume-50');
|
|
450
|
+
const volumeMute: HTMLElement = muteUnmuteVolumeButton.querySelector('.volume-mute');
|
|
440
451
|
const volumeBody: HTMLElement = playerControlsContainer.querySelector('.bottom-controller__volume_control');
|
|
441
|
-
|
|
442
452
|
const volumeIconsManger = (item: HTMLElement) => {
|
|
443
453
|
|
|
444
454
|
const rangeVolumesItems: NodeListOf<HTMLElement>= volumeBody.querySelectorAll('.volume-max, .volume-75, .volume-50, .volume-mute');
|
|
@@ -469,7 +479,26 @@ export namespace LTPlayerControlsEvents {
|
|
|
469
479
|
}
|
|
470
480
|
|
|
471
481
|
volumeRangeControl.addEventListener('input', function () {
|
|
472
|
-
|
|
482
|
+
|
|
483
|
+
let itemsDataSet: string[] = [];
|
|
484
|
+
|
|
485
|
+
rangeVolumesItems.forEach(item => {
|
|
486
|
+
itemsDataSet.push(item.dataset.rangeValue)
|
|
487
|
+
})
|
|
488
|
+
|
|
489
|
+
if (itemsDataSet.length === 0) {
|
|
490
|
+
return;
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
const getClosest = (curr: any, prev: any, range: any) => {
|
|
494
|
+
return (Math.abs(curr - range) < Math.abs(prev - range) ? curr : prev);
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
|
|
498
|
+
let closest = itemsDataSet.reduce(function(prev, curr) {
|
|
499
|
+
return getClosest(curr, prev, (volumeRangeControl as HTMLInputElement).value);
|
|
500
|
+
});
|
|
501
|
+
volumeIcons(closest);
|
|
473
502
|
})
|
|
474
503
|
|
|
475
504
|
instance.plyr.volume = 1;
|
|
@@ -528,6 +557,8 @@ export namespace LTPlayerControlsEvents {
|
|
|
528
557
|
showControls(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {
|
|
529
558
|
const playerContainer = instance.plyr.elements.container;
|
|
530
559
|
const playerControlsContainer = instance.plyr.elements.controls;
|
|
560
|
+
const eventsInstance = this;
|
|
561
|
+
|
|
531
562
|
let playerControlsBackground = playerContainer.querySelector('.plyr__controls__mobile-background');
|
|
532
563
|
|
|
533
564
|
if (playerContainer.classList.contains('plyr--hide-controls')) {
|
|
@@ -544,6 +575,8 @@ export namespace LTPlayerControlsEvents {
|
|
|
544
575
|
playerControlsContainer.classList.add('plyr__controls-enable');
|
|
545
576
|
}
|
|
546
577
|
|
|
578
|
+
eventsInstance.common.subtitlesHide(instance);
|
|
579
|
+
|
|
547
580
|
if (this.controlsTimeOut) {
|
|
548
581
|
clearTimeout(this.controlsTimeOut);
|
|
549
582
|
}
|
|
@@ -554,6 +587,7 @@ export namespace LTPlayerControlsEvents {
|
|
|
554
587
|
hideControls(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType, now: boolean) {
|
|
555
588
|
const playerContainer = instance.plyr.elements.container;
|
|
556
589
|
const playerControlsContainer = instance.plyr.elements.controls;
|
|
590
|
+
const eventsInstance = this;
|
|
557
591
|
let playerControlsBackground = playerContainer.querySelector('.plyr__controls__mobile-background');
|
|
558
592
|
|
|
559
593
|
if (!playerControlsContainer.classList.contains('plyr__controls-enable-addInfo')) {
|
|
@@ -573,6 +607,7 @@ export namespace LTPlayerControlsEvents {
|
|
|
573
607
|
}
|
|
574
608
|
}, 4000);
|
|
575
609
|
}
|
|
610
|
+
eventsInstance.common.subtitlesShow(instance);
|
|
576
611
|
}
|
|
577
612
|
}
|
|
578
613
|
|
|
@@ -146,10 +146,6 @@ export class LTPlayerCommon {
|
|
|
146
146
|
if (this.player.playerControl.chaptersService) {
|
|
147
147
|
this.player.playerControl.chaptersService.updateCurrentTimeAndTitle(this.player, event);
|
|
148
148
|
}
|
|
149
|
-
|
|
150
|
-
//set captions
|
|
151
|
-
// TODO: Find a way to show/hide subtitles that does not loop on every timeUpdate. Consider using the controls show/hide event.
|
|
152
|
-
this.player.playerControl.desktopEvents.subtitles(this.player);
|
|
153
149
|
}
|
|
154
150
|
|
|
155
151
|
|
|
@@ -65,7 +65,7 @@ export class LTPlayerDesktop extends LTPlayerCommon implements EventsInterfaces
|
|
|
65
65
|
}
|
|
66
66
|
eventManager.onReadyPlayer();
|
|
67
67
|
eventManager.modal(instance);
|
|
68
|
-
instance.posterManager.desktopEvents.
|
|
68
|
+
instance.posterManager.desktopEvents.posterBody(instance);
|
|
69
69
|
|
|
70
70
|
if (instance.playerConfig.getPreload()) {
|
|
71
71
|
eventManager.preloadPoster.ready(instance);
|
|
@@ -118,7 +118,7 @@ export class LTPlayerDesktop extends LTPlayerCommon implements EventsInterfaces
|
|
|
118
118
|
plyr.embed.ready().then (function LTPlayerEmbedReady() {
|
|
119
119
|
eventManager.modal(instance);
|
|
120
120
|
eventManager.onReadyPlayer();
|
|
121
|
-
instance.posterManager.desktopEvents.
|
|
121
|
+
instance.posterManager.desktopEvents.posterBody(instance);
|
|
122
122
|
if (instance.playerConfig.getPreload()) {
|
|
123
123
|
eventManager.preloadPoster.ready(instance);
|
|
124
124
|
}
|
|
@@ -61,7 +61,7 @@ export class LTPlayerMobile extends LTPlayerCommon implements EventsInterfaces {
|
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
eventManager.onReadyPlayer();
|
|
64
|
-
instance.posterManager.mobileEvents.
|
|
64
|
+
instance.posterManager.mobileEvents.posterBody(instance);
|
|
65
65
|
|
|
66
66
|
instance.playerControl.mobileEvents.seekBar(instance);
|
|
67
67
|
|
|
@@ -102,11 +102,11 @@ export class LTPlayerMobile extends LTPlayerCommon implements EventsInterfaces {
|
|
|
102
102
|
let plyr: Plyr = this.plyr;
|
|
103
103
|
|
|
104
104
|
if (plyr.isEmbed) {
|
|
105
|
-
plyr.on('ready', function LTPLayerMobileReadyEmbed() {
|
|
106
|
-
plyr.embed.ready().then(function LTPlayerEmbedReady() {
|
|
105
|
+
plyr.on('ready', function LTPLayerMobileReadyEmbed(): void {
|
|
106
|
+
plyr.embed.ready().then(function LTPlayerEmbedReady():void {
|
|
107
107
|
eventManager.onReadyPlayer();
|
|
108
108
|
instance.playerControl.mobileEvents.seekBar(instance);
|
|
109
|
-
instance.posterManager.mobileEvents.
|
|
109
|
+
instance.posterManager.mobileEvents.posterBody(instance);
|
|
110
110
|
if (instance.playerConfig.getPreload()) {
|
|
111
111
|
eventManager.preloadPoster.ready(instance);
|
|
112
112
|
}
|
|
@@ -78,50 +78,57 @@ export namespace LTPlayerPosterEvents {
|
|
|
78
78
|
|
|
79
79
|
export class Desktop {
|
|
80
80
|
/**
|
|
81
|
-
* Add play event on poster
|
|
81
|
+
* Add play event on poster
|
|
82
82
|
*/
|
|
83
|
-
|
|
83
|
+
posterBody(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {
|
|
84
84
|
|
|
85
|
-
const common = new LTPlayerPosterEvents.Common();
|
|
85
|
+
const common: Common = new LTPlayerPosterEvents.Common();
|
|
86
86
|
|
|
87
|
-
|
|
88
|
-
|
|
87
|
+
const playerContainer: HTMLElement = instance.plyr.elements.container;
|
|
88
|
+
const posterBody: HTMLElement = playerContainer.querySelector('.lt-player__poster__body');
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
if (posterBody) {
|
|
92
|
+
posterBody.addEventListener('click', function LTPlayerPosterButtons(event) {
|
|
89
93
|
event.preventDefault();
|
|
90
94
|
instance.playerControl.desktopEvents.titleLineBreak(instance);
|
|
91
95
|
instance.playerControl.desktopEvents.playPauseIcon(instance, 'timeupdate');
|
|
92
96
|
common.poster.reset(instance);
|
|
93
97
|
})
|
|
94
|
-
}
|
|
98
|
+
}
|
|
95
99
|
}
|
|
96
100
|
}
|
|
97
101
|
|
|
98
102
|
export class Mobile {
|
|
99
103
|
/**
|
|
100
|
-
* Add play event on poster
|
|
104
|
+
* Add play event on poster mobile
|
|
101
105
|
*/
|
|
102
|
-
|
|
106
|
+
posterBody(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {
|
|
103
107
|
|
|
104
|
-
const
|
|
105
|
-
const
|
|
106
|
-
const
|
|
108
|
+
const playerContainer: HTMLElement = instance.plyr.elements.container;
|
|
109
|
+
const playerPoster: Element = playerContainer.querySelector('.plyr__poster');
|
|
110
|
+
const playerBody: Element = playerContainer.querySelector('.lt-player__poster__body');
|
|
111
|
+
const common: Common = new LTPlayerPosterEvents.Common();
|
|
107
112
|
|
|
108
|
-
|
|
109
|
-
let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(button);
|
|
113
|
+
let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(playerBody);
|
|
110
114
|
|
|
111
|
-
|
|
112
|
-
|
|
115
|
+
if (mobileEvent) {
|
|
116
|
+
mobileEvent.on('singletap', function LTPlayerMobilePosterPlay() {
|
|
113
117
|
|
|
114
|
-
|
|
118
|
+
if (playerPoster.classList.contains('d-none')) {
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
instance.playerControl.desktopEvents.titleLineBreak(instance);
|
|
115
123
|
|
|
116
|
-
|
|
117
|
-
|
|
124
|
+
instance.playerControl.mobileEvents.playPauseIcon(instance, 'timeupdate');
|
|
125
|
+
common.poster.reset(instance);
|
|
118
126
|
|
|
119
|
-
|
|
127
|
+
playerContainer.classList.remove('plyr__poster-enabled');
|
|
120
128
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
});
|
|
129
|
+
instance.playerControl.mobileEvents.showControls(instance);
|
|
130
|
+
});
|
|
131
|
+
}
|
|
125
132
|
}
|
|
126
133
|
|
|
127
134
|
/**
|
|
@@ -138,9 +145,9 @@ export namespace LTPlayerPosterEvents {
|
|
|
138
145
|
}
|
|
139
146
|
|
|
140
147
|
showControls(instance: LTPlayer.PortraitType | LTPlayer.LandscapeType) {
|
|
141
|
-
const playerContainer = instance.plyr.elements.container;
|
|
142
|
-
const playerControlsContainer = instance.plyr.elements.controls;
|
|
143
|
-
const playerPoster = playerContainer.querySelector('.plyr__poster');
|
|
148
|
+
const playerContainer: HTMLElement = instance.plyr.elements.container;
|
|
149
|
+
const playerControlsContainer: HTMLElement = instance.plyr.elements.controls;
|
|
150
|
+
const playerPoster: Element = playerContainer.querySelector('.plyr__poster');
|
|
144
151
|
|
|
145
152
|
|
|
146
153
|
let mobileEvent: HammerManager = instance.eventInstance.mobileEvents.setMobileEvent(playerPoster);
|
|
@@ -153,7 +160,5 @@ export namespace LTPlayerPosterEvents {
|
|
|
153
160
|
});
|
|
154
161
|
}
|
|
155
162
|
}
|
|
156
|
-
|
|
157
|
-
|
|
158
163
|
}
|
|
159
164
|
}
|
|
@@ -3,6 +3,7 @@ import {LTPlayerShareManager} from "./LTPlayerShareManager";
|
|
|
3
3
|
export class LTPlayerShareDesktop {
|
|
4
4
|
manager : LTPlayerShareManager
|
|
5
5
|
isPlaying : boolean
|
|
6
|
+
switchButtonSet: boolean
|
|
6
7
|
constructor(instance : LTPlayerShareManager) {
|
|
7
8
|
this.manager = instance;
|
|
8
9
|
this.setTemplate();
|
|
@@ -29,8 +30,13 @@ export class LTPlayerShareDesktop {
|
|
|
29
30
|
this.setCopyContent(false);
|
|
30
31
|
}
|
|
31
32
|
|
|
32
|
-
this.setCopyButtonsEvents()
|
|
33
|
-
|
|
33
|
+
this.setCopyButtonsEvents();
|
|
34
|
+
|
|
35
|
+
if (!this.switchButtonSet) {
|
|
36
|
+
this.setSwitchButton();
|
|
37
|
+
this.switchButtonSet = true;
|
|
38
|
+
}
|
|
39
|
+
|
|
34
40
|
if (instance.plyr.playing) {
|
|
35
41
|
this.isPlaying = true;
|
|
36
42
|
instance.plyr.pause();
|
|
@@ -49,7 +55,8 @@ export class LTPlayerShareDesktop {
|
|
|
49
55
|
return;
|
|
50
56
|
}
|
|
51
57
|
|
|
52
|
-
|
|
58
|
+
const switchEvent = () => {
|
|
59
|
+
|
|
53
60
|
if (selectors.urlInput.classList.contains('canonicalUrl')) {
|
|
54
61
|
selectors.urlInput.classList.remove('canonicalUrl');
|
|
55
62
|
selectors.urlInput.classList.add('embedUrl');
|
|
@@ -59,6 +66,10 @@ export class LTPlayerShareDesktop {
|
|
|
59
66
|
selectors.urlInput.classList.remove('embedUrl');
|
|
60
67
|
this.setCopyContent(false);
|
|
61
68
|
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
selectors.switchButton.addEventListener('click', () => {
|
|
72
|
+
switchEvent();
|
|
62
73
|
})
|
|
63
74
|
}
|
|
64
75
|
|
package/src/index.ts
CHANGED
|
@@ -2,14 +2,9 @@ import {LTPlayerManager} from "./components/LTPlayerManager";
|
|
|
2
2
|
|
|
3
3
|
const supportsContainerQueries = "container" in document.documentElement.style;
|
|
4
4
|
if (!supportsContainerQueries) {
|
|
5
|
-
|
|
6
|
-
polyfill_script.setAttribute('src','https://cdn.jsdelivr.net/npm/container-query-polyfill@1/dist/container-query-polyfill.modern.js');
|
|
7
|
-
document.body.appendChild(polyfill_script);
|
|
5
|
+
require('container-query-polyfill');
|
|
8
6
|
}
|
|
9
7
|
|
|
10
|
-
|
|
11
|
-
window.
|
|
12
|
-
|
|
13
|
-
window.Player = new LTPlayerManager();
|
|
14
|
-
}
|
|
15
|
-
})
|
|
8
|
+
if (window.Player === undefined) {
|
|
9
|
+
window.Player = new LTPlayerManager();
|
|
10
|
+
}
|
|
@@ -95,15 +95,15 @@
|
|
|
95
95
|
<div class="bottom-controller__volume_control">
|
|
96
96
|
<button type="button" class="plyr__control volume_control__volume-button button-open">
|
|
97
97
|
<img class="volume-max filter button-open" data-range-value="1" src="{{icons.volume-3}}" alt="">
|
|
98
|
-
<img class="volume-75 d-none filter button-open" data-range-value="0.
|
|
99
|
-
<img class="volume-50 d-none filter button-open" data-range-value="0.
|
|
98
|
+
<img class="volume-75 d-none filter button-open" data-range-value="0.40" src="{{icons.volume-2}}" alt="">
|
|
99
|
+
<img class="volume-50 d-none filter button-open" data-range-value="0.02" src="{{icons.volume-1}}" alt="">
|
|
100
100
|
<img class="volume-mute d-none filter button-open" data-range-value="0" src="{{icons.mute}}" alt="">
|
|
101
101
|
</button>
|
|
102
102
|
<div class="volume_control__background d-none">
|
|
103
103
|
<button class="volume_control__volume-button-close button-close">
|
|
104
104
|
<img class="volume-max button-close" data-range-value="1" src="{{icons.volume-3}}" alt="">
|
|
105
|
-
<img class="volume-75 d-none button-close" data-range-value="0.
|
|
106
|
-
<img class="volume-50 d-none button-close" data-range-value="0.
|
|
105
|
+
<img class="volume-75 d-none button-close" data-range-value="0.40" src="{{icons.volume-2}}" alt="">
|
|
106
|
+
<img class="volume-50 d-none button-close" data-range-value="0.02" src="{{icons.volume-1}}" alt="">
|
|
107
107
|
<img class="volume-mute d-none button-close" data-range-value="0" src="{{icons.mute}}" alt="">
|
|
108
108
|
</button>
|
|
109
109
|
</div>
|