@latest-thinking/lt-player 1.1.0 → 1.2.0-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/ README.md +126 -0
- 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/examples/basic.html +35 -0
- package/examples/lt-page-with-player.html +3529 -0
- package/examples/lt-page-with-player_files/Weiskopf_Coverphoto.jpg +0 -0
- package/examples/lt-page-with-player_files/ajax-progress.module.css +49 -0
- package/examples/lt-page-with-player_files/align.module.css +32 -0
- package/examples/lt-page-with-player_files/announce.js +49 -0
- package/examples/lt-page-with-player_files/autocomplete-loading.module.css +22 -0
- package/examples/lt-page-with-player_files/autocomplete.css +16 -0
- package/examples/lt-page-with-player_files/bootstrap.css +22691 -0
- package/examples/lt-page-with-player_files/clearfix.module.css +15 -0
- package/examples/lt-page-with-player_files/container-inline.module.css +16 -0
- package/examples/lt-page-with-player_files/cookiesjsr.min.css +10 -0
- package/examples/lt-page-with-player_files/core.css +97 -0
- package/examples/lt-page-with-player_files/details.module.css +10 -0
- package/examples/lt-page-with-player_files/fieldgroup.module.css +9 -0
- package/examples/lt-page-with-player_files/hidden.module.css +53 -0
- package/examples/lt-page-with-player_files/himme-alexander-beyond_0.jpg +0 -0
- package/examples/lt-page-with-player_files/item-list.module.css +19 -0
- package/examples/lt-page-with-player_files/js.module.css +22 -0
- package/examples/lt-page-with-player_files/latest_thinking.style.css +6496 -0
- package/examples/lt-page-with-player_files/logo-small.png +0 -0
- package/examples/lt-page-with-player_files/menu.css +64 -0
- package/examples/lt-page-with-player_files/nowrap.module.css +8 -0
- package/examples/lt-page-with-player_files/paragraphs.unpublished.css +3 -0
- package/examples/lt-page-with-player_files/position-container.module.css +8 -0
- package/examples/lt-page-with-player_files/progress.module.css +51 -0
- package/examples/lt-page-with-player_files/radix.style.css +1 -0
- package/examples/lt-page-with-player_files/reset-appearance.module.css +15 -0
- package/examples/lt-page-with-player_files/resize.module.css +21 -0
- package/examples/lt-page-with-player_files/search_api_autocomplete.css +41 -0
- package/examples/lt-page-with-player_files/sticky-header.module.css +13 -0
- package/examples/lt-page-with-player_files/system-status-counter.css +30 -0
- package/examples/lt-page-with-player_files/system-status-report-counters.css +27 -0
- package/examples/lt-page-with-player_files/system-status-report-general-info.css +14 -0
- package/examples/lt-page-with-player_files/tabledrag.module.css +98 -0
- package/examples/lt-page-with-player_files/tablesort.module.css +19 -0
- package/examples/lt-page-with-player_files/theme.css +446 -0
- package/examples/lt-page-with-player_files/thumbnail_MPI_CBS_Eingangsbereich.jpg +0 -0
- package/examples/lt-page-with-player_files/tree-child.module.css +18 -0
- package/examples/lt-page-with-player_files/widget-min.js +10 -0
- package/examples/lt-website.html +76 -0
- package/examples/portrait-with-subtitles.html +81 -0
- package/examples/samples/vtt/Pahl-Kerstin-Maria-MAIN-20230320.vtt +765 -0
- package/examples/samples/vtt/Sobolev-Anton-Subtitles-20230518_0.vtt +352 -0
- package/examples/samples/vtt/demo.vtt +7 -0
- package/package.json +1 -1
- package/src/assets/sass/abstracts/_mixins.scss +1 -1
- package/src/assets/sass/abstracts/_variables.scss +1 -1
- package/src/assets/sass/app.scss +19 -0
- package/src/assets/sass/components/_all.scss +1 -1
- package/src/assets/sass/components/_loader.scss +187 -0
- package/src/assets/sass/components/_modal.scss +6 -0
- package/src/assets/sass/core/_player.scss +23 -5
- package/src/assets/sass/sections/_additional-info.scss +1 -1
- package/src/assets/sass/sections/_control.scss +0 -1
- package/src/assets/sass/sections/_poster.scss +1 -0
- package/src/assets/sass/sections/_settings.scss +36 -53
- package/src/assets/sass/sections/_subtitles.scss +78 -23
- package/src/assets/sass/sections/controllers/_botom.scss +59 -36
- package/src/assets/sass/sections/controllers/_notification-rewind-forward.scss +29 -14
- package/src/assets/sass/sections/controllers/_top.scss +1 -1
- package/src/components/LTPlayerDevMethode.ts +106 -84
- package/src/components/LTPlayerManager.ts +16 -0
- package/src/components/LTPlayerSettingsManager.ts +117 -0
- package/src/components/LTPlayerSetup.ts +3 -10
- package/src/components/LTPlayerStatusFeedback.ts +76 -0
- package/src/components/LTPlayerStorage.ts +58 -0
- package/src/components/LTPlayerType.ts +10 -2
- package/src/components/LTPlayerUpdate.ts +61 -0
- package/src/components/captions/LTPlayerCaptions.ts +80 -0
- package/src/components/config/LTPlayerConfig.ts +43 -0
- package/src/components/config/LTPlayerConfigProcessor.ts +110 -56
- package/src/components/controls/LTPlayerChapters.ts +8 -4
- package/src/components/controls/LTPlayerControls.ts +2 -0
- package/src/components/controls/LTPlayerControlsEvents.ts +231 -83
- package/src/components/controls/settings/LTPlayerCommonSettingsControllers.ts +9 -1
- package/src/components/controls/settings/LTPlayerDesktopSettingsControllers.ts +17 -14
- package/src/components/controls/settings/LTPlayerMobileSettingsControllers.ts +50 -44
- package/src/components/events/LTPlayer.ts +24 -21
- package/src/components/events/LTPlayerCommon.ts +94 -20
- package/src/components/events/LTPlayerDesktop.ts +21 -7
- package/src/components/events/LTPlayerMobile.ts +22 -10
- package/src/global/controllers/LTPlayerController.ts +7 -0
- package/src/services/Helper.ts +6 -1
- package/src/services/ResizeService.ts +35 -30
- package/src/services/TemplateService.ts +7 -0
- package/src/views/additionalInfo.handlebars +18 -18
- package/src/views/controls.handlebars +14 -3
- package/src/views/poster.handlebars +2 -2
- package/src/views/settings.handlebars +1 -1
- package/src/views/settings.mobile.handlebars +22 -0
- package/src/views/template.handlebars +4 -1
- package/src/assets/sass/components/_spinner.scss +0 -46
|
@@ -2,7 +2,7 @@ import {LTPlayer} from "../LTPlayerType";
|
|
|
2
2
|
import {plyr} from "../../global/types/ModuleTypes";
|
|
3
3
|
import * as events from "events";
|
|
4
4
|
|
|
5
|
-
export namespace LTPlayerControlsEvents
|
|
5
|
+
export namespace LTPlayerControlsEvents {
|
|
6
6
|
|
|
7
7
|
export class Common {
|
|
8
8
|
|
|
@@ -10,31 +10,31 @@ export namespace LTPlayerControlsEvents {
|
|
|
10
10
|
|
|
11
11
|
getSelectors(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
13
|
+
let selectors = {
|
|
14
|
+
playerContainer: instance.plyr.elements.container,
|
|
15
|
+
playerControlsContainer: instance.plyr.elements.controls,
|
|
16
|
+
forwardArea: instance.plyr.elements.controls.querySelector('.lt-player-forward-area'),
|
|
17
|
+
rewindArea: instance.plyr.elements.controls.querySelector('.lt-player-rewind-area'),
|
|
18
|
+
forwardAnimation: instance.plyr.elements.controls.querySelector('.lt-player-forward'),
|
|
19
|
+
rewindAnimation: instance.plyr.elements.controls.querySelector('.lt-player-rewind'),
|
|
20
|
+
forwardAreaBackground: null as Element,
|
|
21
|
+
rewindAreaBackground: null as Element,
|
|
22
|
+
forwardAnimationBackground: null as Element,
|
|
23
|
+
rewindAnimationBackground: null as Element,
|
|
24
|
+
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
if (instance.playerConfig.getDevice() === 'mobile') {
|
|
28
|
+
selectors.forwardAreaBackground = instance.plyr.elements.container.querySelector('.plyr__controls__mobile-background').querySelector('.lt-player-forward-area')
|
|
29
|
+
selectors.rewindAreaBackground = instance.plyr.elements.container.querySelector('.plyr__controls__mobile-background').querySelector('.lt-player-rewind-area')
|
|
30
|
+
selectors.forwardAnimationBackground = instance.plyr.elements.container.querySelector('.plyr__controls__mobile-background').querySelector('.lt-player-forward')
|
|
31
|
+
selectors.rewindAnimationBackground = instance.plyr.elements.container.querySelector('.plyr__controls__mobile-background').querySelector('.lt-player-rewind')
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return selectors
|
|
35
35
|
},
|
|
36
36
|
|
|
37
|
-
updateCurrentTime(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType
|
|
37
|
+
updateCurrentTime(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType, time: number) {
|
|
38
38
|
if (Math.sign(time)) {
|
|
39
39
|
instance.plyr.currentTime += time;
|
|
40
40
|
} else {
|
|
@@ -44,7 +44,7 @@ export namespace LTPlayerControlsEvents {
|
|
|
44
44
|
|
|
45
45
|
playPause(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
|
|
46
46
|
|
|
47
|
-
const icons = instance.iconService.getIconsByComponent('playPause') as {play
|
|
47
|
+
const icons = instance.iconService.getIconsByComponent('playPause') as { play: string, pause: string };
|
|
48
48
|
const playerStateInfo = instance.plyr.elements.controls.querySelector('.player-state');
|
|
49
49
|
const iconSelector: HTMLImageElement = playerStateInfo.querySelector('.player-state__icon');
|
|
50
50
|
|
|
@@ -199,38 +199,145 @@ export namespace LTPlayerControlsEvents {
|
|
|
199
199
|
captions.classList.add('d-none');
|
|
200
200
|
}
|
|
201
201
|
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
showHideText(visible: boolean, controls: HTMLElement) {
|
|
205
|
+
const textControlsElement = controls.querySelector('.lt-player-video-content');
|
|
206
|
+
|
|
207
|
+
if (textControlsElement) {
|
|
208
|
+
if (visible) {
|
|
209
|
+
if (!textControlsElement.classList.contains('lt-player-video-content-enable')) {
|
|
210
|
+
textControlsElement.classList.add('lt-player-video-content-enable')
|
|
211
|
+
}
|
|
212
|
+
} else {
|
|
213
|
+
textControlsElement.classList.remove('lt-player-video-content-enable')
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
showHideSeekBar(visible: boolean, controls: HTMLElement) {
|
|
219
|
+
const seekBarControlsElement = controls.querySelector('.plyr__progress--wrapper');
|
|
220
|
+
|
|
221
|
+
if (seekBarControlsElement) {
|
|
222
|
+
if (visible) {
|
|
223
|
+
if (!seekBarControlsElement.classList.contains('plyr__progress--wrapper-enable')) {
|
|
224
|
+
seekBarControlsElement.classList.add('plyr__progress--wrapper-enable')
|
|
225
|
+
}
|
|
226
|
+
} else {
|
|
227
|
+
seekBarControlsElement.classList.remove('plyr__progress--wrapper-enable')
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
202
231
|
|
|
232
|
+
showHideBottomControls(visible: boolean, controls: HTMLElement) {
|
|
233
|
+
const bottomControlsElement = controls.querySelector('.bottom-controller');
|
|
203
234
|
|
|
235
|
+
if (bottomControlsElement) {
|
|
236
|
+
if (visible) {
|
|
237
|
+
if (!bottomControlsElement.classList.contains('bottom-controller-enable')) {
|
|
238
|
+
bottomControlsElement.classList.add('bottom-controller-enable')
|
|
239
|
+
}
|
|
240
|
+
} else {
|
|
241
|
+
bottomControlsElement.classList.remove('bottom-controller-enable')
|
|
242
|
+
}
|
|
243
|
+
}
|
|
204
244
|
}
|
|
245
|
+
|
|
246
|
+
showHideAllControls(visible: boolean, controls: HTMLElement) {
|
|
247
|
+
this.showHideText(visible, controls);
|
|
248
|
+
this.showHideSeekBar(visible, controls);
|
|
249
|
+
this.showHideBottomControls(visible, controls);
|
|
250
|
+
}
|
|
251
|
+
|
|
205
252
|
}
|
|
206
253
|
|
|
207
254
|
export class Desktop {
|
|
208
255
|
|
|
209
256
|
common: Common
|
|
257
|
+
|
|
210
258
|
constructor() {
|
|
211
259
|
this.common = new Common();
|
|
212
260
|
}
|
|
261
|
+
|
|
213
262
|
titleLineBreak(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
|
|
214
|
-
|
|
263
|
+
return;
|
|
264
|
+
/*Remove title break*/
|
|
265
|
+
// this.common.checkTitleBreakWord(instance);
|
|
266
|
+
/**/
|
|
215
267
|
}
|
|
216
268
|
|
|
217
269
|
|
|
218
270
|
showHide(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType) {
|
|
219
271
|
const controls = instance.plyr.elements.controls;
|
|
220
|
-
const
|
|
272
|
+
const commonInstance = this.common;
|
|
273
|
+
controls.classList.add('plyr__controls-enable');
|
|
274
|
+
instance.statusFeedbackService.setControlsVisible()
|
|
275
|
+
|
|
276
|
+
commonInstance.showHideText(true, controls);
|
|
277
|
+
commonInstance.showHideSeekBar(true, controls);
|
|
278
|
+
commonInstance.showHideBottomControls(true, controls);
|
|
279
|
+
|
|
280
|
+
let timerText: NodeJS.Timeout = null;
|
|
281
|
+
let timerSeekBar: NodeJS.Timeout = null;
|
|
282
|
+
let timerBottomControls: NodeJS.Timeout = null;
|
|
221
283
|
|
|
222
284
|
controls.addEventListener('mouseover', function () {
|
|
223
|
-
|
|
224
|
-
|
|
285
|
+
|
|
286
|
+
if (timerText) {
|
|
287
|
+
clearTimeout(timerText);
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
if (timerSeekBar) {
|
|
291
|
+
clearTimeout(timerSeekBar);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
if (timerBottomControls) {
|
|
295
|
+
clearTimeout(timerBottomControls);
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
if (instance.plyr.paused) {
|
|
299
|
+
commonInstance.showHideAllControls(true, controls);
|
|
300
|
+
return;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
if (!instance.playerConfig.isPinTextControls()) {
|
|
304
|
+
commonInstance.showHideText(true, controls);
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
if (!instance.playerConfig.isPinSeekBarControls()) {
|
|
308
|
+
commonInstance.showHideSeekBar(true, controls);
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
if (!instance.playerConfig.isPinBottomControls()) {
|
|
312
|
+
commonInstance.showHideBottomControls(true, controls);
|
|
313
|
+
}
|
|
314
|
+
|
|
225
315
|
})
|
|
226
316
|
|
|
227
317
|
|
|
228
318
|
controls.addEventListener('mouseleave', function () {
|
|
229
|
-
if (
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
319
|
+
if (instance.plyr.paused) {
|
|
320
|
+
commonInstance.showHideAllControls(true, controls);
|
|
321
|
+
return;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
if (!instance.playerConfig.isPinTextControls()) {
|
|
325
|
+
timerText = setTimeout(() => {
|
|
326
|
+
commonInstance.showHideText(false, controls);
|
|
327
|
+
}, 5000)
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
if (!instance.playerConfig.isPinSeekBarControls()) {
|
|
331
|
+
timerSeekBar = setTimeout(() => {
|
|
332
|
+
commonInstance.showHideSeekBar(false, controls);
|
|
333
|
+
|
|
334
|
+
}, 5000)
|
|
335
|
+
}
|
|
336
|
+
if (!instance.playerConfig.isPinBottomControls()) {
|
|
337
|
+
timerBottomControls = setTimeout(() => {
|
|
338
|
+
instance.statusFeedbackService.clearControlsVisible()
|
|
339
|
+
commonInstance.showHideBottomControls(false, controls);
|
|
340
|
+
}, 5000)
|
|
234
341
|
}
|
|
235
342
|
})
|
|
236
343
|
}
|
|
@@ -248,7 +355,7 @@ export namespace LTPlayerControlsEvents {
|
|
|
248
355
|
}
|
|
249
356
|
}
|
|
250
357
|
|
|
251
|
-
fullscreenIcon(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType, type: string){
|
|
358
|
+
fullscreenIcon(instance: LTPlayer.LandscapeType | LTPlayer.PortraitType, type: string) {
|
|
252
359
|
|
|
253
360
|
let playerControls = instance.plyr.elements.controls;
|
|
254
361
|
const fullScreenButtonContainer = playerControls.querySelector('.fullscreen-custom-control');
|
|
@@ -271,8 +378,8 @@ export namespace LTPlayerControlsEvents {
|
|
|
271
378
|
let common = this.common;
|
|
272
379
|
switch (type) {
|
|
273
380
|
case 'timeupdate':
|
|
274
|
-
|
|
275
|
-
|
|
381
|
+
this.common.playPauseIconTimeUpdate(instance);
|
|
382
|
+
break
|
|
276
383
|
case 'ready':
|
|
277
384
|
const playButton = instance.plyr.elements.controls.querySelector('.play-button');
|
|
278
385
|
if (playButton) {
|
|
@@ -395,13 +502,18 @@ export namespace LTPlayerControlsEvents {
|
|
|
395
502
|
let playerControlsContainer = instance.plyr.elements.controls;
|
|
396
503
|
|
|
397
504
|
|
|
398
|
-
const volume:HTMLElement = playerControlsContainer.querySelector('.bottom-controller__volume_control');
|
|
505
|
+
const volume: HTMLElement = playerControlsContainer.querySelector('.bottom-controller__volume_control');
|
|
399
506
|
const openVolumeButton: HTMLElement = playerControlsContainer.querySelector('.volume_control__volume-button');
|
|
400
507
|
const muteUnmuteVolumeButton: HTMLElement = playerControlsContainer.querySelector('.volume_control__volume-button-close');
|
|
401
508
|
const volumeControl: HTMLElement = playerControlsContainer.querySelector('.volume_control__background__area');
|
|
402
509
|
const volumeBackground: HTMLElement = playerControlsContainer.querySelector('.volume_control__background');
|
|
403
510
|
const volumeRangeControl: HTMLElement = playerControlsContainer.querySelector('.volume_control__background__area__range');
|
|
404
|
-
const rangeVolumesItems: NodeListOf<HTMLElement
|
|
511
|
+
const rangeVolumesItems: NodeListOf<HTMLElement> = volume.querySelectorAll('.volume-max, .volume-75, .volume-50, .volume-mute');
|
|
512
|
+
|
|
513
|
+
const itemsDataSet: string[] = [];
|
|
514
|
+
rangeVolumesItems.forEach(item => {
|
|
515
|
+
itemsDataSet.push(item.dataset.rangeValue)
|
|
516
|
+
})
|
|
405
517
|
|
|
406
518
|
openVolumeButton.addEventListener('mouseover', (event) => {
|
|
407
519
|
volumeControl.classList.remove('d-none');
|
|
@@ -437,28 +549,39 @@ export namespace LTPlayerControlsEvents {
|
|
|
437
549
|
volumeIcons(1)
|
|
438
550
|
})
|
|
439
551
|
|
|
440
|
-
const
|
|
552
|
+
const getClosest = (curr: any, prev: any, range: any) => {
|
|
553
|
+
return (Math.abs(curr - range) < Math.abs(prev - range) ? curr : prev);
|
|
554
|
+
}
|
|
441
555
|
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
556
|
+
const volumeMax: HTMLElement = muteUnmuteVolumeButton.querySelector('.volume-max');
|
|
557
|
+
const volume75: HTMLElement = muteUnmuteVolumeButton.querySelector('.volume-75');
|
|
558
|
+
const volume50: HTMLElement = muteUnmuteVolumeButton.querySelector('.volume-50');
|
|
559
|
+
const volumeMute: HTMLElement = muteUnmuteVolumeButton.querySelector('.volume-mute');
|
|
560
|
+
const volumeBody: HTMLElement = playerControlsContainer.querySelector('.bottom-controller__volume_control');
|
|
561
|
+
const volumeIconsManger = (item: HTMLElement) => {
|
|
445
562
|
|
|
446
|
-
const
|
|
447
|
-
const volume75: HTMLElement = muteUnmuteVolumeButton.querySelector('.volume-75');
|
|
448
|
-
const volume50: HTMLElement = muteUnmuteVolumeButton.querySelector('.volume-50');
|
|
449
|
-
const volumeMute: HTMLElement = muteUnmuteVolumeButton.querySelector('.volume-mute');
|
|
450
|
-
const volumeBody: HTMLElement = playerControlsContainer.querySelector('.bottom-controller__volume_control');
|
|
451
|
-
const volumeIconsManger = (item: HTMLElement) => {
|
|
563
|
+
const rangeVolumesItems: NodeListOf<HTMLElement> = volumeBody.querySelectorAll('.volume-max, .volume-75, .volume-50, .volume-mute');
|
|
452
564
|
|
|
453
|
-
|
|
565
|
+
rangeVolumesItems.forEach(function (value) {
|
|
566
|
+
if (item.dataset.rangeValue === value.dataset.rangeValue) {
|
|
567
|
+
value.classList.remove('d-none');
|
|
568
|
+
} else {
|
|
569
|
+
value.classList.add('d-none')
|
|
570
|
+
}
|
|
571
|
+
})
|
|
572
|
+
}
|
|
454
573
|
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
574
|
+
const volumeIcons = (level: any) => {
|
|
575
|
+
if (itemsDataSet.length === 0) {
|
|
576
|
+
return;
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
let range = itemsDataSet.reduce(function (prev, curr) {
|
|
580
|
+
return getClosest(curr, prev, level);
|
|
581
|
+
});
|
|
582
|
+
|
|
583
|
+
if (typeof range == 'number') {
|
|
584
|
+
range = range.toString()
|
|
462
585
|
}
|
|
463
586
|
|
|
464
587
|
switch (range) {
|
|
@@ -478,26 +601,7 @@ export namespace LTPlayerControlsEvents {
|
|
|
478
601
|
}
|
|
479
602
|
|
|
480
603
|
volumeRangeControl.addEventListener('input', function () {
|
|
481
|
-
|
|
482
|
-
let itemsDataSet: string[] = [];
|
|
483
|
-
|
|
484
|
-
rangeVolumesItems.forEach(item => {
|
|
485
|
-
itemsDataSet.push(item.dataset.rangeValue)
|
|
486
|
-
})
|
|
487
|
-
|
|
488
|
-
if (itemsDataSet.length === 0) {
|
|
489
|
-
return;
|
|
490
|
-
}
|
|
491
|
-
|
|
492
|
-
const getClosest = (curr: any, prev: any, range: any) => {
|
|
493
|
-
return (Math.abs(curr - range) < Math.abs(prev - range) ? curr : prev);
|
|
494
|
-
}
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
let closest = itemsDataSet.reduce(function(prev, curr) {
|
|
498
|
-
return getClosest(curr, prev, (volumeRangeControl as HTMLInputElement).value);
|
|
499
|
-
});
|
|
500
|
-
volumeIcons(closest);
|
|
604
|
+
volumeIcons((volumeRangeControl as HTMLInputElement).value);
|
|
501
605
|
})
|
|
502
606
|
|
|
503
607
|
instance.plyr.volume = 1;
|
|
@@ -557,9 +661,12 @@ export namespace LTPlayerControlsEvents {
|
|
|
557
661
|
const playerContainer = instance.plyr.elements.container;
|
|
558
662
|
const playerControlsContainer = instance.plyr.elements.controls;
|
|
559
663
|
const eventsInstance = this;
|
|
664
|
+
const commonInstance = this.common;
|
|
560
665
|
|
|
561
666
|
let playerControlsBackground = playerContainer.querySelector('.plyr__controls__mobile-background');
|
|
562
667
|
|
|
668
|
+
instance.statusFeedbackService.setControlsVisible()
|
|
669
|
+
|
|
563
670
|
if (playerContainer.classList.contains('plyr--hide-controls')) {
|
|
564
671
|
playerContainer.classList.remove('plyr--hide-controls');
|
|
565
672
|
}
|
|
@@ -580,6 +687,16 @@ export namespace LTPlayerControlsEvents {
|
|
|
580
687
|
clearTimeout(this.controlsTimeOut);
|
|
581
688
|
}
|
|
582
689
|
|
|
690
|
+
commonInstance.showHideText(true, playerControlsContainer);
|
|
691
|
+
commonInstance.showHideSeekBar(true, playerControlsContainer);
|
|
692
|
+
commonInstance.showHideBottomControls(true, playerControlsContainer);
|
|
693
|
+
|
|
694
|
+
|
|
695
|
+
if (instance.plyr.paused) {
|
|
696
|
+
commonInstance.showHideAllControls(true, playerControlsContainer);
|
|
697
|
+
return;
|
|
698
|
+
}
|
|
699
|
+
|
|
583
700
|
this.hideControls(instance, false);
|
|
584
701
|
}
|
|
585
702
|
|
|
@@ -587,24 +704,55 @@ export namespace LTPlayerControlsEvents {
|
|
|
587
704
|
const playerContainer = instance.plyr.elements.container;
|
|
588
705
|
const playerControlsContainer = instance.plyr.elements.controls;
|
|
589
706
|
const eventsInstance = this;
|
|
707
|
+
const commonInstance = this.common;
|
|
590
708
|
let playerControlsBackground = playerContainer.querySelector('.plyr__controls__mobile-background');
|
|
591
709
|
|
|
710
|
+
const showHideControls = () => {
|
|
711
|
+
instance.statusFeedbackService.clearControlsVisible()
|
|
712
|
+
|
|
713
|
+
if (!instance.playerConfig.isPinTextControls()) {
|
|
714
|
+
commonInstance.showHideText(false, playerControlsContainer);
|
|
715
|
+
}
|
|
716
|
+
|
|
717
|
+
if (!instance.playerConfig.isPinSeekBarControls()) {
|
|
718
|
+
commonInstance.showHideSeekBar(false, playerControlsContainer);
|
|
719
|
+
}
|
|
720
|
+
if (!instance.playerConfig.isPinBottomControls()) {
|
|
721
|
+
commonInstance.showHideBottomControls(false, playerControlsContainer);
|
|
722
|
+
}
|
|
723
|
+
}
|
|
724
|
+
|
|
725
|
+
|
|
592
726
|
if (!playerControlsContainer.classList.contains('plyr__controls-enable-addInfo')) {
|
|
593
727
|
|
|
594
728
|
if (now) {
|
|
595
|
-
|
|
596
|
-
|
|
729
|
+
|
|
730
|
+
if (instance.plyr.paused) {
|
|
731
|
+
commonInstance.showHideAllControls(true, playerControlsContainer);
|
|
732
|
+
return;
|
|
733
|
+
}
|
|
734
|
+
|
|
735
|
+
showHideControls();
|
|
736
|
+
// playerControlsContainer.classList.remove('plyr__controls-enable');
|
|
737
|
+
// playerContainer.classList.add('plyr--hide-controls');
|
|
597
738
|
if (!playerControlsContainer.classList.contains('player-lt__modal__mobile-show-modal')) {
|
|
598
739
|
playerControlsBackground.classList.remove('d-none');
|
|
599
740
|
}
|
|
600
741
|
} else {
|
|
601
742
|
this.controlsTimeOut = setTimeout(() => {
|
|
602
|
-
playerControlsContainer.classList.remove('plyr__controls-enable');
|
|
603
|
-
playerContainer.classList.add('plyr--hide-controls');
|
|
604
|
-
|
|
743
|
+
// playerControlsContainer.classList.remove('plyr__controls-enable');
|
|
744
|
+
// playerContainer.classList.add('plyr--hide-controls');
|
|
745
|
+
|
|
746
|
+
if (instance.plyr.paused) {
|
|
747
|
+
commonInstance.showHideAllControls(true, playerControlsContainer);
|
|
748
|
+
return;
|
|
749
|
+
}
|
|
750
|
+
|
|
751
|
+
showHideControls();
|
|
752
|
+
if (playerControlsBackground && !playerControlsContainer.classList.contains('player-lt__modal__mobile-show-modal')) {
|
|
605
753
|
playerControlsBackground.classList.remove('d-none');
|
|
606
754
|
}
|
|
607
|
-
},
|
|
755
|
+
}, 5000);
|
|
608
756
|
}
|
|
609
757
|
eventsInstance.common.subtitlesShow(instance);
|
|
610
758
|
}
|
|
@@ -9,7 +9,15 @@ export class LTPlayerCommonSettingsControllers {
|
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
addSettingsTemplate(string: 'mobile' | 'desktop') {
|
|
12
|
-
const settingsTemplate = this.instance.templateService.getSettings(
|
|
12
|
+
const settingsTemplate = this.instance.templateService.getSettings(
|
|
13
|
+
{
|
|
14
|
+
id : this.instance.playerConfig.getPlayerId(),
|
|
15
|
+
[string] : true,
|
|
16
|
+
captions_enabled: this.instance.playerConfig.getCaptionsEnabled() &&
|
|
17
|
+
this.instance.playerConfig.hasCaptionsUrl(),
|
|
18
|
+
captions_missing: !this.instance.playerConfig.hasCaptionsUrl()
|
|
19
|
+
}
|
|
20
|
+
);
|
|
13
21
|
const lastElement = this.instance.plyr.elements.controls.lastElementChild;
|
|
14
22
|
|
|
15
23
|
if (lastElement) {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import {LTPlayerSettingsControlsManager} from "../LTPlayerSettingsControlsManager";
|
|
2
2
|
import {SettingsControlsInterfaces} from "../../../global/interfaces/SettingsControlsInterfaces";
|
|
3
3
|
import {defaultType} from "../../../global/types/ModuleTypes";
|
|
4
|
+
import {LTPlayerStorage} from "../../LTPlayerStorage";
|
|
4
5
|
|
|
5
6
|
export class LTPlayerDesktopSettingsControllers implements SettingsControlsInterfaces {
|
|
6
7
|
settingsInstance: LTPlayerSettingsControlsManager
|
|
@@ -32,18 +33,17 @@ export class LTPlayerDesktopSettingsControllers implements SettingsControlsInter
|
|
|
32
33
|
|
|
33
34
|
const selectors = this.settingsInstance.common.getSelectors();
|
|
34
35
|
|
|
35
|
-
const checkBox = selectors.playerControlsContainer.querySelector(
|
|
36
|
+
const checkBox = selectors.playerControlsContainer.querySelector(`.subtitles-body__input-switch`) as HTMLInputElement;
|
|
36
37
|
|
|
37
38
|
if (checkBox) {
|
|
38
39
|
checkBox.addEventListener('change', () => {
|
|
39
40
|
|
|
40
41
|
if (!checkBox.checked) {
|
|
41
|
-
this.settingsInstance.
|
|
42
|
-
|
|
42
|
+
this.settingsInstance.playerInstance.captionsService.disableCaptions();
|
|
43
|
+
} else {
|
|
44
|
+
this.settingsInstance.playerInstance.captionsService.enableCaptions();
|
|
43
45
|
}
|
|
44
46
|
|
|
45
|
-
this.settingsInstance.player.toggleCaptions(true);
|
|
46
|
-
|
|
47
47
|
})
|
|
48
48
|
}
|
|
49
49
|
}
|
|
@@ -87,20 +87,23 @@ export class LTPlayerDesktopSettingsControllers implements SettingsControlsInter
|
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
setButtonSpeed() {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
90
|
+
const playerControlsContainer = this.settingsInstance.playerInstance.plyr.elements.controls;
|
|
91
|
+
const playerSpeedButton = playerControlsContainer.querySelector('.plyr__controls_speed-button');
|
|
92
|
+
const plyr = this.settingsInstance.playerInstance.plyr;
|
|
93
|
+
const instance = this.settingsInstance.playerInstance;
|
|
94
|
+
const storage = new LTPlayerStorage();
|
|
94
95
|
|
|
95
96
|
if (playerSpeedButton) {
|
|
96
|
-
|
|
97
|
+
const speedSpan = document.createElement('span');
|
|
97
98
|
playerSpeedButton.appendChild(speedSpan);
|
|
98
|
-
|
|
99
|
+
|
|
100
|
+
const displaySpeed = Math.floor(plyr.speed * 10) / 10;
|
|
101
|
+
speedSpan.innerHTML = displaySpeed + "X";
|
|
99
102
|
speedSpan.className = '';
|
|
100
|
-
speedSpan.classList.add('playback-speed--
|
|
103
|
+
speedSpan.classList.add('playback-speed--' + plyr.speed + 'X');
|
|
101
104
|
|
|
102
105
|
playerSpeedButton.addEventListener('click', function(event) {
|
|
103
|
-
|
|
106
|
+
const playSpeed = plyr.speed + 0.25;
|
|
104
107
|
|
|
105
108
|
if (playSpeed > 2) {
|
|
106
109
|
speedSpan.innerHTML = `1X`;
|
|
@@ -111,7 +114,7 @@ export class LTPlayerDesktopSettingsControllers implements SettingsControlsInter
|
|
|
111
114
|
}
|
|
112
115
|
|
|
113
116
|
if (playSpeed === 1.75) {
|
|
114
|
-
plyr.speed = playSpeed + 0.25
|
|
117
|
+
plyr.speed = playSpeed + 0.25;
|
|
115
118
|
speedSpan.innerHTML = `2X`;
|
|
116
119
|
speedSpan.className = '';
|
|
117
120
|
speedSpan.classList.add('playback-speed--2X');
|