one
Version:
One is a React framework for web, iOS, and Android apps.
1 lines • 3.24 kB
Source Map (JSON)
{"version":3,"file":"hooks.js","names":[],"sources":["esm/platform/audio/hooks.js"],"sourcesContent":["import { useEffect, useId, useRef, useState } from \"react\";\nimport { createPlayer } from \"./player\";\nconst unclaimedPlayers = /* @__PURE__ */ new Map();\nfunction trackPlayer(instanceId, player) {\n const pending = unclaimedPlayers.get(instanceId);\n if (pending) {\n pending.push(player);\n } else {\n unclaimedPlayers.set(instanceId, [player]);\n }\n}\nfunction releaseDiscardedPlayers(instanceId, retained) {\n const pending = unclaimedPlayers.get(instanceId);\n unclaimedPlayers.delete(instanceId);\n if (!pending) return;\n for (const player of pending) {\n if (player !== retained) player.remove();\n }\n}\nfunction useAudioPlayer(source = null, options = {}) {\n const instanceId = useId();\n const [player, setPlayer] = useState(() => {\n const created = createPlayer(source, options);\n trackPlayer(instanceId, created);\n return created;\n });\n const key = JSON.stringify(source ?? null);\n const first = useRef(true);\n useEffect(() => {\n if (first.current) {\n first.current = false;\n return;\n }\n try {\n player.replace(source);\n } catch (error) {\n if (error instanceof Error && error.message.includes(\"was removed\")) {\n setPlayer(createPlayer(source, options));\n } else {\n throw error;\n }\n }\n }, [key]);\n useEffect(() => {\n releaseDiscardedPlayers(instanceId, player);\n return () => player.remove();\n }, [player]);\n return player;\n}\nfunction useAudioPlayerStatus(player) {\n const [status, setStatus] = useState(() => player.getStatus());\n useEffect(() => {\n let subscription;\n try {\n setStatus(player.getStatus());\n subscription = player.addListener(\"playbackStatusUpdate\", setStatus);\n } catch {\n return;\n }\n return () => subscription.remove();\n }, [player]);\n return status;\n}\nexport {\n useAudioPlayer,\n useAudioPlayerStatus\n};\n//# sourceMappingURL=hooks.js.map\n"],"mappings":";;;;AAEA,MAAM,mCAAmC,IAAI,IAAI;AACjD,SAAS,YAAY,YAAY,QAAQ;CACvC,MAAM,UAAU,iBAAiB,IAAI,UAAU;CAC/C,IAAI,SAAS;EACX,QAAQ,KAAK,MAAM;CACrB,OAAO;EACL,iBAAiB,IAAI,YAAY,CAAC,MAAM,CAAC;CAC3C;AACF;AACA,SAAS,wBAAwB,YAAY,UAAU;CACrD,MAAM,UAAU,iBAAiB,IAAI,UAAU;CAC/C,iBAAiB,OAAO,UAAU;CAClC,IAAI,CAAC,SAAS;CACd,KAAK,MAAM,UAAU,SAAS;EAC5B,IAAI,WAAW,UAAU,OAAO,OAAO;CACzC;AACF;AACA,SAAS,eAAe,SAAS,MAAM,UAAU,CAAC,GAAG;CACnD,MAAM,aAAa,MAAM;CACzB,MAAM,CAAC,QAAQ,aAAa,eAAe;EACzC,MAAM,UAAU,aAAa,QAAQ,OAAO;EAC5C,YAAY,YAAY,OAAO;EAC/B,OAAO;CACT,CAAC;CACD,MAAM,MAAM,KAAK,UAAU,UAAU,IAAI;CACzC,MAAM,QAAQ,OAAO,IAAI;CACzB,gBAAgB;EACd,IAAI,MAAM,SAAS;GACjB,MAAM,UAAU;GAChB;EACF;EACA,IAAI;GACF,OAAO,QAAQ,MAAM;EACvB,SAAS,OAAO;GACd,IAAI,iBAAiB,SAAS,MAAM,QAAQ,SAAS,aAAa,GAAG;IACnE,UAAU,aAAa,QAAQ,OAAO,CAAC;GACzC,OAAO;IACL,MAAM;GACR;EACF;CACF,GAAG,CAAC,GAAG,CAAC;CACR,gBAAgB;EACd,wBAAwB,YAAY,MAAM;EAC1C,aAAa,OAAO,OAAO;CAC7B,GAAG,CAAC,MAAM,CAAC;CACX,OAAO;AACT;AACA,SAAS,qBAAqB,QAAQ;CACpC,MAAM,CAAC,QAAQ,aAAa,eAAe,OAAO,UAAU,CAAC;CAC7D,gBAAgB;EACd,IAAI;EACJ,IAAI;GACF,UAAU,OAAO,UAAU,CAAC;GAC5B,eAAe,OAAO,YAAY,wBAAwB,SAAS;EACrE,QAAQ;GACN;EACF;EACA,aAAa,aAAa,OAAO;CACnC,GAAG,CAAC,MAAM,CAAC;CACX,OAAO;AACT"}