myetv-player 1.2.0 → 1.3.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 (47) hide show
  1. package/css/myetv-player.css +131 -0
  2. package/css/myetv-player.min.css +1 -1
  3. package/dist/myetv-player.js +547 -102
  4. package/dist/myetv-player.min.js +486 -93
  5. package/package.json +35 -17
  6. package/plugins/twitch/myetv-player-twitch-plugin.js +125 -11
  7. package/plugins/vimeo/myetv-player-vimeo.js +80 -49
  8. package/plugins/youtube/README.md +5 -2
  9. package/plugins/youtube/myetv-player-youtube-plugin.js +766 -6
  10. package/.github/workflows/codeql.yml +0 -100
  11. package/.github/workflows/npm-publish.yml +0 -30
  12. package/SECURITY.md +0 -50
  13. package/build.js +0 -195
  14. package/scss/README.md +0 -161
  15. package/scss/_audio-player.scss +0 -21
  16. package/scss/_base.scss +0 -116
  17. package/scss/_controls.scss +0 -204
  18. package/scss/_loading.scss +0 -111
  19. package/scss/_menus.scss +0 -432
  20. package/scss/_mixins.scss +0 -112
  21. package/scss/_poster.scss +0 -8
  22. package/scss/_progress-bar.scss +0 -319
  23. package/scss/_resolution.scss +0 -68
  24. package/scss/_responsive.scss +0 -1368
  25. package/scss/_themes.scss +0 -30
  26. package/scss/_title-overlay.scss +0 -60
  27. package/scss/_tooltips.scss +0 -7
  28. package/scss/_variables.scss +0 -49
  29. package/scss/_video.scss +0 -221
  30. package/scss/_volume.scss +0 -122
  31. package/scss/_watermark.scss +0 -128
  32. package/scss/myetv-player.scss +0 -51
  33. package/scss/package.json +0 -16
  34. package/src/README.md +0 -560
  35. package/src/chapters.js +0 -521
  36. package/src/controls.js +0 -1242
  37. package/src/core.js +0 -1922
  38. package/src/events.js +0 -537
  39. package/src/fullscreen.js +0 -82
  40. package/src/i18n.js +0 -374
  41. package/src/playlist.js +0 -177
  42. package/src/plugins.js +0 -384
  43. package/src/quality.js +0 -963
  44. package/src/streaming.js +0 -346
  45. package/src/subtitles.js +0 -524
  46. package/src/utils.js +0 -65
  47. package/src/watermark.js +0 -246
@@ -1,204 +0,0 @@
1
- // ===================================
2
- // CONTROLS
3
- // ===================================
4
-
5
- @use 'mixins' as *;
6
- @use 'variables' as *;
7
-
8
- /* CONTROLS CONTAINER - IMPROVED RESPONSIVE DESIGN */
9
- .controls {
10
- position: absolute;
11
- bottom: 0;
12
- left: 0;
13
- right: 0;
14
- background: var(--player-bg-controls);
15
- padding: var(--player-controls-padding);
16
- opacity: 0;
17
- transform: translateY(100%);
18
- transition: all var(--player-transition-normal);
19
- z-index: 10;
20
- min-height: 70px !important;
21
- box-sizing: border-box;
22
- }
23
-
24
- .controls.show {
25
- opacity: 1;
26
- transform: translateY(0);
27
- position: absolute !important;
28
- bottom: 0 !important;
29
- z-index: 20 !important;
30
- }
31
-
32
- .play-icon svg,
33
- .pause-icon svg,
34
- .volume-icon svg,
35
- .mute-icon svg,
36
- .playlist-prev-btn .icon svg,
37
- .playlist-next-btn .icon svg,
38
- .subtitles-btn .icon svg,
39
- .fullscreen-icon svg,
40
- .exit-fullscreen-icon svg,
41
- .pip-icon svg,
42
- .pip-exit-icon svg {
43
- width: 16px;
44
- height: 16px;
45
- display: block;
46
- }
47
-
48
- /* MAIN CONTROLS - IMPROVED RESPONSIVE LAYOUT */
49
- .controls-main {
50
- display: flex;
51
- justify-content: space-between;
52
- align-items: center;
53
- width: 100%;
54
- min-height: 44px !important;
55
- flex-shrink: 0;
56
- }
57
-
58
- .controls-left,
59
- .controls-right {
60
- display: flex;
61
- align-items: center;
62
- gap: 10px;
63
- flex-shrink: 1;
64
- min-width: 0;
65
- }
66
-
67
- /* BUTTONS - IMPROVED RESPONSIVE BEHAVIOR */
68
- .control-btn {
69
- background: none;
70
- border: none;
71
- color: var(--player-button-color);
72
- cursor: pointer;
73
- padding: var(--player-button-padding);
74
- border-radius: 6px;
75
- display: flex;
76
- align-items: center;
77
- gap: 5px;
78
- transition: all var(--player-transition-fast);
79
- font-size: 14px;
80
- font-weight: 500;
81
- position: relative;
82
- flex-shrink: 1;
83
- min-width: 0;
84
- white-space: nowrap;
85
- }
86
-
87
- .control-btn:hover {
88
- background: var(--player-button-hover);
89
- transform: scale(1.05);
90
- }
91
-
92
- .control-btn:active {
93
- transform: scale(0.95);
94
- background: var(--player-button-active);
95
- }
96
-
97
- /* SPECIFIC SUBTITLES BUTTON */
98
- .subtitles-btn {
99
- position: relative;
100
- }
101
-
102
- /* QUALITY BUTTON WITH DUAL DISPLAY */
103
- .quality-btn {
104
- min-height: 36px;
105
- padding: 6px 8px;
106
- }
107
-
108
- .quality-btn-text {
109
- display: flex;
110
- flex-direction: column;
111
- align-items: center;
112
- line-height: 1;
113
- }
114
-
115
- .selected-quality {
116
- font-size: 14px;
117
- font-weight: 500;
118
- color: var(--player-button-color);
119
- }
120
-
121
- .current-quality {
122
- font-size: 10px;
123
- font-weight: 400;
124
- color: var(--player-text-secondary);
125
- opacity: 0.8;
126
- margin-top: 2px;
127
- line-height: 1;
128
- }
129
-
130
- /* TIME DISPLAY - RESPONSIVE */
131
- .time-display {
132
- color: var(--player-text-color);
133
- font-size: 14px;
134
- font-weight: 500;
135
- display: flex;
136
- align-items: center;
137
- gap: 5px;
138
- font-variant-numeric: tabular-nums;
139
- flex-shrink: 2;
140
- min-width: 0;
141
- }
142
-
143
- /* ICONS */
144
- .icon {
145
- width: var(--player-icon-size);
146
- height: var(--player-icon-size);
147
- display: flex;
148
- align-items: center;
149
- justify-content: center;
150
- font-size: 16px;
151
- }
152
-
153
- .hidden {
154
- display: none !important;
155
- }
156
-
157
- /* BRAND LOGO RESPONSIVE */
158
- .controls-right .brand-logo {
159
- height: 44px;
160
- max-width: 120px;
161
- object-fit: contain;
162
- margin-right: 10px;
163
- pointer-events: auto;
164
- opacity: 0.8;
165
- transition: opacity var(--player-transition-fast);
166
- order: -1;
167
- flex-shrink: 1;
168
- }
169
-
170
- .controls-right .brand-logo:hover {
171
- opacity: 1;
172
- }
173
-
174
- .controls-right .brand-logo-link {
175
- order: -1;
176
- margin-right: 10px;
177
- display: inline-block;
178
- text-decoration: none;
179
- }
180
-
181
- .controls-right .brand-logo-link .brand-logo {
182
- margin-right: 0;
183
- }
184
-
185
- /* Hide cursor when controlbar is hidden */
186
- .video-wrapper.hide-cursor {
187
- cursor: none !important;
188
- }
189
-
190
- /* Ensure cursor is visible on controls even when hide-cursor is active */
191
- .video-wrapper.hide-cursor .controls {
192
- cursor: default !important;
193
- }
194
-
195
- /* Ensure cursor is visible on buttons */
196
- .video-wrapper.hide-cursor .control-btn {
197
- cursor: pointer !important;
198
- }
199
-
200
- /* do not hide mouse on iframes */
201
- .video-wrapper.hide-cursor iframe {
202
- cursor: auto !important;
203
- pointer-events: auto !important;
204
- }
@@ -1,111 +0,0 @@
1
- // ===================================
2
- // LOADING & OVERLAYS
3
- // ===================================
4
-
5
- @use 'mixins' as *;
6
- @use 'variables' as *;
7
-
8
- /* INITIAL LOADING */
9
- .initial-loading {
10
- position: absolute;
11
- top: 0;
12
- left: 0;
13
- width: 100%;
14
- height: 100%;
15
- background: var(--player-bg-primary);
16
- display: flex;
17
- align-items: center;
18
- justify-content: center;
19
- z-index: 20;
20
- }
21
-
22
- .video-wrapper.player-initialized .initial-loading {
23
- opacity: 0;
24
- visibility: hidden;
25
- transition: opacity 0.3s ease, visibility 0.3s ease;
26
- transition-delay: 0.2s;
27
- }
28
-
29
- .video-wrapper.player-initialized .initial-loading {
30
- display: none;
31
- transition-delay: 0.5s;
32
- }
33
-
34
- .loading-overlay {
35
- position: absolute;
36
- top: 0;
37
- left: 0;
38
- width: 100%;
39
- height: 100%;
40
- background: var(--player-bg-loading);
41
- display: flex;
42
- align-items: center;
43
- justify-content: center;
44
- opacity: 0;
45
- visibility: hidden;
46
- transition: opacity var(--player-transition-normal);
47
- z-index: 15;
48
- }
49
-
50
- .loading-overlay.active {
51
- opacity: 1;
52
- visibility: visible;
53
- }
54
-
55
- .loading-spinner {
56
- width: 50px;
57
- height: 50px;
58
- border: 3px solid rgba(255, 255, 255, 0.3);
59
- border-top: 3px solid var(--player-primary-color);
60
- border-radius: 50%;
61
- animation: spin 1s linear infinite;
62
- }
63
-
64
- @keyframes spin {
65
- 0% {
66
- transform: rotate(0deg);
67
- }
68
-
69
- 100% {
70
- transform: rotate(360deg);
71
- }
72
- }
73
-
74
- /* TITLE OVERLAY - WITH AUTO-HIDE */
75
- .title-overlay {
76
- position: absolute;
77
- top: 0;
78
- left: 0;
79
- right: 0;
80
- background: var(--player-bg-title-overlay);
81
- padding: var(--player-title-overlay-padding);
82
- opacity: 0;
83
- transform: translateY(-100%);
84
- transition: all var(--player-transition-normal);
85
- z-index: 15;
86
- pointer-events: none;
87
- }
88
-
89
- .title-overlay.show {
90
- opacity: 1;
91
- transform: translateY(0);
92
- }
93
-
94
- .title-overlay.show.persistent {
95
- opacity: 1;
96
- transform: translateY(0);
97
- }
98
-
99
- .title-text {
100
- color: var(--player-text-color);
101
- font-size: 18px;
102
- font-weight: 600;
103
- line-height: 1.3;
104
- margin: 0;
105
- white-space: nowrap;
106
- overflow: hidden;
107
- text-overflow: ellipsis;
108
- text-shadow: 0 2px 8px rgba(0, 0, 0, 0.7);
109
- -webkit-font-smoothing: antialiased;
110
- -moz-osx-font-smoothing: grayscale;
111
- }