import { Loader, ILoaderOptions } from "pixi.js"; import { useEffect, useState } from "react"; export type ResourceList = Record< string, string | { name: string; options: ILoaderOptions } >; export default function useLoader(resources: ResourceList) { const loader = new Loader(); const [state, setState] = useState({ loaded: false, resources: null }); useEffect(() => { for (const res in resources) { const param = resources[res]; if (typeof param === "string") { loader.add(res, param); } else { loader.add(res, param.name, param.options); } } loader.load((loader, resources) => { setState({ loaded: true, resources }); }); }, []); return state; }