@eluvio/elv-player-js 1.0.139 → 2.0.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 +35 -6
  2. package/dist/.vite/manifest.json +17 -17
  3. package/dist/{Analytics-cQC_NR8f.mjs → Analytics-MzZmvYgy.mjs} +1 -1
  4. package/dist/{Analytics-z6nAtuJx.js → Analytics-jM8HcyUa.js} +1 -1
  5. package/dist/{dash.all.min-Uvqi9PBX.js → dash.all.min-16Sl6Y0h.js} +1 -1
  6. package/dist/{dash.all.min-JeIXEd1s.mjs → dash.all.min-2ST8aEXP.mjs} +1 -1
  7. package/dist/elv-player-js.cjs.js +1 -1
  8. package/dist/elv-player-js.css +1 -1
  9. package/dist/elv-player-js.es.js +1 -1
  10. package/dist/{index-RKrb2ZFL.js → index-BThzGsbn.js} +1 -1
  11. package/dist/index-Cw8L2-NE.js +367 -0
  12. package/dist/{index-FpQhGSc8.mjs → index-herSXPMN.mjs} +1 -1
  13. package/dist/{index-FmpRD8ov.mjs → index-mO9GR6Op.mjs} +25278 -24415
  14. package/lib/index.js +7 -0
  15. package/{src → lib/player}/Analytics.js +9 -8
  16. package/lib/player/Controls.js +912 -0
  17. package/{src → lib/player}/FairPlay.js +2 -0
  18. package/lib/player/Player.js +881 -0
  19. package/lib/player/PlayerParameters.js +173 -0
  20. package/lib/static/icons/Icons.js +29 -0
  21. package/lib/static/icons/svgs/backward-circle.svg +5 -0
  22. package/lib/static/icons/svgs/backward.svg +4 -0
  23. package/lib/static/icons/svgs/captions-off.svg +7 -0
  24. package/lib/static/icons/svgs/captions.svg +6 -0
  25. package/lib/static/icons/svgs/check.svg +1 -0
  26. package/lib/static/icons/svgs/chevron-left.svg +1 -0
  27. package/lib/static/icons/svgs/chevron-right.svg +1 -0
  28. package/lib/static/icons/svgs/forward-circle.svg +5 -0
  29. package/lib/static/icons/svgs/forward.svg +4 -0
  30. package/{src/static/icons/media/Full Screen icon.svg → lib/static/icons/svgs/full-screen.svg} +1 -1
  31. package/lib/static/icons/svgs/large-play-circle.svg +4 -0
  32. package/lib/static/icons/svgs/list.svg +1 -0
  33. package/{src/static/icons → lib/static/icons/svgs}/minimize.svg +1 -1
  34. package/{src/static/icons/media/Pause icon.svg → lib/static/icons/svgs/pause-circle.svg} +3 -3
  35. package/lib/static/icons/svgs/pause.svg +1 -0
  36. package/{src/static/icons/media/Play icon.svg → lib/static/icons/svgs/play-circle.svg} +1 -1
  37. package/lib/static/icons/svgs/play.svg +1 -0
  38. package/lib/static/icons/svgs/rotate-cw.svg +1 -0
  39. package/lib/static/icons/svgs/settings.svg +11 -0
  40. package/{src/static/icons/media/skip back icon.svg → lib/static/icons/svgs/skip-backward.svg} +2 -3
  41. package/{src/static/icons/media/Skip forward icon.svg → lib/static/icons/svgs/skip-forward.svg} +2 -3
  42. package/{src/static/icons/media/Volume icon.svg → lib/static/icons/svgs/volume-high.svg} +3 -3
  43. package/lib/static/icons/svgs/volume-low.svg +10 -0
  44. package/{src/static/icons/media/low volume icon.svg → lib/static/icons/svgs/volume-medium.svg} +2 -2
  45. package/{src/static/icons/media/no volume icon.svg → lib/static/icons/svgs/volume-off.svg} +3 -3
  46. package/lib/static/stylesheets/common.module.scss +486 -0
  47. package/lib/static/stylesheets/controls-tv.module.scss +488 -0
  48. package/lib/static/stylesheets/controls-web.module.scss +422 -0
  49. package/lib/static/stylesheets/player-profile-form.module.scss +141 -0
  50. package/lib/static/stylesheets/player.module.scss +92 -0
  51. package/lib/static/stylesheets/reset.module.scss +79 -0
  52. package/lib/static/stylesheets/ticket-form.module.scss +123 -0
  53. package/lib/ui/BuildIcons.cjs +44 -0
  54. package/lib/ui/Common.js +210 -0
  55. package/lib/ui/Components.jsx +342 -0
  56. package/lib/ui/Observers.js +449 -0
  57. package/lib/ui/PlayerProfileForm.jsx +106 -0
  58. package/lib/ui/PlayerUI.jsx +316 -0
  59. package/lib/ui/TVControls.jsx +337 -0
  60. package/lib/ui/TicketForm.jsx +147 -0
  61. package/lib/ui/WebControls.jsx +290 -0
  62. package/package.json +35 -47
  63. package/dist/index-88AgCVwU.js +0 -367
  64. package/src/BuildIcons.js +0 -27
  65. package/src/PlayerControls.js +0 -1478
  66. package/src/index.js +0 -1416
  67. package/src/static/icons/Icons.js +0 -15
  68. package/src/static/icons/Settings icon.svg +0 -4
  69. package/src/static/icons/chat icon collapse.svg +0 -1
  70. package/src/static/icons/chat icon.svg +0 -11
  71. package/src/static/icons/chat send.svg +0 -1
  72. package/src/static/icons/full screen.svg +0 -1
  73. package/src/static/icons/media/LargePlayIcon.svg +0 -4
  74. package/src/static/icons/media/Settings icon.svg +0 -4
  75. package/src/static/icons/media/Skip backward icon.svg +0 -4
  76. package/src/static/icons/media/list.svg +0 -1
  77. package/src/static/icons/media/loop icon.svg +0 -12
  78. package/src/static/icons/media/shuffle icon.svg +0 -13
  79. package/src/static/icons/muted.svg +0 -11
  80. package/src/static/icons/pause.svg +0 -1
  81. package/src/static/icons/play circle.svg +0 -1
  82. package/src/static/icons/play.svg +0 -1
  83. package/src/static/icons/settings.svg +0 -1
  84. package/src/static/icons/slider circle.svg +0 -1
  85. package/src/static/icons/unmuted.svg +0 -10
  86. package/src/static/images/ELUV.IO logo embed player.png +0 -0
  87. package/src/static/images/ELUV.IO logo embed player.svg +0 -1
  88. package/src/static/images/ELUVIO white.svg +0 -26
  89. package/src/static/images/Logo.png +0 -0
  90. package/src/static/stylesheets/player.scss +0 -1065
  91. package/webpack.config.js +0 -152
  92. /package/{src/static/icons → lib/static/icons/svgs}/arrow-left.svg +0 -0
  93. /package/{src/static/icons/live icon.svg → lib/static/icons/svgs/live.svg} +0 -0
  94. /package/{src/static/icons → lib/static/icons/svgs}/multiview.svg +0 -0
  95. /package/{src/static/icons/media → lib/static/icons/svgs}/next.svg +0 -0
  96. /package/{src/static/icons/media → lib/static/icons/svgs}/previous.svg +0 -0
  97. /package/{src/static/icons → lib/static/icons/svgs}/x.svg +0 -0
  98. /package/{src/static/images/ELUV.IO white 20 px V2.png → lib/static/images/Logo.png} +0 -0
@@ -0,0 +1,488 @@
1
+ .container {
2
+ align-items: center;
3
+ bottom: 0;
4
+ color: #FFF;
5
+ display: flex;
6
+ font-family: Inter, system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
7
+ height: 100%;
8
+ justify-content: center;
9
+ left: 0;
10
+ position: absolute;
11
+ right: 0;
12
+ top: 0;
13
+ width: 100%;
14
+
15
+ --layer-title: 1;
16
+ --layer-controls: 2;
17
+ --layer-info: 4;
18
+ --layer-center-button: 3;
19
+
20
+ --color-highlight: #3784eb;
21
+
22
+ --color-text: #FFF;
23
+ --color-text-highlight: #5e9ff3;
24
+
25
+ --color-button: #FFF;
26
+
27
+ --color-menu-background: rgba(227, 227, 227, 70%);
28
+ --color-menu-button-active: #FFF;
29
+ --color-menu-button-focused: rgba(255, 255, 255, 75%);
30
+ --color-menu-text: #282828;
31
+ --color-menu-text-secondary: #666;
32
+
33
+ --content-image-size: 150px;
34
+
35
+ &--default-controls {
36
+ pointer-events: none;
37
+ user-select: none;
38
+ }
39
+ }
40
+
41
+ .autohide {
42
+ &:not(:has(:focus-visible)) {
43
+ .bottom-controls-container--autohide {
44
+ opacity: 0;
45
+ pointer-events: none;
46
+ user-select: none;
47
+ }
48
+ }
49
+ }
50
+
51
+ .icon-button {
52
+ align-items: center;
53
+ color: var(--color-button);
54
+ display: flex;
55
+ height: 100%;
56
+ padding: 5px;
57
+ transition: color 0.15s ease;
58
+ width: auto;
59
+
60
+ svg {
61
+ height: 100%;
62
+ max-width: 100%;
63
+ width: auto;
64
+ }
65
+
66
+ &:disabled {
67
+ opacity: 0.5;
68
+ }
69
+
70
+ &--drop-shadow-focus {
71
+ opacity: 0.6;
72
+ transition: opacity 0.25s ease;
73
+
74
+ &:hover,
75
+ &:focus-visible {
76
+ opacity: 1;
77
+ }
78
+
79
+ &:disabled {
80
+ opacity: 0.1;
81
+ }
82
+
83
+ &:focus-visible {
84
+ filter: drop-shadow(0 0 5px #FFF);
85
+ }
86
+ }
87
+
88
+ &-active,
89
+ &--circle-focus {
90
+ border-radius: 100%;
91
+ transition: background-color 0.25s ease, color 0.25s ease, filter 0.25s ease;
92
+
93
+ &.icon-button-active,
94
+ &:focus-visible {
95
+ background-color: #FFF;
96
+ color: #000;
97
+ filter: drop-shadow(0 0 5px #FFF);
98
+
99
+ * {
100
+ color: #000;
101
+ }
102
+ }
103
+ }
104
+ }
105
+
106
+ .text-button {
107
+ border-radius: 5px;
108
+ padding: 5px 10px;
109
+ transition: background-color 0.25s ease, color 0.5s ease, filter 0.25s ease;
110
+
111
+ &--active,
112
+ &:hover,
113
+ &:focus-visible {
114
+ background-color: #FFF;
115
+ color: #000;
116
+ filter: drop-shadow(0 0 5px #FFF);
117
+ }
118
+ }
119
+
120
+ .bottom-controls-container {
121
+ animation: 0.5s fadein ease;
122
+ bottom: 0;
123
+ max-width: 100%;
124
+ padding: 0 50px 30px;
125
+ position: absolute;
126
+ transition: opacity 0.5s ease;
127
+ width: 100%;
128
+ z-index: var(--layer-controls);
129
+ }
130
+
131
+ .bottom-controls-gradient {
132
+ background: linear-gradient(transparent, rgba(0,0,0,100%));
133
+ bottom: 0;
134
+ height: 150%;
135
+ left: 0;
136
+ pointer-events: none;
137
+ position: absolute;
138
+ right: 0;
139
+ user-select: none;
140
+ z-index: 0;
141
+ }
142
+
143
+ .center-play-button {
144
+ height: 125px;
145
+ position: relative;
146
+ transition: opacity 0.5s ease;
147
+ width: 125px;
148
+ z-index: var(--layer-center-button);
149
+
150
+ &--hidden {
151
+ opacity: 0;
152
+ pointer-events: none;
153
+ transition: opacity 0.15s ease;
154
+ user-select: none;
155
+ }
156
+ }
157
+
158
+ .title-container {
159
+ align-items: center;
160
+ display: flex;
161
+ gap: 20px;
162
+ margin-bottom: 10px;
163
+ position: relative;
164
+ width: 100%;
165
+
166
+ .title {
167
+ font-size: 32px;
168
+ }
169
+
170
+ .menu-control-container {
171
+ margin-right: -8px;
172
+ }
173
+ }
174
+
175
+ .time-container {
176
+ align-items: center;
177
+ display: flex;
178
+ margin-top: 10px;
179
+ position: relative;
180
+ }
181
+
182
+ .live-indicator {
183
+ background: #F00;
184
+ border-radius: 5px;
185
+ font-size: 14px;
186
+ font-weight: 600;
187
+ padding: 3px 10px;
188
+ position: relative;
189
+ text-transform: uppercase;
190
+ user-select: none;
191
+ width: max-content;
192
+ }
193
+
194
+
195
+ .bottom-controls {
196
+ align-items: flex-end;
197
+ display: flex;
198
+ height: 65px;
199
+ justify-content: center;
200
+ position: relative;
201
+ }
202
+
203
+ .center-buttons {
204
+ align-items: center;
205
+ display: flex;
206
+ gap: 15px;
207
+ height: 100%;
208
+ margin-bottom: 10px;
209
+
210
+ .icon-button {
211
+ height: 75%;
212
+ }
213
+
214
+ .play-pause-button {
215
+ height: 100%;
216
+ }
217
+
218
+ .track-button {
219
+ padding: 13px;
220
+ }
221
+ }
222
+
223
+ .bottom-left-controls,
224
+ .bottom-right-controls {
225
+ align-items: center;
226
+ display: flex;
227
+ gap: 10px;
228
+ height: 35px;
229
+ position: absolute;
230
+ }
231
+
232
+ .bottom-left-controls {
233
+ left: -10px;
234
+ }
235
+
236
+ .bottom-right-controls {
237
+ right: -10px;
238
+ }
239
+
240
+ /* Info box */
241
+ .info-box-container {
242
+ animation: 0.5s fadein ease;
243
+ bottom: 30px;
244
+ display: grid;
245
+ gap: 20px;
246
+ height: max-content;
247
+ left: 50px;
248
+ position: absolute;
249
+ right: 50px;
250
+ z-index: var(--layer-info);
251
+ }
252
+
253
+ .info-box {
254
+ align-items: center;
255
+ backdrop-filter: blur(5px);
256
+ background: rgba(10, 10, 10, 70%);
257
+ border-radius: 7px;
258
+ box-shadow: 0 0 32px 0 rgba(0, 0, 0, 100%);
259
+ display: flex;
260
+ gap: 30px;
261
+ padding: 15px 30px 15px 15px;
262
+ }
263
+
264
+ .info-box-image-container {
265
+ border-radius: 5px;
266
+ height: var(--content-image-size);
267
+ min-height: var(--content-image-size);
268
+ min-width: var(--content-image-size);
269
+ overflow: hidden;
270
+ width: var(--content-image-size);
271
+ }
272
+
273
+ .info-box-image {
274
+ height: 100%;
275
+ object-fit: cover;
276
+ object-position: center;
277
+ width: 100%;
278
+ }
279
+
280
+ .info-box-text {
281
+ align-content: start;
282
+ display: grid;
283
+ flex-grow: 1;
284
+ gap: 10px;
285
+ height: 100%;
286
+
287
+ &--top-padding {
288
+ padding-top: 10px;
289
+ }
290
+ }
291
+
292
+ .info-box-headers {
293
+ display: flex;
294
+ flex-wrap: wrap;
295
+ font-size: 16px;
296
+ font-weight: 600;
297
+ gap: 20px;
298
+ }
299
+
300
+ .info-box-description {
301
+ font-size: 18px;
302
+ }
303
+
304
+ .info-box-title {
305
+ font-size: 24px;
306
+ font-weight: 600;
307
+ }
308
+
309
+ .info-box-button {
310
+ align-items: center;
311
+ background: #FFF;
312
+ border-radius: 5px;
313
+ color: #000;
314
+ display: flex;
315
+ font-weight: 500;
316
+ gap: 15px;
317
+ padding: 5px 10px;
318
+ transition: background-color 0.25s ease, color 0.25s ease, filter 0.25s ease;
319
+ width: max-content;
320
+
321
+ &:hover,
322
+ &:focus,
323
+ &:focus-visible {
324
+ filter: drop-shadow(0 0 5px #FFF);
325
+ }
326
+
327
+ &--restart {
328
+ height: 50px;
329
+ padding-left: 20px;
330
+ padding-right: 30px;
331
+ }
332
+ }
333
+
334
+ /* Menus */
335
+
336
+ .menu-control-container {
337
+ position: relative;
338
+
339
+ .icon-button {
340
+ height: 45px;
341
+ padding: 10px;
342
+ width: 45px;
343
+ }
344
+ }
345
+
346
+ /* Misc */
347
+
348
+ .spacer {
349
+ flex-grow: 1;
350
+ }
351
+
352
+ .watermark {
353
+ height: auto;
354
+ pointer-events: none;
355
+ position: absolute;
356
+ right: 50px;
357
+ top: 20px;
358
+ user-select: none;
359
+ width: 70px;
360
+ z-index: var(--layer-title);
361
+ }
362
+
363
+ :global(.__eluvio-player--size-lg) {
364
+ .info-box-title {
365
+ font-size: 20px;
366
+ }
367
+
368
+ .info-box-description {
369
+ font-size: 16px;
370
+ }
371
+
372
+ .info-box-container {
373
+ left: 30px;
374
+ right: 30px;
375
+ }
376
+
377
+ .center-play-button {
378
+ height: 100px;
379
+ width: 100px;
380
+ }
381
+ }
382
+
383
+ :global(.__eluvio-player--size-md),
384
+ :global(.__eluvio-player--size-sm) {
385
+ .center-play-button {
386
+ display: none;
387
+ }
388
+
389
+ .bottom-controls-container {
390
+ padding: 15px 30px 30px;
391
+ }
392
+
393
+ .bottom-controls {
394
+ height: max-content;
395
+ padding-bottom: 20px;
396
+ }
397
+
398
+ .bottom-left-controls,
399
+ .bottom-right-controls {
400
+ bottom: 0;
401
+ }
402
+
403
+ .center-buttons {
404
+ height: 50px;
405
+ }
406
+
407
+ .title {
408
+ font-size: 16px;
409
+ }
410
+
411
+ .text-button {
412
+ font-size: 12px;
413
+ }
414
+
415
+ .menu-control-container {
416
+ position: unset;
417
+
418
+ .icon-button {
419
+ height: 30px;
420
+ padding: 5px;
421
+ width: 30px;
422
+ }
423
+ }
424
+
425
+ .menu {
426
+ max-height: calc(var(--portal-height) - 250px)!important;
427
+ }
428
+
429
+ .info-box-container {
430
+ left: 15px;
431
+ max-width: calc(var(--portal-width) - 30px);
432
+ right: 15px;
433
+ }
434
+
435
+ .info-box {
436
+ padding-bottom: 75px;
437
+ }
438
+
439
+ .info-box-button--restart {
440
+ bottom: 15px;
441
+ font-size: 12px;
442
+ height: auto;
443
+ left: 15px;
444
+ padding-inline: 10px;
445
+ position: absolute;
446
+ width: 150px;
447
+ }
448
+
449
+ .info-box-title {
450
+ font-size: 20px;
451
+ }
452
+
453
+ .info-box-description {
454
+ font-size: 16px;
455
+ }
456
+
457
+ .watermark {
458
+ right: 30px;
459
+ }
460
+ }
461
+
462
+ :global(.__eluvio-player--size-sm) {
463
+ .info-box {
464
+ align-items: flex-start;
465
+ flex-direction: column;
466
+ justify-content: flex-start;
467
+ max-height: calc(var(--portal-height) - 125px);
468
+ overflow-y: auto;
469
+ padding: 50px 20px;
470
+ }
471
+
472
+ .info-box-title {
473
+ font-size: 16px;
474
+ }
475
+
476
+ .info-box-headers,
477
+ .info-box-description {
478
+ font-size: 12px;
479
+ }
480
+ }
481
+
482
+
483
+ /* Animations */
484
+
485
+ @keyframes fadein {
486
+ from { opacity: 0; }
487
+ to { opacity: 1; }
488
+ }