@scarlett-player/chromecast 0.5.3 → 1.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.
- package/dist/index.cjs +22 -0
- package/dist/index.js +22 -0
- package/package.json +3 -3
package/dist/index.cjs
CHANGED
|
@@ -84,6 +84,7 @@ function chromecastPlugin() {
|
|
|
84
84
|
let remotePlayerController = null;
|
|
85
85
|
let localTimeBeforeCast = 0;
|
|
86
86
|
let localSrcBeforeCast = "";
|
|
87
|
+
let previousIsMediaLoaded = false;
|
|
87
88
|
let castStateHandler = null;
|
|
88
89
|
let sessionStateHandler = null;
|
|
89
90
|
let remotePlayerHandler = null;
|
|
@@ -114,6 +115,10 @@ function chromecastPlugin() {
|
|
|
114
115
|
window.cast.framework.RemotePlayerEventType.ANY_CHANGE,
|
|
115
116
|
remotePlayerHandler
|
|
116
117
|
);
|
|
118
|
+
remotePlayerController.addEventListener(
|
|
119
|
+
window.cast.framework.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED,
|
|
120
|
+
remotePlayerHandler
|
|
121
|
+
);
|
|
117
122
|
const initialState = castContext.getCastState();
|
|
118
123
|
const available = initialState !== window.cast.framework.CastState.NO_DEVICES_AVAILABLE;
|
|
119
124
|
api.setState("chromecastAvailable", available);
|
|
@@ -214,6 +219,12 @@ function chromecastPlugin() {
|
|
|
214
219
|
const handleRemotePlayerChange = () => {
|
|
215
220
|
if (!remotePlayer) return;
|
|
216
221
|
if (!api.getState("chromecastActive")) return;
|
|
222
|
+
const isMediaLoaded = remotePlayer.isMediaLoaded;
|
|
223
|
+
if (previousIsMediaLoaded && !isMediaLoaded) {
|
|
224
|
+
api.logger.debug("Cast media ended (isMediaLoaded transition)");
|
|
225
|
+
api.emit("playback:ended", void 0);
|
|
226
|
+
}
|
|
227
|
+
previousIsMediaLoaded = isMediaLoaded;
|
|
217
228
|
api.setState("currentTime", remotePlayer.currentTime);
|
|
218
229
|
api.setState("duration", remotePlayer.duration);
|
|
219
230
|
api.setState("playing", !remotePlayer.isPaused);
|
|
@@ -230,6 +241,13 @@ function chromecastPlugin() {
|
|
|
230
241
|
api = pluginApi;
|
|
231
242
|
api.setState("chromecastAvailable", false);
|
|
232
243
|
api.setState("chromecastActive", false);
|
|
244
|
+
const unsubLoadRequest = api.on("media:load-request", async ({ src }) => {
|
|
245
|
+
if (!api.getState("chromecastActive")) return;
|
|
246
|
+
await loadMediaOnCast(src, 0);
|
|
247
|
+
});
|
|
248
|
+
api.onDestroy(() => {
|
|
249
|
+
unsubLoadRequest();
|
|
250
|
+
});
|
|
233
251
|
if (!isCastSupported()) {
|
|
234
252
|
api.logger.debug("Chromecast not supported in this browser");
|
|
235
253
|
return;
|
|
@@ -267,6 +285,10 @@ function chromecastPlugin() {
|
|
|
267
285
|
window.cast.framework.RemotePlayerEventType.ANY_CHANGE,
|
|
268
286
|
remotePlayerHandler
|
|
269
287
|
);
|
|
288
|
+
remotePlayerController.removeEventListener(
|
|
289
|
+
window.cast.framework.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED,
|
|
290
|
+
remotePlayerHandler
|
|
291
|
+
);
|
|
270
292
|
}
|
|
271
293
|
castContext = null;
|
|
272
294
|
currentSession = null;
|
package/dist/index.js
CHANGED
|
@@ -54,6 +54,7 @@ function chromecastPlugin() {
|
|
|
54
54
|
let remotePlayerController = null;
|
|
55
55
|
let localTimeBeforeCast = 0;
|
|
56
56
|
let localSrcBeforeCast = "";
|
|
57
|
+
let previousIsMediaLoaded = false;
|
|
57
58
|
let castStateHandler = null;
|
|
58
59
|
let sessionStateHandler = null;
|
|
59
60
|
let remotePlayerHandler = null;
|
|
@@ -84,6 +85,10 @@ function chromecastPlugin() {
|
|
|
84
85
|
window.cast.framework.RemotePlayerEventType.ANY_CHANGE,
|
|
85
86
|
remotePlayerHandler
|
|
86
87
|
);
|
|
88
|
+
remotePlayerController.addEventListener(
|
|
89
|
+
window.cast.framework.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED,
|
|
90
|
+
remotePlayerHandler
|
|
91
|
+
);
|
|
87
92
|
const initialState = castContext.getCastState();
|
|
88
93
|
const available = initialState !== window.cast.framework.CastState.NO_DEVICES_AVAILABLE;
|
|
89
94
|
api.setState("chromecastAvailable", available);
|
|
@@ -184,6 +189,12 @@ function chromecastPlugin() {
|
|
|
184
189
|
const handleRemotePlayerChange = () => {
|
|
185
190
|
if (!remotePlayer) return;
|
|
186
191
|
if (!api.getState("chromecastActive")) return;
|
|
192
|
+
const isMediaLoaded = remotePlayer.isMediaLoaded;
|
|
193
|
+
if (previousIsMediaLoaded && !isMediaLoaded) {
|
|
194
|
+
api.logger.debug("Cast media ended (isMediaLoaded transition)");
|
|
195
|
+
api.emit("playback:ended", void 0);
|
|
196
|
+
}
|
|
197
|
+
previousIsMediaLoaded = isMediaLoaded;
|
|
187
198
|
api.setState("currentTime", remotePlayer.currentTime);
|
|
188
199
|
api.setState("duration", remotePlayer.duration);
|
|
189
200
|
api.setState("playing", !remotePlayer.isPaused);
|
|
@@ -200,6 +211,13 @@ function chromecastPlugin() {
|
|
|
200
211
|
api = pluginApi;
|
|
201
212
|
api.setState("chromecastAvailable", false);
|
|
202
213
|
api.setState("chromecastActive", false);
|
|
214
|
+
const unsubLoadRequest = api.on("media:load-request", async ({ src }) => {
|
|
215
|
+
if (!api.getState("chromecastActive")) return;
|
|
216
|
+
await loadMediaOnCast(src, 0);
|
|
217
|
+
});
|
|
218
|
+
api.onDestroy(() => {
|
|
219
|
+
unsubLoadRequest();
|
|
220
|
+
});
|
|
203
221
|
if (!isCastSupported()) {
|
|
204
222
|
api.logger.debug("Chromecast not supported in this browser");
|
|
205
223
|
return;
|
|
@@ -237,6 +255,10 @@ function chromecastPlugin() {
|
|
|
237
255
|
window.cast.framework.RemotePlayerEventType.ANY_CHANGE,
|
|
238
256
|
remotePlayerHandler
|
|
239
257
|
);
|
|
258
|
+
remotePlayerController.removeEventListener(
|
|
259
|
+
window.cast.framework.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED,
|
|
260
|
+
remotePlayerHandler
|
|
261
|
+
);
|
|
240
262
|
}
|
|
241
263
|
castContext = null;
|
|
242
264
|
currentSession = null;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@scarlett-player/chromecast",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "Chromecast Plugin for Scarlett Player",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"dist"
|
|
18
18
|
],
|
|
19
19
|
"peerDependencies": {
|
|
20
|
-
"@scarlett-player/core": "^0.
|
|
20
|
+
"@scarlett-player/core": "^1.0.0"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
23
|
"typescript": "^5.3.0",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"vitest": "^1.6.0",
|
|
26
26
|
"@vitest/coverage-v8": "^1.6.0",
|
|
27
27
|
"jsdom": "^24.0.0",
|
|
28
|
-
"@scarlett-player/core": "0.
|
|
28
|
+
"@scarlett-player/core": "1.0.0"
|
|
29
29
|
},
|
|
30
30
|
"keywords": [
|
|
31
31
|
"video",
|