nekostream 2026.2.2 → 2026.2.3
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/package.json +1 -1
- package/player.html +64 -41
package/package.json
CHANGED
package/player.html
CHANGED
|
@@ -28,61 +28,86 @@
|
|
|
28
28
|
top: 0;
|
|
29
29
|
left: 0;
|
|
30
30
|
right: 0;
|
|
31
|
-
height:
|
|
31
|
+
height: 34px;
|
|
32
32
|
z-index: 10000;
|
|
33
|
-
|
|
34
|
-
align-items: center;
|
|
35
|
-
justify-content: space-between;
|
|
36
|
-
background: linear-gradient(to bottom, rgba(5, 8, 13, 0.82), rgba(5, 8, 13, 0.22), rgba(5, 8, 13, 0));
|
|
37
|
-
color: rgba(255, 255, 255, 0.92);
|
|
33
|
+
background: transparent;
|
|
38
34
|
-webkit-app-region: drag;
|
|
39
35
|
user-select: none;
|
|
40
36
|
pointer-events: auto;
|
|
41
37
|
}
|
|
42
|
-
.nav-title {
|
|
43
|
-
min-width: 0;
|
|
44
|
-
padding-left: 16px;
|
|
45
|
-
font-size: 13px;
|
|
46
|
-
font-weight: 600;
|
|
47
|
-
letter-spacing: 0.01em;
|
|
48
|
-
color: rgba(255, 255, 255, 0.88);
|
|
49
|
-
text-shadow: 0 1px 3px rgba(0, 0, 0, 0.55);
|
|
50
|
-
overflow: hidden;
|
|
51
|
-
text-overflow: ellipsis;
|
|
52
|
-
white-space: nowrap;
|
|
53
|
-
}
|
|
54
38
|
.window-controls {
|
|
39
|
+
position: absolute;
|
|
40
|
+
top: 8px;
|
|
41
|
+
right: 10px;
|
|
55
42
|
display: flex;
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
background: rgba(8, 12, 20, 0.38);
|
|
62
|
-
backdrop-filter: blur(10px);
|
|
43
|
+
flex-direction: row-reverse;
|
|
44
|
+
align-items: center;
|
|
45
|
+
gap: 0;
|
|
46
|
+
min-width: 28px;
|
|
47
|
+
height: 28px;
|
|
63
48
|
pointer-events: auto;
|
|
64
49
|
-webkit-app-region: no-drag;
|
|
65
50
|
}
|
|
51
|
+
.window-dot {
|
|
52
|
+
width: 12px;
|
|
53
|
+
height: 12px;
|
|
54
|
+
padding: 0;
|
|
55
|
+
border: 1px solid rgba(255, 255, 255, 0.58);
|
|
56
|
+
border-radius: 999px;
|
|
57
|
+
background: rgba(255, 255, 255, 0.86);
|
|
58
|
+
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.45);
|
|
59
|
+
cursor: pointer;
|
|
60
|
+
transition: transform 0.18s ease, background 0.18s ease, border-color 0.18s ease;
|
|
61
|
+
}
|
|
62
|
+
.window-controls:hover .window-dot,
|
|
63
|
+
.window-controls:focus-within .window-dot {
|
|
64
|
+
transform: scale(0.74);
|
|
65
|
+
background: rgba(255, 255, 255, 0.55);
|
|
66
|
+
border-color: rgba(255, 255, 255, 0.75);
|
|
67
|
+
}
|
|
66
68
|
.window-btn {
|
|
67
|
-
width:
|
|
68
|
-
height:
|
|
69
|
+
width: 0;
|
|
70
|
+
height: 28px;
|
|
71
|
+
margin-right: 0;
|
|
72
|
+
padding: 0;
|
|
69
73
|
display: inline-flex;
|
|
70
74
|
align-items: center;
|
|
71
75
|
justify-content: center;
|
|
72
76
|
border: 0;
|
|
73
|
-
border-
|
|
74
|
-
background:
|
|
77
|
+
border-radius: 999px;
|
|
78
|
+
background: rgba(8, 12, 20, 0.58);
|
|
75
79
|
color: rgba(255, 255, 255, 0.82);
|
|
76
|
-
|
|
80
|
+
backdrop-filter: blur(10px);
|
|
81
|
+
box-shadow: 0 4px 18px rgba(0, 0, 0, 0.38);
|
|
82
|
+
font-size: 14px;
|
|
77
83
|
line-height: 1;
|
|
78
84
|
cursor: pointer;
|
|
79
|
-
|
|
85
|
+
opacity: 0;
|
|
86
|
+
overflow: hidden;
|
|
87
|
+
transform: translateX(12px) scale(0.82);
|
|
88
|
+
transition: width 0.2s ease, margin-right 0.2s ease, opacity 0.16s ease, transform 0.2s ease, background 0.15s ease, color 0.15s ease;
|
|
89
|
+
}
|
|
90
|
+
.window-controls:hover .window-btn,
|
|
91
|
+
.window-controls:focus-within .window-btn {
|
|
92
|
+
width: 28px;
|
|
93
|
+
margin-right: 7px;
|
|
94
|
+
opacity: 1;
|
|
95
|
+
transform: translateX(0) scale(1);
|
|
96
|
+
}
|
|
97
|
+
.window-controls:hover #window-minimize,
|
|
98
|
+
.window-controls:focus-within #window-minimize {
|
|
99
|
+
transition-delay: 0.02s;
|
|
80
100
|
}
|
|
81
|
-
.window-
|
|
82
|
-
|
|
101
|
+
.window-controls:hover #window-maximize,
|
|
102
|
+
.window-controls:focus-within #window-maximize {
|
|
103
|
+
transition-delay: 0.05s;
|
|
104
|
+
}
|
|
105
|
+
.window-controls:hover #window-close,
|
|
106
|
+
.window-controls:focus-within #window-close {
|
|
107
|
+
transition-delay: 0.08s;
|
|
83
108
|
}
|
|
84
109
|
.window-btn:hover {
|
|
85
|
-
background: rgba(255, 255, 255, 0.
|
|
110
|
+
background: rgba(255, 255, 255, 0.18);
|
|
86
111
|
color: #fff;
|
|
87
112
|
}
|
|
88
113
|
.window-btn.close:hover {
|
|
@@ -128,11 +153,11 @@
|
|
|
128
153
|
</head>
|
|
129
154
|
<body>
|
|
130
155
|
<header id="top-nav">
|
|
131
|
-
<div class="nav-title" id="nav-title">NekoStream Player</div>
|
|
132
156
|
<div class="window-controls">
|
|
133
|
-
<button class="window-btn" id="window-minimize" title="Minimize">-</button>
|
|
134
|
-
<button class="window-btn" id="window-maximize" title="Maximize">□</button>
|
|
135
157
|
<button class="window-btn close" id="window-close" title="Close">×</button>
|
|
158
|
+
<button class="window-btn" id="window-maximize" title="Maximize">□</button>
|
|
159
|
+
<button class="window-btn" id="window-minimize" title="Minimize">-</button>
|
|
160
|
+
<button class="window-dot" title="Window controls" aria-label="Window controls"></button>
|
|
136
161
|
</div>
|
|
137
162
|
</header>
|
|
138
163
|
<div id="loading-overlay">
|
|
@@ -165,10 +190,8 @@
|
|
|
165
190
|
|
|
166
191
|
window.initPlayer = function(streamInfo, baseDir, cleanUA) {
|
|
167
192
|
const container = document.getElementById('player-container');
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
if (streamInfo.type === 'iframe') {
|
|
193
|
+
|
|
194
|
+
if (streamInfo.type === 'iframe') {
|
|
172
195
|
const overlay = document.getElementById('loading-overlay');
|
|
173
196
|
overlay.style.display = 'flex';
|
|
174
197
|
|