react-chromecast-caf 0.0.2 → 0.0.4
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/README.md +64 -12
- package/dist/index.d.ts +1 -0
- package/dist/index.js +76 -2
- package/dist/index.js.map +1 -1
- package/dist/types/cast-shim.d.ts +10 -0
- package/dist/useChromecastCafReceiver.d.ts +1 -1
- package/dist/useChromecastCafSender.d.ts +1 -1
- package/package.json +5 -4
- package/dist/useChromecastCafReceiver.js +0 -42
- package/dist/useChromecastCafReceiver.js.map +0 -1
- package/dist/useChromecastCafSender.js +0 -39
- package/dist/useChromecastCafSender.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,36 +1,88 @@
|
|
|
1
|
-
#
|
|
1
|
+
# react-chromecast-caf ⚛️📺
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://www.npmjs.com/package/react-chromecast-caf)
|
|
4
|
+

|
|
5
|
+
[](https://opensource.org/licenses/ISC)
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
A collection of React hooks designed to simplify integration with the Google Chromecast CAF (Cast Application Framework) Sender and Receiver SDKs. Build Chromecast-enabled web applications with ease, leveraging React's declarative power.
|
|
8
|
+
|
|
9
|
+
## ✨ Features
|
|
10
|
+
|
|
11
|
+
- **`useChromecastCafSender`**: Seamlessly integrate the Chromecast Web Sender SDK into your React components.
|
|
12
|
+
- **`useChromecastCafReceiver`**: Easily develop custom Chromecast Receiver applications using the Web Receiver SDK.
|
|
13
|
+
- **TypeScript Support**: Fully typed for a robust development experience.
|
|
14
|
+
|
|
15
|
+
## 🚀 Installation
|
|
16
|
+
|
|
17
|
+
Install the package using npm:
|
|
6
18
|
|
|
7
19
|
```bash
|
|
8
20
|
npm install react-chromecast-caf
|
|
9
21
|
```
|
|
10
22
|
|
|
11
|
-
## How to
|
|
23
|
+
## 📖 How to Use
|
|
24
|
+
|
|
25
|
+
### Chromecast Sender
|
|
26
|
+
|
|
27
|
+
The `useChromecastCafSender` hook loads the Chromecast Web Sender SDK and provides access to the `cast` object once it's ready.
|
|
12
28
|
|
|
13
29
|
```jsx
|
|
30
|
+
import React from 'react'
|
|
14
31
|
import { useChromecastCafSender } from 'react-chromecast-caf'
|
|
15
32
|
|
|
16
|
-
const
|
|
17
|
-
const { cast } = useChromecastCafSender()
|
|
33
|
+
const SenderComponent = () => {
|
|
34
|
+
const { cast, chrome } = useChromecastCafSender()
|
|
18
35
|
|
|
19
|
-
|
|
36
|
+
if (!cast) {
|
|
37
|
+
return <div>Loading Chromecast Sender SDK...</div>
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return (
|
|
41
|
+
<div>
|
|
42
|
+
<h1>Chromecast Sender Example</h1>
|
|
43
|
+
<p>Chromecast Sender SDK is loaded.</p>
|
|
44
|
+
{/* You can now use the 'cast' object */}
|
|
45
|
+
</div>
|
|
46
|
+
)
|
|
20
47
|
}
|
|
21
48
|
```
|
|
22
49
|
|
|
50
|
+
### Chromecast Receiver
|
|
51
|
+
|
|
52
|
+
The `useChromecastCafReceiver` hook initializes the Chromecast Web Receiver SDK.
|
|
53
|
+
|
|
23
54
|
```jsx
|
|
55
|
+
import React from 'react'
|
|
24
56
|
import { useChromecastCafReceiver } from 'react-chromecast-caf'
|
|
25
57
|
|
|
26
|
-
const
|
|
58
|
+
const ReceiverComponent = () => {
|
|
27
59
|
const { cast } = useChromecastCafReceiver()
|
|
28
60
|
|
|
29
|
-
|
|
61
|
+
if (!cast) {
|
|
62
|
+
return <div>Loading Chromecast Receiver SDK...</div>
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
return (
|
|
66
|
+
<div>
|
|
67
|
+
<h1>Chromecast Receiver Example</h1>
|
|
68
|
+
<p>Chromecast Receiver SDK is loaded.</p>
|
|
69
|
+
{/* You can now use the 'cast' object to handle receiver events */}
|
|
70
|
+
</div>
|
|
71
|
+
)
|
|
30
72
|
}
|
|
31
73
|
```
|
|
32
74
|
|
|
33
|
-
##
|
|
75
|
+
## ⚙️ API
|
|
76
|
+
|
|
77
|
+
### `useChromecastCafSender(): { chrome: Chrome | null, cast: Cast | null }`
|
|
78
|
+
|
|
79
|
+
A React hook that loads the Chromecast Web Sender SDK.
|
|
80
|
+
|
|
81
|
+
- **`chrome`**: The `chrome` object from the SDK, or `null` otherwise.
|
|
82
|
+
- **`cast`**: The `cast` object from the SDK, or `null` otherwise.
|
|
83
|
+
|
|
84
|
+
### `useChromecastCafReceiver(): { cast: Cast | null }`
|
|
85
|
+
|
|
86
|
+
A React hook that initializes the Chromecast Web Receiver SDK.
|
|
34
87
|
|
|
35
|
-
-
|
|
36
|
-
- Build the package: `npm run dev`
|
|
88
|
+
- **`cast`**: The `cast` object from the SDK, or `null` otherwise.
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,3 +1,77 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { useState, useEffect } from 'react';
|
|
2
|
+
|
|
3
|
+
const load$1 = (() => {
|
|
4
|
+
let promise = null;
|
|
5
|
+
return () => {
|
|
6
|
+
if (promise === null) {
|
|
7
|
+
promise = new Promise((resolve) => {
|
|
8
|
+
const script = document.createElement('script');
|
|
9
|
+
script.src =
|
|
10
|
+
'https://www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js';
|
|
11
|
+
document.body.appendChild(script);
|
|
12
|
+
const loop = () => {
|
|
13
|
+
if ('cast' in window && 'framework' in cast) {
|
|
14
|
+
resolve({
|
|
15
|
+
cast,
|
|
16
|
+
});
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
setTimeout(() => {
|
|
20
|
+
loop();
|
|
21
|
+
}, 100);
|
|
22
|
+
};
|
|
23
|
+
loop();
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
return promise;
|
|
27
|
+
};
|
|
28
|
+
})();
|
|
29
|
+
const useChromecastCafReceiver = () => {
|
|
30
|
+
const [receiver, setReceiver] = useState({
|
|
31
|
+
cast: null,
|
|
32
|
+
});
|
|
33
|
+
useEffect(() => {
|
|
34
|
+
load$1().then((sender) => {
|
|
35
|
+
setReceiver(sender);
|
|
36
|
+
});
|
|
37
|
+
}, []);
|
|
38
|
+
return receiver;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
const load = (() => {
|
|
42
|
+
let promise = null;
|
|
43
|
+
return () => {
|
|
44
|
+
if (promise === null) {
|
|
45
|
+
promise = new Promise((resolve) => {
|
|
46
|
+
const script = document.createElement('script');
|
|
47
|
+
script.src =
|
|
48
|
+
'https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1';
|
|
49
|
+
window.__onGCastApiAvailable = (isAvailable) => {
|
|
50
|
+
if (isAvailable) {
|
|
51
|
+
resolve({
|
|
52
|
+
chrome,
|
|
53
|
+
cast,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
document.body.appendChild(script);
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
return promise;
|
|
61
|
+
};
|
|
62
|
+
})();
|
|
63
|
+
const useChromecastCafSender = () => {
|
|
64
|
+
const [sender, setSender] = useState({
|
|
65
|
+
chrome: null,
|
|
66
|
+
cast: null,
|
|
67
|
+
});
|
|
68
|
+
useEffect(() => {
|
|
69
|
+
load().then((sender) => {
|
|
70
|
+
setSender(sender);
|
|
71
|
+
});
|
|
72
|
+
}, []);
|
|
73
|
+
return sender;
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
export { useChromecastCafReceiver, useChromecastCafSender };
|
|
3
77
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/useChromecastCafReceiver.ts","../src/useChromecastCafSender.ts"],"sourcesContent":["import { type Cast } from 'chromecast-caf-receiver-module'\nimport { useEffect, useState } from 'react'\n\ntype Receiver = {\n\tcast: Cast\n}\n\nconst load = (() => {\n\tlet promise: Promise<Receiver> | null = null\n\n\treturn () => {\n\t\tif (promise === null) {\n\t\t\tpromise = new Promise((resolve) => {\n\t\t\t\tconst script = document.createElement('script')\n\t\t\t\tscript.src =\n\t\t\t\t\t'https://www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js'\n\t\t\t\tdocument.body.appendChild(script)\n\n\t\t\t\tconst loop = () => {\n\t\t\t\t\tif ('cast' in window && 'framework' in cast) {\n\t\t\t\t\t\tresolve({\n\t\t\t\t\t\t\tcast,\n\t\t\t\t\t\t})\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tloop()\n\t\t\t\t\t}, 100)\n\t\t\t\t}\n\t\t\t\tloop()\n\t\t\t})\n\t\t}\n\t\treturn promise\n\t}\n})()\n\nexport const useChromecastCafReceiver = () => {\n\tconst [receiver, setReceiver] = useState<Receiver | { cast: null }>({\n\t\tcast: null,\n\t})\n\n\tuseEffect(() => {\n\t\tload().then((sender) => {\n\t\t\tsetReceiver(sender)\n\t\t})\n\t}, [])\n\n\treturn receiver\n}\n","import type { Cast, Chrome } from 'chromecast-caf-sender-module'\nimport { useEffect, useState } from 'react'\n\ntype Sender = {\n\tchrome: Chrome\n\tcast: Cast\n}\n\nconst load = (() => {\n\tlet promise: Promise<Sender> | null = null\n\n\treturn () => {\n\t\tif (promise === null) {\n\t\t\tpromise = new Promise((resolve) => {\n\t\t\t\tconst script = document.createElement('script')\n\t\t\t\tscript.src =\n\t\t\t\t\t'https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1'\n\t\t\t\twindow.__onGCastApiAvailable = (isAvailable) => {\n\t\t\t\t\tif (isAvailable) {\n\t\t\t\t\t\tresolve({\n\t\t\t\t\t\t\tchrome,\n\t\t\t\t\t\t\tcast,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdocument.body.appendChild(script)\n\t\t\t})\n\t\t}\n\t\treturn promise\n\t}\n})()\n\nexport const useChromecastCafSender = () => {\n\tconst [sender, setSender] = useState<\n\t\t| Sender\n\t\t| {\n\t\t\t\tchrome: null\n\t\t\t\tcast: null\n\t\t }\n\t>({\n\t\tchrome: null,\n\t\tcast: null,\n\t})\n\n\tuseEffect(() => {\n\t\tload().then((sender) => {\n\t\t\tsetSender(sender)\n\t\t})\n\t}, [])\n\n\treturn sender\n}\n"],"names":["load"],"mappings":";;AAOA,MAAMA,MAAI,GAAG,CAAC,MAAK;IAClB,IAAI,OAAO,GAA6B,IAAI;AAE5C,IAAA,OAAO,MAAK;AACX,QAAA,IAAI,OAAO,KAAK,IAAI,EAAE;AACrB,YAAA,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;gBACjC,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC/C,gBAAA,MAAM,CAAC,GAAG;AACT,oBAAA,kFAAkF;AACnF,gBAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;gBAEjC,MAAM,IAAI,GAAG,MAAK;oBACjB,IAAI,MAAM,IAAI,MAAM,IAAI,WAAW,IAAI,IAAI,EAAE;AAC5C,wBAAA,OAAO,CAAC;4BACP,IAAI;AACJ,yBAAA,CAAC;wBACF;oBACD;oBACA,UAAU,CAAC,MAAK;AACf,wBAAA,IAAI,EAAE;oBACP,CAAC,EAAE,GAAG,CAAC;AACR,gBAAA,CAAC;AACD,gBAAA,IAAI,EAAE;AACP,YAAA,CAAC,CAAC;QACH;AACA,QAAA,OAAO,OAAO;AACf,IAAA,CAAC;AACF,CAAC,GAAG;AAEG,MAAM,wBAAwB,GAAG,MAAK;AAC5C,IAAA,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAA4B;AACnE,QAAA,IAAI,EAAE,IAAI;AACV,KAAA,CAAC;IAEF,SAAS,CAAC,MAAK;AACd,QAAAA,MAAI,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;YACtB,WAAW,CAAC,MAAM,CAAC;AACpB,QAAA,CAAC,CAAC;IACH,CAAC,EAAE,EAAE,CAAC;AAEN,IAAA,OAAO,QAAQ;AAChB;;ACxCA,MAAM,IAAI,GAAG,CAAC,MAAK;IAClB,IAAI,OAAO,GAA2B,IAAI;AAE1C,IAAA,OAAO,MAAK;AACX,QAAA,IAAI,OAAO,KAAK,IAAI,EAAE;AACrB,YAAA,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;gBACjC,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC/C,gBAAA,MAAM,CAAC,GAAG;AACT,oBAAA,4EAA4E;AAC7E,gBAAA,MAAM,CAAC,qBAAqB,GAAG,CAAC,WAAW,KAAI;oBAC9C,IAAI,WAAW,EAAE;AAChB,wBAAA,OAAO,CAAC;4BACP,MAAM;4BACN,IAAI;AACJ,yBAAA,CAAC;oBACH;AACD,gBAAA,CAAC;AACD,gBAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AAClC,YAAA,CAAC,CAAC;QACH;AACA,QAAA,OAAO,OAAO;AACf,IAAA,CAAC;AACF,CAAC,GAAG;AAEG,MAAM,sBAAsB,GAAG,MAAK;AAC1C,IAAA,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAMlC;AACD,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,IAAI,EAAE,IAAI;AACV,KAAA,CAAC;IAEF,SAAS,CAAC,MAAK;AACd,QAAA,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;YACtB,SAAS,CAAC,MAAM,CAAC;AAClB,QAAA,CAAC,CAAC;IACH,CAAC,EAAE,EAAE,CAAC;AAEN,IAAA,OAAO,MAAM;AACd;;;;"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
declare module 'chromecast-caf-receiver-module' {
|
|
2
|
+
import '@types/chromecast-caf-receiver'
|
|
3
|
+
export type Cast = typeof window.cast
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
declare module 'chromecast-caf-sender-module' {
|
|
7
|
+
import '@types/chromecast-caf-sender'
|
|
8
|
+
export type Cast = typeof window.cast
|
|
9
|
+
export type Chrome = typeof window.chrome
|
|
10
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-chromecast-caf",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.4",
|
|
4
4
|
"description": "React hooks to use the Chromecast sender and receiver SDK in your project.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -46,14 +46,15 @@
|
|
|
46
46
|
"@types/react": "^18.0.26",
|
|
47
47
|
"react": "^18.2.0",
|
|
48
48
|
"rollup": "^4.59.0",
|
|
49
|
+
"rollup-plugin-copy": "^3.5.0",
|
|
49
50
|
"rollup-plugin-delete": "^3.0.2",
|
|
50
51
|
"rollup-plugin-peer-deps-external": "^2.2.4",
|
|
51
52
|
"rollup-plugin-typescript2": "^0.36.0",
|
|
52
|
-
"typescript": "^5.9.3"
|
|
53
|
+
"typescript": "^5.9.3",
|
|
54
|
+
"tslib": "^2.8.1"
|
|
53
55
|
},
|
|
54
56
|
"dependencies": {
|
|
55
57
|
"@types/chromecast-caf-receiver": "^6.0.25",
|
|
56
|
-
"@types/chromecast-caf-sender": "^1.0.11"
|
|
57
|
-
"tslib": "^2.8.1"
|
|
58
|
+
"@types/chromecast-caf-sender": "^1.0.11"
|
|
58
59
|
}
|
|
59
60
|
}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { useState, useEffect } from 'react';
|
|
2
|
-
|
|
3
|
-
const load = (() => {
|
|
4
|
-
let promise = null;
|
|
5
|
-
return () => {
|
|
6
|
-
if (promise === null) {
|
|
7
|
-
promise = new Promise((resolve) => {
|
|
8
|
-
const script = document.createElement('script');
|
|
9
|
-
script.src =
|
|
10
|
-
'https://www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js';
|
|
11
|
-
document.body.appendChild(script);
|
|
12
|
-
const loop = () => {
|
|
13
|
-
if ('cast' in window && 'framework' in cast) {
|
|
14
|
-
resolve({
|
|
15
|
-
cast,
|
|
16
|
-
});
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
setTimeout(() => {
|
|
20
|
-
loop();
|
|
21
|
-
}, 100);
|
|
22
|
-
};
|
|
23
|
-
loop();
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
return promise;
|
|
27
|
-
};
|
|
28
|
-
})();
|
|
29
|
-
const useChromecastCafReceiver = () => {
|
|
30
|
-
const [receiver, setReceiver] = useState({
|
|
31
|
-
cast: null,
|
|
32
|
-
});
|
|
33
|
-
useEffect(() => {
|
|
34
|
-
load().then((sender) => {
|
|
35
|
-
setReceiver(sender);
|
|
36
|
-
});
|
|
37
|
-
}, []);
|
|
38
|
-
return receiver;
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
export { useChromecastCafReceiver };
|
|
42
|
-
//# sourceMappingURL=useChromecastCafReceiver.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useChromecastCafReceiver.js","sources":["../src/useChromecastCafReceiver.ts"],"sourcesContent":["import { type Cast } from 'cast-receiver-module'\nimport { useEffect, useState } from 'react'\n\ntype Receiver = {\n\tcast: Cast\n}\n\nconst load = (() => {\n\tlet promise: Promise<Receiver> | null = null\n\n\treturn () => {\n\t\tif (promise === null) {\n\t\t\tpromise = new Promise((resolve) => {\n\t\t\t\tconst script = document.createElement('script')\n\t\t\t\tscript.src =\n\t\t\t\t\t'https://www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js'\n\t\t\t\tdocument.body.appendChild(script)\n\n\t\t\t\tconst loop = () => {\n\t\t\t\t\tif ('cast' in window && 'framework' in cast) {\n\t\t\t\t\t\tresolve({\n\t\t\t\t\t\t\tcast,\n\t\t\t\t\t\t})\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tloop()\n\t\t\t\t\t}, 100)\n\t\t\t\t}\n\t\t\t\tloop()\n\t\t\t})\n\t\t}\n\t\treturn promise\n\t}\n})()\n\nexport const useChromecastCafReceiver = () => {\n\tconst [receiver, setReceiver] = useState<Receiver | { cast: null }>({\n\t\tcast: null,\n\t})\n\n\tuseEffect(() => {\n\t\tload().then((sender) => {\n\t\t\tsetReceiver(sender)\n\t\t})\n\t}, [])\n\n\treturn receiver\n}\n"],"names":[],"mappings":";;AAOA,MAAM,IAAI,GAAG,CAAC,MAAK;IAClB,IAAI,OAAO,GAA6B,IAAI;AAE5C,IAAA,OAAO,MAAK;AACX,QAAA,IAAI,OAAO,KAAK,IAAI,EAAE;AACrB,YAAA,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;gBACjC,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC/C,gBAAA,MAAM,CAAC,GAAG;AACT,oBAAA,kFAAkF;AACnF,gBAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;gBAEjC,MAAM,IAAI,GAAG,MAAK;oBACjB,IAAI,MAAM,IAAI,MAAM,IAAI,WAAW,IAAI,IAAI,EAAE;AAC5C,wBAAA,OAAO,CAAC;4BACP,IAAI;AACJ,yBAAA,CAAC;wBACF;oBACD;oBACA,UAAU,CAAC,MAAK;AACf,wBAAA,IAAI,EAAE;oBACP,CAAC,EAAE,GAAG,CAAC;AACR,gBAAA,CAAC;AACD,gBAAA,IAAI,EAAE;AACP,YAAA,CAAC,CAAC;QACH;AACA,QAAA,OAAO,OAAO;AACf,IAAA,CAAC;AACF,CAAC,GAAG;AAEG,MAAM,wBAAwB,GAAG,MAAK;AAC5C,IAAA,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAA4B;AACnE,QAAA,IAAI,EAAE,IAAI;AACV,KAAA,CAAC;IAEF,SAAS,CAAC,MAAK;AACd,QAAA,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;YACtB,WAAW,CAAC,MAAM,CAAC;AACpB,QAAA,CAAC,CAAC;IACH,CAAC,EAAE,EAAE,CAAC;AAEN,IAAA,OAAO,QAAQ;AAChB;;;;"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { useState, useEffect } from 'react';
|
|
2
|
-
|
|
3
|
-
const load = (() => {
|
|
4
|
-
let promise = null;
|
|
5
|
-
return () => {
|
|
6
|
-
if (promise === null) {
|
|
7
|
-
promise = new Promise((resolve) => {
|
|
8
|
-
const script = document.createElement('script');
|
|
9
|
-
script.src =
|
|
10
|
-
'https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1';
|
|
11
|
-
window.__onGCastApiAvailable = (isAvailable) => {
|
|
12
|
-
if (isAvailable) {
|
|
13
|
-
resolve({
|
|
14
|
-
chrome,
|
|
15
|
-
cast,
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
};
|
|
19
|
-
document.body.appendChild(script);
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
return promise;
|
|
23
|
-
};
|
|
24
|
-
})();
|
|
25
|
-
const useChromecastCafSender = () => {
|
|
26
|
-
const [sender, setSender] = useState({
|
|
27
|
-
chrome: null,
|
|
28
|
-
cast: null,
|
|
29
|
-
});
|
|
30
|
-
useEffect(() => {
|
|
31
|
-
load().then((sender) => {
|
|
32
|
-
setSender(sender);
|
|
33
|
-
});
|
|
34
|
-
}, []);
|
|
35
|
-
return sender;
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
export { useChromecastCafSender };
|
|
39
|
-
//# sourceMappingURL=useChromecastCafSender.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useChromecastCafSender.js","sources":["../src/useChromecastCafSender.ts"],"sourcesContent":["import type { Cast, Chrome } from 'cast-sender-module'\nimport { useEffect, useState } from 'react'\n\ntype Sender = {\n\tchrome: Chrome\n\tcast: Cast\n}\n\nconst load = (() => {\n\tlet promise: Promise<Sender> | null = null\n\n\treturn () => {\n\t\tif (promise === null) {\n\t\t\tpromise = new Promise((resolve) => {\n\t\t\t\tconst script = document.createElement('script')\n\t\t\t\tscript.src =\n\t\t\t\t\t'https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1'\n\t\t\t\twindow.__onGCastApiAvailable = (isAvailable) => {\n\t\t\t\t\tif (isAvailable) {\n\t\t\t\t\t\tresolve({\n\t\t\t\t\t\t\tchrome,\n\t\t\t\t\t\t\tcast,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdocument.body.appendChild(script)\n\t\t\t})\n\t\t}\n\t\treturn promise\n\t}\n})()\n\nexport const useChromecastCafSender = () => {\n\tconst [sender, setSender] = useState<\n\t\t| Sender\n\t\t| {\n\t\t\t\tchrome: null\n\t\t\t\tcast: null\n\t\t }\n\t>({\n\t\tchrome: null,\n\t\tcast: null,\n\t})\n\n\tuseEffect(() => {\n\t\tload().then((sender) => {\n\t\t\tsetSender(sender)\n\t\t})\n\t}, [])\n\n\treturn sender\n}\n"],"names":[],"mappings":";;AAQA,MAAM,IAAI,GAAG,CAAC,MAAK;IAClB,IAAI,OAAO,GAA2B,IAAI;AAE1C,IAAA,OAAO,MAAK;AACX,QAAA,IAAI,OAAO,KAAK,IAAI,EAAE;AACrB,YAAA,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;gBACjC,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC/C,gBAAA,MAAM,CAAC,GAAG;AACT,oBAAA,4EAA4E;AAC7E,gBAAA,MAAM,CAAC,qBAAqB,GAAG,CAAC,WAAW,KAAI;oBAC9C,IAAI,WAAW,EAAE;AAChB,wBAAA,OAAO,CAAC;4BACP,MAAM;4BACN,IAAI;AACJ,yBAAA,CAAC;oBACH;AACD,gBAAA,CAAC;AACD,gBAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AAClC,YAAA,CAAC,CAAC;QACH;AACA,QAAA,OAAO,OAAO;AACf,IAAA,CAAC;AACF,CAAC,GAAG;AAEG,MAAM,sBAAsB,GAAG,MAAK;AAC1C,IAAA,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAMlC;AACD,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,IAAI,EAAE,IAAI;AACV,KAAA,CAAC;IAEF,SAAS,CAAC,MAAK;AACd,QAAA,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;YACtB,SAAS,CAAC,MAAM,CAAC;AAClB,QAAA,CAAC,CAAC;IACH,CAAC,EAAE,EAAE,CAAC;AAEN,IAAA,OAAO,MAAM;AACd;;;;"}
|