@latest-thinking/lt-player 1.1.0 → 1.2.0

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 +27 -52
  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 +200 -49
  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
@@ -0,0 +1,352 @@
1
+ WEBVTT
2
+
3
+ 00:00:10.510 --> 00:00:15.850
4
+ These days, no matter where you go online, whether you spend time on social networks
5
+
6
+ 00:00:16.030 --> 00:00:21.775
7
+ or read your favorite online magazines or newspapers, you get bombarded by thousands of ads.
8
+
9
+ 00:00:21.775 --> 00:00:28.270
10
+ Millions of websites such as digital media websites monetize their content by running ads.
11
+
12
+ 00:00:28.270 --> 00:00:31.540
13
+ Some of these ads can be quite valuable for consumers,
14
+
15
+ 00:00:31.540 --> 00:00:36.632
16
+ but the overwhelming volume of these ads can quickly become disturbing.
17
+
18
+ 00:00:36.632 --> 00:00:39.812
19
+ This is the place where ad blockers, simple software programs,
20
+
21
+ 00:00:39.812 --> 00:00:45.002
22
+ come into play in order to prevent ads from being displayed to users.
23
+
24
+ 00:00:45.002 --> 00:00:48.602
25
+ The adoption of ad blockers is becoming more widespread.
26
+
27
+ 00:00:48.602 --> 00:00:52.862
28
+ Recent surveys have shown that 40% of internet users in Germany
29
+
30
+ 00:00:53.372 --> 00:00:59.373
31
+ and 35% of internet users in the US have installed ad blockers on their desktop devices.
32
+
33
+ 00:00:59.373 --> 00:01:01.835
34
+ So how do ad blockers make money?
35
+
36
+ 00:01:01.835 --> 00:01:07.205
37
+ So among different methods of how ad blockers can generate revenues, they often use so-called whitelisting.
38
+
39
+ 00:01:07.205 --> 00:01:13.596
40
+ Under whitelisting, publishers are allowed to show their ads to the consumers.
41
+
42
+ 00:01:13.596 --> 00:01:20.421
43
+ For instance, Adblock Plus, a dominant ad blocker in Germany with 95% market share,
44
+
45
+ 00:01:20.421 --> 00:01:27.981
46
+ asks publishers for 30% of their additional advertising revenue if they want to become whitelisted.
47
+
48
+ 00:01:27.981 --> 00:01:31.806
49
+ While ad blockers can be widely appreciated by users,
50
+
51
+ 00:01:31.806 --> 00:01:38.499
52
+ they pose a serious threat to publishers who rely on ad financing.
53
+
54
+ 00:01:38.499 --> 00:01:44.889
55
+ Additionally, ad blockers affect the way advertisers place their ads in the advertising market,
56
+
57
+ 00:01:44.889 --> 00:01:49.929
58
+ and this in turn affects how advertisers compete with each other in the product market
59
+
60
+ 00:01:50.109 --> 00:01:53.439
61
+ when they sell their final products to consumers.
62
+
63
+ 00:01:53.439 --> 00:01:58.709
64
+ In our study, we explore the strategic and welfare effects of ad blocking.
65
+
66
+ 00:01:58.709 --> 00:02:01.770
67
+ We are interested in the following questions.
68
+
69
+ 00:02:01.770 --> 00:02:06.720
70
+ First of all, who is benefiting and who is losing from the presence of ad blockers?
71
+
72
+ 00:02:06.720 --> 00:02:13.553
73
+ What is the impact of ad blocking on the advertising market and on the product market?
74
+
75
+ 00:02:13.553 --> 00:02:16.012
76
+ We're trying to answer these questions in our study.
77
+
78
+ 00:02:20.144 --> 00:02:22.124
79
+ To investigate these questions,
80
+
81
+ 00:02:22.124 --> 00:02:28.844
82
+ we're building a theoretical model that reconciles the key ingredients of advertising and product markets.
83
+
84
+ 00:02:28.844 --> 00:02:35.594
85
+ The main challenge for us is that we're essentially faced with a complex environment with multiple layers of strategic
86
+
87
+ 00:02:35.624 --> 00:02:36.674
88
+ players.
89
+
90
+ 00:02:36.674 --> 00:02:42.374
91
+ I will provide the simplest framework that helps to think about that environment
92
+
93
+ 00:02:42.854 --> 00:02:46.694
94
+ and introduce all the key players step by step.
95
+
96
+ 00:02:46.694 --> 00:02:55.034
97
+ The supply side of the advertising market is represented by two publishers that bundle their content with advertising.
98
+
99
+ 00:02:55.034 --> 00:03:03.155
100
+ We assume that these publishers are ad funded in the sense that they provide the content to consumers for free
101
+
102
+ 00:03:03.515 --> 00:03:07.985
103
+ and sell advertising slots to the advertisers.
104
+
105
+ 00:03:07.985 --> 00:03:11.195
106
+ We assume that consumers visit both publishers
107
+
108
+ 00:03:11.495 --> 00:03:18.275
109
+ and advertisers can reach consumers by buying ad slots at any of the publishers.
110
+
111
+ 00:03:18.275 --> 00:03:25.295
112
+ It's reasonable to think that if a publisher displays multiple ads to a consumer that these ads become less effective.
113
+
114
+ 00:03:25.295 --> 00:03:29.405
115
+ This could be, for instance, due to the limited attention on the consumer side.
116
+
117
+ 00:03:29.405 --> 00:03:35.975
118
+ Therefore, we assume that each publisher has only one slot to be sold to an advertiser.
119
+
120
+ 00:03:35.975 --> 00:03:42.785
121
+ This, in turn, creates competition between advertisers for the attention of consumers.
122
+
123
+ 00:03:42.785 --> 00:03:47.992
124
+ If one advertiser occupies one ad slot, this slot cannot be taken by the rival advertiser.
125
+
126
+ 00:03:47.992 --> 00:03:51.310
127
+ If competition for consumer attention is extremely high,
128
+
129
+ 00:03:51.310 --> 00:03:57.400
130
+ then advertisers might want to foreclose their rivals by buying both ad slots
131
+
132
+ 00:03:57.520 --> 00:04:01.330
133
+ and gaining the monopolistic position in the product market.
134
+
135
+ 00:04:01.330 --> 00:04:08.580
136
+ Now, with this framework in hand, we can analyze what happens when the ad blocker enters the advertising market.
137
+
138
+ 00:04:12.671 --> 00:04:17.091
139
+ We show that if the product market is highly competitive,
140
+
141
+ 00:04:17.091 --> 00:04:22.911
142
+ then advertisers will fiercely compete in the advertising market.
143
+
144
+ 00:04:22.911 --> 00:04:23.841
145
+ Therefore,
146
+
147
+ 00:04:23.841 --> 00:04:32.601
148
+ advertisers might find it optimal to foreclose their rivals by buying both ad slots on both publishers in order to get
149
+
150
+ 00:04:32.691 --> 00:04:36.351
151
+ and capture the monopoly profits in the product market.
152
+
153
+ 00:04:36.351 --> 00:04:39.651
154
+ If the competition in the product market is low,
155
+
156
+ 00:04:39.651 --> 00:04:44.331
157
+ then there is no threat from the rival advertisers in the product market
158
+
159
+ 00:04:44.361 --> 00:04:51.461
160
+ and therefore they buy only one ad slot in the advertising market in order to get access to consumers.
161
+
162
+ 00:04:51.461 --> 00:04:55.920
163
+ Then, having this nice framework in hand, we explore the strategic
164
+
165
+ 00:04:55.950 --> 00:05:01.170
166
+ and welfare effects of ad blockers entry into the advertising industry.
167
+
168
+ 00:05:01.170 --> 00:05:09.180
169
+ Suppose now that the ad blocker enters the market and some of the consumers install software of this ad blocker.
170
+
171
+ 00:05:09.180 --> 00:05:15.390
172
+ We assume that the ad blocker provides whitelisting opportunities for publishers.
173
+
174
+ 00:05:15.390 --> 00:05:17.730
175
+ If a publisher buys whitelisting,
176
+
177
+ 00:05:17.730 --> 00:05:25.350
178
+ then the advertiser who buys an ad slot from that publisher can get access to consumers who have previously installed
179
+
180
+ 00:05:25.410 --> 00:05:26.700
181
+ the ad blocker.
182
+
183
+ 00:05:26.700 --> 00:05:34.590
184
+ Our key finding reveals that the ad blocker might find it optimal to exclusively sell whitelisting only to one
185
+
186
+ 00:05:34.890 --> 00:05:35.730
187
+ publisher.
188
+
189
+ 00:05:35.730 --> 00:05:42.330
190
+ Then, if the product market is highly competitive, then just as in the case without the ad blocker,
191
+
192
+ 00:05:42.330 --> 00:05:48.360
193
+ advertisers will try to buy both ad slots in order to foreclose the rival advertisers.
194
+
195
+ 00:05:48.360 --> 00:05:53.190
196
+ In this case, the ad blocker doesn't change the competitiveness of the product market
197
+
198
+ 00:05:53.490 --> 00:05:58.110
199
+ and only extracts some surplus from the whitelisted publisher and the advertiser.
200
+
201
+ 00:05:58.110 --> 00:06:05.130
202
+ Otherwise, if competition in the product market is low, then each advertiser is going to buy only one ad slot.
203
+
204
+ 00:06:05.130 --> 00:06:13.260
205
+ The crucial difference with the case without an ad blocker is that now the advertiser who buys an ad slot from the
206
+
207
+ 00:06:13.260 --> 00:06:18.730
208
+ whitelisted publisher is going to get monopoly access to the consumers who have installed the ad blocker.
209
+
210
+ 00:06:18.730 --> 00:06:23.580
211
+ This, as a result, would soften the competition between the advertisers.
212
+
213
+ 00:06:23.580 --> 00:06:29.910
214
+ Therefore, in this case, we can conclude that the ad blocker softens competition in the product market
215
+
216
+ 00:06:30.240 --> 00:06:34.140
217
+ and extracts some surplus not only from the whitelisted publishers and the advertisers,
218
+
219
+ 00:06:34.140 --> 00:06:38.670
220
+ but also from the final consumers who buy the product in the product market.
221
+
222
+ 00:06:42.834 --> 00:06:50.376
223
+ We think that our results are relevant because they can be applied to many markets in which the adoption of ad blockers
224
+
225
+ 00:06:50.390 --> 00:06:51.680
226
+ rapidly grows.
227
+
228
+ 00:06:51.680 --> 00:06:56.090
229
+ There's empirical evidence that ad blocking reduces publishers’ revenue
230
+
231
+ 00:06:56.450 --> 00:07:00.320
232
+ and the number of consumer visits to publisher websites.
233
+
234
+ 00:07:00.320 --> 00:07:07.760
235
+ Moreover, there's empirical evidence showing that ad blocking reduces the ad spending of online advertisers.
236
+
237
+ 00:07:07.760 --> 00:07:12.590
238
+ This confirms the importance of taking into account both the advertising and product markets.
239
+
240
+ 00:07:12.590 --> 00:07:14.390
241
+ So in our study,
242
+
243
+ 00:07:14.390 --> 00:07:20.630
244
+ we advocate for comprehensive analysis of both of these markets in order to evaluate the welfare effects of ad
245
+
246
+ 00:07:20.660 --> 00:07:21.610
247
+ blockers’ entry.
248
+
249
+ 00:07:21.610 --> 00:07:26.150
250
+ Second, our results are relevant because they can be applied in a great number of debates
251
+
252
+ 00:07:26.600 --> 00:07:31.880
253
+ and discussions in Germany about the competitive effects of ad blockers.
254
+
255
+ 00:07:31.880 --> 00:07:41.105
256
+ In Germany, among other publishers, Axel Springer was not very happy about the idea of paying to Adblock Plus,
257
+
258
+ 00:07:41.105 --> 00:07:49.310
259
+ a dominant ad blocker in Germany that first blocks the ads in order to later unblock them,
260
+
261
+ 00:07:49.310 --> 00:07:57.110
262
+ in exchange for a license fee. Unsurprisingly, many publishers call this business practice highway robbery.
263
+
264
+ 00:07:57.110 --> 00:08:04.100
265
+ Since 2014, Axel Springer has been trying to legally confront Adblock Plus without success.
266
+
267
+ 00:08:04.100 --> 00:08:11.480
268
+ In 2019, the Federal Supreme Court of Germany declared that both of the practices, ad blocking and whitelisting,
269
+
270
+ 00:08:11.480 --> 00:08:18.860
271
+ are permissible. Other cases against Adlock Plus were resolved in favor of the ad blocker.
272
+
273
+ 00:08:18.860 --> 00:08:22.850
274
+ Our research demonstrates that ad blockers setting high prices
275
+
276
+ 00:08:22.910 --> 00:08:29.510
277
+ and providing exclusive whitelisting to publishers can undermine competition in the product market.
278
+
279
+ 00:08:29.510 --> 00:08:34.160
280
+ This eventually leads to higher prices that advertisers pay in the advertising market
281
+
282
+ 00:08:34.610 --> 00:08:39.740
283
+ and also to high prices that consumers pay for products in the product market.
284
+
285
+ 00:08:39.740 --> 00:08:43.532
286
+ These arguments are new and haven't been previously explored.
287
+
288
+ 00:08:47.711 --> 00:08:51.761
289
+ We believe that our results are relevant and useful for antitrust authorities
290
+
291
+ 00:08:52.451 --> 00:08:57.941
292
+ and can help them to evaluate the competitive effects of ad blocking and whitelisting.
293
+
294
+ 00:08:57.941 --> 00:09:01.481
295
+ But there are some other considerations that have to be taken into account.
296
+
297
+ 00:09:01.481 --> 00:09:01.811
298
+ First,
299
+
300
+ 00:09:01.811 --> 00:09:10.151
301
+ it is important to study the strategic response of publishers that react to the widespread adoption of ad blockers.
302
+
303
+ 00:09:10.151 --> 00:09:17.861
304
+ We observed that some of the publishers may improve the ad experience of consumers by reducing their ad load.
305
+
306
+ 00:09:17.861 --> 00:09:23.921
307
+ For instance, they may employ more careful selection of ads to be displayed to the users.
308
+
309
+ 00:09:23.921 --> 00:09:30.911
310
+ Some of the publishers tried to fight back against the ad blockers by detecting those consumers who have installed the
311
+
312
+ 00:09:30.941 --> 00:09:35.681
313
+ ad blocker and adjusting their experience on the website accordingly.
314
+
315
+ 00:09:35.681 --> 00:09:42.431
316
+ So, for instance, these consumers can be asked to provide their personal emails, to subscribe to the newsletters
317
+
318
+ 00:09:42.821 --> 00:09:45.731
319
+ or to allow for collecting data.
320
+
321
+ 00:09:45.731 --> 00:09:52.241
322
+ Sometimes these ad blocking visitors can be asked to even turn off their ad blockers
323
+
324
+ 00:09:53.021 --> 00:09:57.461
325
+ or even asked to pay for ad free access to the website.
326
+
327
+ 00:09:57.461 --> 00:10:05.051
328
+ Second, it is important to take into account how advertisers would change their ads in response to ad blocking.
329
+
330
+ 00:10:05.051 --> 00:10:11.441
331
+ We observed that more and more advertisers tried to improve their ad campaigns by focusing more on conversion
332
+
333
+ 00:10:11.471 --> 00:10:13.841
334
+ and clicks rather than just impressions.
335
+
336
+ 00:10:13.841 --> 00:10:19.181
337
+ We also observed that some advertisers are trying to shift to what is called native ads;
338
+
339
+ 00:10:19.751 --> 00:10:25.301
340
+ the ads that are naturally embedded in the true content of the publishers website.
341
+
342
+ 00:10:25.301 --> 00:10:28.301
343
+ Native advertising is becoming more and more popular
344
+
345
+ 00:10:28.631 --> 00:10:33.461
346
+ and can be one of the directions of how online advertising evolves in the future.
347
+
348
+ 00:10:33.461 --> 00:10:39.701
349
+ Although the strategists of publishers and advertisers can push their ad blockers a little bit,
350
+
351
+ 00:10:39.701 --> 00:10:47.351
352
+ we believe that the effects of ad blockers on advertising and product markets will remain significant.
@@ -0,0 +1,7 @@
1
+ WEBVTT
2
+
3
+ 00:00:00.500 --> 00:00:20.000
4
+ The Web is always changing and the way we access it is changing and the way we access it is changing<br> Hello <br> and the way we access it is changing
5
+
6
+ 00:00:20.500 --> 00:00:60.300
7
+ and the way we access it is changing
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@latest-thinking/lt-player",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "LT player.",
5
5
  "main": "dist/js/lt-player-main.js",
6
6
  "module": "dist/js/lt-player-main.js",
@@ -2,7 +2,7 @@
2
2
  position: absolute;
3
3
  top: $top;
4
4
  left: $top;
5
- transform: translate(-#{$top}, -#{$top});
5
+ translate: -#{$top} -#{$top};
6
6
  }
7
7
 
8
8
  @mixin flex-position($flex, $content, $align) {
@@ -44,7 +44,7 @@ $lt-player-line-height-default: 1.2;
44
44
  // 2. Globals
45
45
  //---------------------------------------------
46
46
 
47
-
47
+ $lt-player-padding-xxl: 40px;
48
48
 
49
49
  //---------------------------------------------
50
50
  // 3. Colors
@@ -35,6 +35,17 @@ body {
35
35
  .lt-player {
36
36
  display: flex;
37
37
  width: 100%;
38
+
39
+
40
+ &__player {
41
+ &--no-radius {
42
+ border-radius: 0 !important;
43
+ }
44
+ }
45
+
46
+ .plyr--video {
47
+ background: transparent;
48
+ }
38
49
  }
39
50
 
40
51
  .lt-player-orientation {
@@ -47,6 +58,14 @@ body {
47
58
  }
48
59
  }
49
60
 
61
+ .lt-player:has(.plyr--fullscreen-fallback) {
62
+ container-type: normal;
63
+
64
+ .plyr--video {
65
+ background: black;
66
+ }
67
+ }
68
+
50
69
  .invisible {
51
70
  visibility: hidden;
52
71
  }
@@ -2,5 +2,5 @@
2
2
  @import "buttons";
3
3
  @import "images";
4
4
  @import "modal";
5
- @import "spinner";
5
+ @import "loader";
6
6
  @import "range";
@@ -0,0 +1,187 @@
1
+ @import "../abstracts/variables";
2
+
3
+ .lt-state-loader-active {
4
+ .lt-player__poster {
5
+ display: none;
6
+ }
7
+
8
+ .loader {
9
+ display: inline-block;
10
+
11
+ &__backdrop {
12
+ display: block;
13
+ }
14
+ }
15
+ }
16
+
17
+ .loader {
18
+ --_loader-dimensions: 80px;
19
+
20
+ @include center-position(50%, 50%);
21
+ display: none;
22
+ width: var(--_loader-dimensions);
23
+ height: var(--_loader-dimensions);
24
+
25
+ &__backdrop {
26
+ position: absolute;
27
+ inset: 0;
28
+ display: none;
29
+ z-index: 2;
30
+ background-color: rgb(0, 0, 0, 0.2);
31
+ }
32
+
33
+ div {
34
+ position: absolute;
35
+ display: block;
36
+ width: calc((var(--_loader-dimensions) / 10) * 8);
37
+ height: calc((var(--_loader-dimensions) / 10) * 8);
38
+ margin: 8px;
39
+ border: 8px solid $default-lt-player-white;
40
+ border-radius: 50%;
41
+ animation: rotate 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;
42
+ border-color: $default-lt-player-white transparent transparent transparent;
43
+
44
+ &:nth-child(1) {
45
+ animation-delay: -0.45s;
46
+ }
47
+
48
+ &:nth-child(2) {
49
+ animation-delay: -0.3s;
50
+ }
51
+
52
+ &:nth-child(3) {
53
+ animation-delay: -0.15s;
54
+ }
55
+ }
56
+ }
57
+
58
+ @keyframes rotate {
59
+ 0% {
60
+ transform: rotate(0deg);
61
+ }
62
+ 100% {
63
+ transform: rotate(360deg);
64
+ }
65
+ }
66
+
67
+ .lt-player-orientation--portrait {
68
+ .loader {
69
+ top: 35%;
70
+ }
71
+ }
72
+
73
+ .lt-player-orientation--landscape {
74
+ .loader {
75
+ --_loader-dimensions: 40px;
76
+ }
77
+
78
+ &.lt-state-loader-active {
79
+ &.lt-state-captions-enabled {
80
+ .loader {
81
+ --_top-positon: 40%;
82
+ top: var(--_top-positon);
83
+ translate: -50% calc(var(--_top-positon) * -1);
84
+ }
85
+ }
86
+
87
+ &:not(&.lt-state-captions-enabled) {
88
+ .loader {
89
+ --_top-positon: 30%;
90
+ top: var(--_top-positon);
91
+ translate: -50% calc(var(--_top-positon) * -1);
92
+ }
93
+ }
94
+ }
95
+ }
96
+
97
+ @container landscape (width > 479px) {
98
+ .lt-player-orientation--landscape {
99
+ .loader {
100
+ --_loader-dimensions: 80px;
101
+ }
102
+
103
+ &.lt-state-loader-active {
104
+ &.lt-state-captions-enabled {
105
+ .loader {
106
+ --_top-positon: 35%;
107
+ top: var(--_top-positon);
108
+ translate: -50% calc(var(--_top-positon) * -1);
109
+ }
110
+ }
111
+
112
+ &:not(&.lt-state-captions-enabled) {
113
+ .loader {
114
+ --_top-positon: 35%;
115
+ top: var(--_top-positon);
116
+ translate: -50% calc(var(--_top-positon) * -1);
117
+ }
118
+ }
119
+ }
120
+ }
121
+ }
122
+
123
+ @container landscape (width > 639px) {
124
+ .lt-player-orientation--landscape {
125
+ &.lt-state-loader-active {
126
+ &.lt-state-captions-enabled {
127
+ .loader {
128
+ --_top-positon: 20%;
129
+ top: var(--_top-positon);
130
+ translate: -50% calc(var(--_top-positon) * -1);
131
+ }
132
+ }
133
+
134
+ &:not(&.lt-state-captions-enabled) {
135
+ .loader {
136
+ --_top-positon: 35%;
137
+ top: var(--_top-positon);
138
+ translate: -50% calc(var(--_top-positon) * -1);
139
+ }
140
+ }
141
+ }
142
+ }
143
+ }
144
+
145
+ @container landscape (width > 759px) {
146
+ .lt-player-orientation--landscape {
147
+ &.lt-state-loader-active {
148
+ &.lt-state-captions-enabled {
149
+ .loader {
150
+ --_top-positon: 25%;
151
+ top: var(--_top-positon);
152
+ translate: -50% calc(var(--_top-positon) * -1);
153
+ }
154
+ }
155
+
156
+ &:not(&.lt-state-captions-enabled) {
157
+ .loader {
158
+ --_top-positon: 35%;
159
+ top: var(--_top-positon);
160
+ translate: -50% calc(var(--_top-positon) * -1);
161
+ }
162
+ }
163
+ }
164
+ }
165
+ }
166
+
167
+ @container landscape (width > 912px) {
168
+ .lt-player-orientation--landscape {
169
+ &.lt-state-loader-active {
170
+ &.lt-state-captions-enabled {
171
+ .loader {
172
+ --_top-positon: 30%;
173
+ top: var(--_top-positon);
174
+ translate: -50% calc(var(--_top-positon) * -1);
175
+ }
176
+ }
177
+
178
+ &:not(&.lt-state-captions-enabled) {
179
+ .loader {
180
+ --_top-positon: 40%;
181
+ top: var(--_top-positon);
182
+ translate: -50% calc(var(--_top-positon) * -1);
183
+ }
184
+ }
185
+ }
186
+ }
187
+ }
@@ -60,6 +60,12 @@ $modal-max-width: 620px;
60
60
  @include yellow-btn;
61
61
  }
62
62
 
63
+ body[modal-open-body] {
64
+ //position: fixed;
65
+ width: 100%;
66
+ overflow-x: hidden;
67
+ }
68
+
63
69
  .lt-player-portrate--mobile {
64
70
  &.lt-player--portrait {
65
71
  &__lg,
@@ -18,16 +18,11 @@
18
18
  visibility: hidden;
19
19
  }
20
20
 
21
- .plyr--video {
22
- background: transparent !important;
23
- }
24
-
25
21
  .plyr__video-wrapper {
26
22
  background: transparent !important;
27
23
  }
28
24
 
29
25
  .plyr {
30
- border-radius: 0 0 0 30px;
31
26
  z-index: unset!important;
32
27
  width: 100%;
33
28
  &__video-embed {
@@ -50,4 +45,27 @@
50
45
  .fullscreen-custom-control {
51
46
  display: none !important;
52
47
  }
48
+ }
49
+
50
+ .lt-player-wrapper {
51
+ width: 100%;
52
+ height: 100%;
53
+ object-fit: cover;
54
+ }
55
+
56
+ .lt-player {
57
+ border-radius: 0 0 0 30px;
58
+ overflow: hidden;
59
+
60
+ &.fullscreen-disabled {
61
+ .fullscreen-custom-control {
62
+ display: none;
63
+ }
64
+ }
65
+ }
66
+
67
+ .lt-player-orientation--landscape {
68
+ .lt-player-wrapper {
69
+ object-fit: contain;
70
+ }
53
71
  }
@@ -82,7 +82,7 @@
82
82
  height: 100%;
83
83
  }
84
84
 
85
- .is-fullscreen {
85
+ .lt-state-fullscreen {
86
86
  .lt-player__additional-info,
87
87
  .lt-player__additional-info-mobile {
88
88
  display: none;
@@ -21,7 +21,6 @@
21
21
  background: none!important;
22
22
  display: flex!important;
23
23
  flex-direction: column;
24
- justify-content: space-between!important;
25
24
  position: relative;
26
25
  padding: 0!important;
27
26
  }