1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.useMediaHasMetadata = void 0;
|
4 | const react_1 = require("react");
|
5 | const useMediaHasMetadata = (mediaRef) => {
|
6 | const [hasMetadata, setHasMetadata] = (0, react_1.useState)(false);
|
7 | (0, react_1.useEffect)(() => {
|
8 | const { current } = mediaRef;
|
9 | if (!current) {
|
10 | return;
|
11 | }
|
12 | const hasSourceChild = Array.from(current.childNodes).some((child) => child.nodeName === 'SOURCE');
|
13 | if (!current.src && !hasSourceChild) {
|
14 | const tagName = current.nodeName === 'AUDIO' ? '<Audio>' : '<Video>';
|
15 | throw new Error(`No src found. Please provide a src prop or a <source> child to the ${tagName} element.`);
|
16 | }
|
17 | const handler = () => setHasMetadata(true);
|
18 | current.addEventListener('loadedmetadata', handler);
|
19 | return () => current.removeEventListener('loadedmetadata', handler);
|
20 | }, [mediaRef]);
|
21 | return hasMetadata;
|
22 | };
|
23 | exports.useMediaHasMetadata = useMediaHasMetadata;
|
24 |
|
\ | No newline at end of file |