@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.
Files changed (98) hide show
  1. package/ README.md +126 -0
  2. package/dist/css/lt-player-main.css +1 -1
  3. package/dist/css/lt-player-main.css.map +1 -1
  4. package/dist/js/lt-player-main.js +1 -1
  5. package/dist/js/lt-player-main.js.map +1 -1
  6. package/examples/basic.html +35 -0
  7. package/examples/lt-page-with-player.html +3529 -0
  8. package/examples/lt-page-with-player_files/Weiskopf_Coverphoto.jpg +0 -0
  9. package/examples/lt-page-with-player_files/ajax-progress.module.css +49 -0
  10. package/examples/lt-page-with-player_files/align.module.css +32 -0
  11. package/examples/lt-page-with-player_files/announce.js +49 -0
  12. package/examples/lt-page-with-player_files/autocomplete-loading.module.css +22 -0
  13. package/examples/lt-page-with-player_files/autocomplete.css +16 -0
  14. package/examples/lt-page-with-player_files/bootstrap.css +22691 -0
  15. package/examples/lt-page-with-player_files/clearfix.module.css +15 -0
  16. package/examples/lt-page-with-player_files/container-inline.module.css +16 -0
  17. package/examples/lt-page-with-player_files/cookiesjsr.min.css +10 -0
  18. package/examples/lt-page-with-player_files/core.css +97 -0
  19. package/examples/lt-page-with-player_files/details.module.css +10 -0
  20. package/examples/lt-page-with-player_files/fieldgroup.module.css +9 -0
  21. package/examples/lt-page-with-player_files/hidden.module.css +53 -0
  22. package/examples/lt-page-with-player_files/himme-alexander-beyond_0.jpg +0 -0
  23. package/examples/lt-page-with-player_files/item-list.module.css +19 -0
  24. package/examples/lt-page-with-player_files/js.module.css +22 -0
  25. package/examples/lt-page-with-player_files/latest_thinking.style.css +6496 -0
  26. package/examples/lt-page-with-player_files/logo-small.png +0 -0
  27. package/examples/lt-page-with-player_files/menu.css +64 -0
  28. package/examples/lt-page-with-player_files/nowrap.module.css +8 -0
  29. package/examples/lt-page-with-player_files/paragraphs.unpublished.css +3 -0
  30. package/examples/lt-page-with-player_files/position-container.module.css +8 -0
  31. package/examples/lt-page-with-player_files/progress.module.css +51 -0
  32. package/examples/lt-page-with-player_files/radix.style.css +1 -0
  33. package/examples/lt-page-with-player_files/reset-appearance.module.css +15 -0
  34. package/examples/lt-page-with-player_files/resize.module.css +21 -0
  35. package/examples/lt-page-with-player_files/search_api_autocomplete.css +41 -0
  36. package/examples/lt-page-with-player_files/sticky-header.module.css +13 -0
  37. package/examples/lt-page-with-player_files/system-status-counter.css +30 -0
  38. package/examples/lt-page-with-player_files/system-status-report-counters.css +27 -0
  39. package/examples/lt-page-with-player_files/system-status-report-general-info.css +14 -0
  40. package/examples/lt-page-with-player_files/tabledrag.module.css +98 -0
  41. package/examples/lt-page-with-player_files/tablesort.module.css +19 -0
  42. package/examples/lt-page-with-player_files/theme.css +446 -0
  43. package/examples/lt-page-with-player_files/thumbnail_MPI_CBS_Eingangsbereich.jpg +0 -0
  44. package/examples/lt-page-with-player_files/tree-child.module.css +18 -0
  45. package/examples/lt-page-with-player_files/widget-min.js +10 -0
  46. package/examples/lt-website.html +76 -0
  47. package/examples/portrait-with-subtitles.html +81 -0
  48. package/examples/samples/vtt/Pahl-Kerstin-Maria-MAIN-20230320.vtt +765 -0
  49. package/examples/samples/vtt/Sobolev-Anton-Subtitles-20230518_0.vtt +352 -0
  50. package/examples/samples/vtt/demo.vtt +7 -0
  51. package/package.json +1 -1
  52. package/src/assets/sass/abstracts/_mixins.scss +1 -1
  53. package/src/assets/sass/abstracts/_variables.scss +1 -1
  54. package/src/assets/sass/app.scss +19 -0
  55. package/src/assets/sass/components/_all.scss +1 -1
  56. package/src/assets/sass/components/_loader.scss +187 -0
  57. package/src/assets/sass/components/_modal.scss +6 -0
  58. package/src/assets/sass/core/_player.scss +23 -5
  59. package/src/assets/sass/sections/_additional-info.scss +1 -1
  60. package/src/assets/sass/sections/_control.scss +0 -1
  61. package/src/assets/sass/sections/_poster.scss +1 -0
  62. package/src/assets/sass/sections/_settings.scss +36 -53
  63. package/src/assets/sass/sections/_subtitles.scss +78 -23
  64. package/src/assets/sass/sections/controllers/_botom.scss +59 -36
  65. package/src/assets/sass/sections/controllers/_notification-rewind-forward.scss +29 -14
  66. package/src/assets/sass/sections/controllers/_top.scss +1 -1
  67. package/src/components/LTPlayerDevMethode.ts +106 -84
  68. package/src/components/LTPlayerManager.ts +16 -0
  69. package/src/components/LTPlayerSettingsManager.ts +117 -0
  70. package/src/components/LTPlayerSetup.ts +3 -10
  71. package/src/components/LTPlayerStatusFeedback.ts +76 -0
  72. package/src/components/LTPlayerStorage.ts +58 -0
  73. package/src/components/LTPlayerType.ts +10 -2
  74. package/src/components/LTPlayerUpdate.ts +61 -0
  75. package/src/components/captions/LTPlayerCaptions.ts +80 -0
  76. package/src/components/config/LTPlayerConfig.ts +43 -0
  77. package/src/components/config/LTPlayerConfigProcessor.ts +110 -56
  78. package/src/components/controls/LTPlayerChapters.ts +8 -4
  79. package/src/components/controls/LTPlayerControls.ts +2 -0
  80. package/src/components/controls/LTPlayerControlsEvents.ts +231 -83
  81. package/src/components/controls/settings/LTPlayerCommonSettingsControllers.ts +9 -1
  82. package/src/components/controls/settings/LTPlayerDesktopSettingsControllers.ts +17 -14
  83. package/src/components/controls/settings/LTPlayerMobileSettingsControllers.ts +50 -44
  84. package/src/components/events/LTPlayer.ts +24 -21
  85. package/src/components/events/LTPlayerCommon.ts +94 -20
  86. package/src/components/events/LTPlayerDesktop.ts +21 -7
  87. package/src/components/events/LTPlayerMobile.ts +22 -10
  88. package/src/global/controllers/LTPlayerController.ts +7 -0
  89. package/src/services/Helper.ts +6 -1
  90. package/src/services/ResizeService.ts +35 -30
  91. package/src/services/TemplateService.ts +7 -0
  92. package/src/views/additionalInfo.handlebars +18 -18
  93. package/src/views/controls.handlebars +14 -3
  94. package/src/views/poster.handlebars +2 -2
  95. package/src/views/settings.handlebars +1 -1
  96. package/src/views/settings.mobile.handlebars +22 -0
  97. package/src/views/template.handlebars +4 -1
  98. package/src/assets/sass/components/_spinner.scss +0 -46
@@ -1,40 +1,35 @@
1
1
  @import "../abstracts/variables";
2
2
 
3
- .lt-player-mobile-settings-modal {
4
- .settings-controllers {
5
- position: fixed;
6
- width: 100%;
7
- z-index: 10;
8
- left: 0;
9
- background: $default-lt-player-white;
10
- padding: 0 0 32px 0;
11
- bottom: 0;
12
- transition:.3s;
13
-
14
- .line-button {
15
- @extend %line-button;
16
- }
17
-
18
- .settings-text {
19
- font-size: $lt-player-font-size-base;
20
- font-weight: $lt-player-font-weight-sm;
21
- color: $default-lt-button-color !important;
22
- margin: 0;
23
- }
3
+ .settings-dialog {
4
+ background: $default-lt-player-white;
5
+ padding: 0;
6
+ width: 100%;
7
+ max-width: 375px;
8
+ border: none;
9
+ z-index: 10;
10
+
11
+ &::backdrop {
12
+ background-color: rgba($default-lt-button-color, .75);
24
13
  }
25
14
 
26
- .settings-controllers-enable {
27
- position: absolute;
28
- width: 100%;
29
- z-index: 30;
30
- left: 0;
31
- background: $default-lt-player-white;
32
- border-radius: 0 0 0 30px;
33
- bottom: 0;
15
+ .settings-controllers {
34
16
  display: flex;
35
17
  flex-direction: column;
36
- padding: 0 0 24px 0;
18
+ }
19
+
20
+ .line-button {
21
+ @extend %line-button;
22
+ display: none;
23
+ }
37
24
 
25
+ .settings-text {
26
+ font-size: $lt-player-font-size-base;
27
+ font-weight: $lt-player-font-weight-sm;
28
+ color: $default-lt-button-color !important;
29
+ margin: 0;
30
+ }
31
+
32
+ .settings-controllers-enable {
38
33
  &__speed-range {
39
34
  padding: 24px 24px 0 24px;
40
35
  align-items: center;
@@ -42,30 +37,12 @@
42
37
  display: flex;
43
38
  position: relative;
44
39
 
45
- .mobile {
46
- display: flex;
47
- width: 80%!important;
48
- }
49
-
50
40
  .speed-range-input-body {
51
41
  color: $default-lt-player-black;
52
42
  width: 65%;
53
43
  margin-left: auto;
54
44
  position: relative;
55
45
 
56
- button {
57
- color: #27282A;
58
- background-color: #D8D846;
59
- width: 16%;
60
- margin: 0 2px;
61
- }
62
-
63
- .button_active {
64
- background-color: #27282A;
65
- color: grey;
66
- }
67
-
68
-
69
46
  output {
70
47
  font-size: $lt-player-font-size-base;
71
48
  font-weight: $lt-player-font-weight-lg;
@@ -207,7 +184,7 @@
207
184
  }
208
185
 
209
186
  &__button-save {
210
- padding: 16px 24px 0 24px;
187
+ padding: 16px 20px 20px 20px;
211
188
  color: black;
212
189
  display: flex;
213
190
  justify-content: left;
@@ -255,11 +232,9 @@
255
232
  left: 0;
256
233
  background: $default-lt-player-white;
257
234
  border-radius: 0 0 0 30px;
258
- padding: 0 0 32px 0;
259
235
  bottom: 0;
260
236
  opacity: 0;
261
237
 
262
-
263
238
  .line-button {
264
239
  @extend %line-button;
265
240
  }
@@ -409,6 +384,14 @@
409
384
  min-width: 60px;
410
385
  height: 34px;
411
386
  margin-left: 10px;
387
+
388
+ &:has(.subtitles-body__input-switch[disabled]) {
389
+ .subtitles-body {
390
+ &__slider {
391
+ cursor: not-allowed;
392
+ }
393
+ }
394
+ }
412
395
  }
413
396
 
414
397
  &__input-switch {
@@ -517,7 +500,7 @@
517
500
  border: none;
518
501
 
519
502
  &__subtitles {
520
- padding: 16px 24px 24px;
503
+ padding: 16px 24px 0 24px;
521
504
  }
522
505
 
523
506
  .line-button {
@@ -526,4 +509,4 @@
526
509
  }
527
510
  }
528
511
  }
529
- }
512
+ }
@@ -1,30 +1,85 @@
1
- .lt-player-landscape--mobile,
2
- .lt-player-landscape--desktop {
3
- &.lt-player--landscape {
4
- &__xxs {
5
- .plyr {
6
- .plyr__caption {
7
- font-size: $lt-player-font-size-base !important;
8
- }
9
- }
1
+ .plyr__caption {
2
+ display: none;
3
+
4
+ span {
5
+ &:empty {
6
+ display: none;
10
7
  }
11
8
  }
12
9
  }
13
10
 
14
- .plyr__caption {
15
- display: flex!important;
16
- justify-content: center!important;
17
- margin: auto!important;
18
- width: 75%;
19
- color: $default-lt-player-white !important;
20
- background-color: $default-lt-player-black !important;
21
- font-size: $lt-player-font-size-lg !important;
22
- line-height: $lt-player-line-height !important;
23
- padding: 8px 12px !important;
24
- font-family: $lt-font-family-base !important;
25
- white-space: unset !important;
11
+ .lt-player-custom-captions {
12
+ display: inline-block;
13
+ background-color: rgba($default_color_player, 0.8);
14
+ margin: 0 $lt-player-padding-xxl / 2 16px $lt-player-padding-xxl / 2;
15
+ padding: 8px 12px;
16
+
17
+ &:is(:not(span)) {
18
+ padding: 0;
19
+ }
20
+
21
+ span {
22
+ font-family: $lt-font-family-base;
23
+ font-size: $lt-player-font-size-lg;
24
+ line-height: $lt-player-line-height;
25
+ font-weight: $lt-player-font-weight-md;
26
+ color: $default-lt-player-black;
27
+ white-space: unset;
28
+ box-decoration-break: clone;
29
+ padding: 0 16px;
30
+
31
+ &:empty {
32
+ padding: 0;
33
+ }
34
+ }
35
+ }
36
+
37
+ .lt-player-orientation--portrait {
38
+ .lt-player-custom-captions {
39
+ margin: 0 0 16px 0;
40
+ }
41
+ }
42
+
43
+ .lt-player-orientation--landscape {
44
+ .lt-player-custom-captions {
45
+ line-height: $lt-player-line-height-default;
46
+
47
+ span {
48
+ font-size: $lt-player-font-size-sm;
49
+ border-radius: 0;
50
+ }
51
+ }
52
+
53
+ &.lt-state-controls-visible {
54
+ .lt-player-custom-captions {
55
+ display: none;
56
+ }
57
+ }
58
+ }
59
+
60
+ @container portrait (width < 319px) {
61
+ .lt-player-custom-captions {
62
+ span {
63
+ font-size: $lt-player-font-size-sm;
64
+ }
65
+ }
26
66
  }
27
67
 
28
- .plyr__captions span:empty {
29
- display: none!important;
68
+ @container landscape (width > 639px) {
69
+ .lt-player-orientation--landscape {
70
+ .lt-player-custom-captions {
71
+ line-height: $lt-player-line-height;
72
+
73
+ span {
74
+ font-size: $lt-player-font-size-lg;
75
+ }
76
+ }
77
+
78
+ &.lt-state-controls-visible {
79
+ .lt-player-custom-captions {
80
+ margin: 0 $lt-player-padding-xxl 16px $lt-player-padding-xxl;
81
+ display: inline-block;
82
+ }
83
+ }
84
+ }
30
85
  }
@@ -5,23 +5,23 @@
5
5
  z-index: 9;
6
6
 
7
7
  &--wrapper {
8
- position: absolute;
9
8
  width: 100%;
10
9
  padding: 0 10px;
11
- bottom: 50px;
10
+ display: none;
11
+ }
12
+
13
+ &--wrapper-enable {
14
+ display: block;
12
15
  }
13
16
  }
14
17
 
15
18
  &__controls {
16
19
  .bottom-controller {
17
- position: absolute;
18
- bottom: 0;
19
- width: 100%;
20
- height: 36%;
21
- display: flex;
20
+ display: none;
22
21
  justify-content: space-between;
23
22
  align-items: flex-end;
24
23
  padding: 15px 10px;
24
+ width: 100%;
25
25
  max-width: 100%;
26
26
 
27
27
  button {
@@ -104,7 +104,8 @@
104
104
  align-items: flex-end;
105
105
  margin-top: 0;
106
106
  margin-bottom: 0;
107
- width: 75px;
107
+ width: 80px;
108
+ white-space: nowrap;
108
109
  font-size: $lt-player-font-size-sm;
109
110
  font-weight: $lt-player-font-weight-sm;
110
111
  color: $default-lt-player-white !important;
@@ -117,7 +118,7 @@
117
118
  bottom: 0;
118
119
  height: 40%;
119
120
  background: var(--plyr-video-controls-background,linear-gradient(transparent,rgba(0,0,0,.75)));
120
- border-radius: 0 0 0 30px;
121
+ z-index: -1;
121
122
  }
122
123
 
123
124
  &__volume_control {
@@ -153,7 +154,7 @@
153
154
  }
154
155
 
155
156
  .volume-control-enable {
156
- position: relative;
157
+ position: absolute;
157
158
  display: flex;
158
159
  height: 200px;
159
160
  justify-content: center;
@@ -231,6 +232,10 @@
231
232
  }
232
233
  }
233
234
  }
235
+
236
+ .bottom-controller-enable {
237
+ display: flex;
238
+ }
234
239
  }
235
240
 
236
241
  .fade-animation-controllers {
@@ -267,16 +272,13 @@
267
272
  .plyr {
268
273
  &__progress {
269
274
  &--wrapper {
270
- width: 100%;
271
275
  padding: 0 16px;
272
- position: absolute;
273
- bottom: 56px;
274
276
  }
275
277
  }
276
278
 
277
279
  &__controls {
278
280
  .bottom-controller {
279
- padding: 16px;
281
+ padding: 0 16px 20px;
280
282
 
281
283
  button {
282
284
  @include buttons-xs;
@@ -310,6 +312,32 @@
310
312
  }
311
313
  }
312
314
 
315
+ .lt-player-orientation--landscape {
316
+ .plyr {
317
+ &__progress {
318
+ &--wrapper {
319
+ padding: 0 $lt-player-padding-xxl / 2;
320
+
321
+ .bottom-controller__current {
322
+ display: none;
323
+ }
324
+ }
325
+ }
326
+
327
+ &__controls {
328
+ .bottom-controller {
329
+ padding: 0 $lt-player-padding-xxl / 2 15px $lt-player-padding-xxl / 2;
330
+ }
331
+ }
332
+ }
333
+
334
+ &:not(.lt-state-controls-visible) {
335
+ .bottom-controller__background {
336
+ display: none;
337
+ }
338
+ }
339
+ }
340
+
313
341
  // @Container Query
314
342
 
315
343
  @container portrait (width > 319px) {
@@ -318,13 +346,12 @@
318
346
  &__progress {
319
347
  &--wrapper {
320
348
  padding: 0 20px;
321
- bottom: 84px;
322
349
  }
323
350
  }
324
351
 
325
352
  &__controls {
326
353
  .bottom-controller {
327
- padding: 20px 20px 28px 20px;
354
+ padding: 0 20px 28px 20px;
328
355
 
329
356
  button {
330
357
  @include buttons-normal;
@@ -367,14 +394,17 @@
367
394
  .plyr {
368
395
  &__progress {
369
396
  &--wrapper {
370
- padding: 0 20px;
371
- bottom: 65px;
397
+ padding: 0 $lt-player-padding-xxl / 2;
398
+
399
+ .bottom-controller__current {
400
+ display: flex;
401
+ }
372
402
  }
373
403
  }
374
404
 
375
405
  &__controls {
376
406
  .bottom-controller {
377
- padding: 25px 20px;
407
+ padding: 0 $lt-player-padding-xxl / 2 25px $lt-player-padding-xxl / 2;
378
408
 
379
409
  &__center-buttons {
380
410
  gap: 20px;
@@ -395,13 +425,13 @@
395
425
  .plyr {
396
426
  &__progress {
397
427
  &--wrapper {
398
- padding: 0 40px;
428
+ padding: 0 $lt-player-padding-xxl;
399
429
  }
400
430
  }
401
431
 
402
432
  &__controls {
403
433
  .bottom-controller {
404
- padding: 25px 40px;
434
+ padding: 0 $lt-player-padding-xxl 25px $lt-player-padding-xxl;
405
435
 
406
436
  &__left-buttons,
407
437
  &__right-buttons {
@@ -414,6 +444,7 @@
414
444
 
415
445
  &__volume_control {
416
446
  display: flex;
447
+ left: 80px;
417
448
  }
418
449
 
419
450
  .mini-player-control {
@@ -430,31 +461,18 @@
430
461
  }
431
462
  }
432
463
 
433
- @container landscape (width > 759px) {
434
- .lt-player-orientation--landscape {
435
- .plyr {
436
- &__controls {
437
- .bottom-controller {
438
-
439
- }
440
- }
441
- }
442
- }
443
- }
444
-
445
464
  @container landscape (width > 912px) {
446
465
  .lt-player-orientation--landscape {
447
466
  .plyr {
448
467
  &__progress {
449
468
  &--wrapper {
450
- padding: 0 40px;
451
- bottom: 81px;
469
+ padding: 0 $lt-player-padding-xxl;
452
470
  }
453
471
  }
454
472
 
455
473
  &__controls {
456
474
  .bottom-controller {
457
- padding: 28px 40px;
475
+ padding: 0 $lt-player-padding-xxl 28px $lt-player-padding-xxl;
458
476
 
459
477
  &__left-buttons,
460
478
  &__right-buttons {
@@ -465,6 +483,10 @@
465
483
  gap: 32px;
466
484
  }
467
485
 
486
+ &__volume_control {
487
+ left: 100px;
488
+ }
489
+
468
490
  &__next-chapter-view,
469
491
  &__previous-chapter-view {
470
492
  font-size: $lt-player-font-size-lg2;
@@ -491,6 +513,7 @@
491
513
  &__previous-chapter-view,
492
514
  &__next-chapter-view {
493
515
  display: flex;
516
+ gap: 8px;
494
517
  }
495
518
  }
496
519
  }
@@ -2,12 +2,6 @@
2
2
 
3
3
  .lt-player-notification {
4
4
  width: 100%;
5
- height: 100%;
6
- display: flex;
7
-
8
- &.portrait {
9
- position: relative;
10
- }
11
5
 
12
6
  &__notification-button-state {
13
7
  position: absolute;
@@ -32,11 +26,9 @@
32
26
  }
33
27
 
34
28
  .lt-player-video-content {
35
- position: absolute;
36
- bottom: 110px;
37
29
  text-align: left;
38
- display: flex;
39
- padding: 0 16px;
30
+ display: none;
31
+ padding: 0;
40
32
  width: 100%;
41
33
  user-select: none;
42
34
  align-items: end;
@@ -79,6 +71,10 @@
79
71
  }
80
72
  }
81
73
 
74
+ .lt-player-video-content-enable {
75
+ display: flex;
76
+ }
77
+
82
78
  .poster-paragraph__button {
83
79
  background: none;
84
80
  box-shadow: none;
@@ -98,9 +94,19 @@
98
94
  .lt-player-rewind-area,
99
95
  .lt-player-forward-area {
100
96
  touch-action: inherit !important;
101
- width: 100%;
97
+ width: 50%;
102
98
  height: 100%;
103
99
  z-index: 4;
100
+ position: absolute;
101
+ top: 0;
102
+ }
103
+
104
+ .lt-player-forward-area {
105
+ right: 0;
106
+ }
107
+
108
+ .lt-player-rewind-area {
109
+ left: 0;
104
110
  }
105
111
 
106
112
  .lt-player-rewind,
@@ -221,13 +227,22 @@
221
227
  }
222
228
  }
223
229
 
230
+ .lt-player-orientation--portrait {
231
+ .lt-player-notification {
232
+ padding: 20px 20px 28px 20px;
233
+ }
234
+ }
235
+
236
+ .lt-player-orientation--landscape {
237
+ .lt-player-notification {
238
+ padding: 0;
239
+ }
240
+ }
241
+
224
242
  @container portrait (width > 319px) {
225
243
  .lt-player-orientation--portrait {
226
244
  .lt-player-notification {
227
245
  .lt-player-video-content {
228
- padding: 0 20px;
229
- bottom: 136px;
230
-
231
246
  .poster-title {
232
247
  @extend %line-clamp-3;
233
248
  @include line-clamp-3;
@@ -14,7 +14,7 @@
14
14
  .top-controllers {
15
15
  width: 100%;
16
16
  padding: 10px 10px 0;
17
- position: absolute;
17
+ margin-bottom: auto;
18
18
 
19
19
  button {
20
20
  @extend %lt-player-btn;