// @ts-nocheck | |
export async function load_component({ api_url, name, id, variant }) { | |
const comps = window.__GRADIO__CC__; | |
const _component_map = { | |
// eslint-disable-next-line no-undef | |
...component_map, | |
...(!comps ? {} : comps) | |
}; | |
try { | |
const c = await ( | |
_component_map?.[id]?.[variant] || // for dev mode custom components | |
_component_map?.[name]?.[variant] | |
)(); | |
return { | |
name, | |
component: c | |
}; | |
} catch (e) { | |
console.error(e); | |
try { | |
await load_css(`${api_url}/custom_component/${id}/${variant}/style.css`); | |
const c = await import( | |
/* @vite-ignore */ `${api_url}/custom_component/${id}/${variant}/index.js` | |
); | |
return { | |
name, | |
component: c | |
}; | |
} catch (e) { | |
if (variant === "example") { | |
return { | |
name, | |
component: await import("@gradio/fallback/example") | |
}; | |
} | |
console.error(`failed to load: ${name}`); | |
console.error(e); | |
throw e; | |
} | |
} | |
} | |
function load_css(url) { | |
return new Promise((resolve, reject) => { | |
const link = document.createElement("link"); | |
link.rel = "stylesheet"; | |
link.href = url; | |
document.head.appendChild(link); | |
link.onload = () => resolve(); | |
link.onerror = () => reject(); | |
}); | |
} | |