|
import config from "$lib/component_json"; |
|
|
|
const comps = { |
|
accordion: () => import("@gradio/accordion"), |
|
annotatedimage: () => import("@gradio/annotatedimage"), |
|
audio: () => import("@gradio/audio"), |
|
button: () => import("@gradio/button"), |
|
chatbot: () => import("@gradio/chatbot"), |
|
checkbox: () => import("@gradio/checkbox"), |
|
checkboxgroup: () => import("@gradio/checkboxgroup"), |
|
code: () => import("@gradio/code"), |
|
colorpicker: () => import("@gradio/colorpicker"), |
|
dataframe: () => import("@gradio/dataframe"), |
|
dataset: () => import("@gradio/dataset"), |
|
datetime: () => import("@gradio/datetime"), |
|
downloadbutton: () => import("@gradio/downloadbutton"), |
|
dropdown: () => import("@gradio/dropdown"), |
|
file: () => import("@gradio/file"), |
|
form: () => import("@gradio/form"), |
|
gallery: () => import("@gradio/gallery"), |
|
highlightedtext: () => import("@gradio/highlightedtext"), |
|
html: () => import("@gradio/html"), |
|
image: () => import("@gradio/image"), |
|
imageeditor: () => import("@gradio/imageeditor"), |
|
json: () => import("@gradio/json"), |
|
label: () => import("@gradio/label"), |
|
markdown: () => import("@gradio/markdown"), |
|
model3d: () => import("@gradio/model3d"), |
|
multimodaltextbox: () => import("@gradio/multimodaltextbox"), |
|
nativeplot: () => import("@gradio/nativeplot"), |
|
number: () => import("@gradio/number"), |
|
paramviewer: () => import("@gradio/paramviewer"), |
|
plot: () => import("@gradio/plot"), |
|
radio: () => import("@gradio/radio"), |
|
simpleimage: () => import("@gradio/simpleimage"), |
|
slider: () => import("@gradio/slider"), |
|
state: () => import("@gradio/state"), |
|
textbox: () => import("@gradio/textbox"), |
|
timer: () => import("@gradio/timer"), |
|
uploadbutton: () => import("@gradio/uploadbutton"), |
|
video: () => import("@gradio/video") |
|
}; |
|
|
|
import type { PageLoad } from "./$types"; |
|
|
|
export const load: PageLoad = async ({ url }) => { |
|
const route_name = url.pathname.split("/").slice(-1)[0]; |
|
const interactive_component = config.find( |
|
(c) => c.name === route_name && c.props.interactive |
|
); |
|
const non_interactive_component = config.find( |
|
(c) => c.name === route_name && !c.props.interactive |
|
); |
|
|
|
const comp = |
|
route_name in comps |
|
? await comps[route_name as keyof typeof comps]() |
|
: await import("@gradio/label"); |
|
|
|
return { |
|
component: comp, |
|
interactive_component: interactive_component, |
|
non_interactive_component: non_interactive_component, |
|
name: route_name |
|
}; |
|
}; |
|
|