{"version":3,"mappings":"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","names":["fn","semiver","a","b","bool","resolve_root","base_url","root_path","prioritize_base","determine_protocol","endpoint","protocol","host","RE_SPACE_NAME","RE_SPACE_DOMAIN","process_endpoint","app_reference","token","headers","_app_reference","res","_host","e","ws_protocol","http_protocol","map_names_to_ids","fns","apis","api_name","i","RE_DISABLED_DISCUSSION","discussions_enabled","space_id","error","QUEUE_FULL_MSG","BROKEN_CONNECTION_MSG","NodeBlob","api_factory","fetch_implementation","WebSocket_factory","post_data2","upload_files2","client2","handle_blob2","url","body","response","root","files","chunkSize","uploadResponses","chunk","formData","file","output","options","status_callback","hf_token","normalise_files","return_obj","predict","submit","view_api","component_server","transform_files","ws","__vitePreload","session_hash","last_status","config","api_map","jwt","get_jwt","config_success","_config","api","handle_space_sucess","status","resolve_config","check_space_status","data","event_data","data_returned","status_complete","dependency","trimmed_endpoint","res2","rej","app","result","d","fn_index","api_info","websocket","_endpoint","payload","complete","listener_map","url_params","_payload","skip_queue","fire_event","status_code","data2","transform_output","evt","event","_data","type","handle_message","listeners","l","on","eventType","listener","narrowed_listener_map","off","cancel","destroy","_status","event_type","fn2","component_id","fn_name","_a","root_url","component","comp","config2","transform_api_info","blob_refs","walk_and_store_blobs","path","blob","file_url","r","base64","update_object","o","post_data","upload_files","client","handle_blob","args","remote_url","_b","_c","_d","normalise_file","img","normalized_file","x","get_type","serializer","signature_type","get_description","new_data","key","cat","dep_index","info","label","space","object","newValue","stack","param","v","new_path","array_refs","is_image","image_to_data_uri","buffer","resolve","_","reader","id","stage","space_name","mount_css","target","link","ENTRY_CSS","FONTS","IndexComponent","create_custom_element","svelte","GradioApp","n","f","mutations","name","old_val","new_val"],"sources":["../../../../client/js/dist/index.js","../../../../js/app/src/css.ts","../../../../js/app/src/main.ts"],"sourcesContent":["var fn = new Intl.Collator(0, { numeric: 1 }).compare;\nfunction semiver(a, b, bool) {\n a = a.split(\".\");\n b = b.split(\".\");\n return fn(a[0], b[0]) || fn(a[1], b[1]) || (b[2] = b.slice(2).join(\".\"), bool = /[.-]/.test(a[2] = a.slice(2).join(\".\")), bool == /[.-]/.test(b[2]) ? fn(a[2], b[2]) : bool ? -1 : 1);\n}\nfunction resolve_root(base_url, root_path, prioritize_base) {\n if (root_path.startsWith(\"http://\") || root_path.startsWith(\"https://\")) {\n return prioritize_base ? base_url : root_path;\n }\n return base_url + root_path;\n}\nfunction determine_protocol(endpoint) {\n if (endpoint.startsWith(\"http\")) {\n const { protocol, host } = new URL(endpoint);\n if (host.endsWith(\"hf.space\")) {\n return {\n ws_protocol: \"wss\",\n host,\n http_protocol: protocol\n };\n }\n return {\n ws_protocol: protocol === \"https:\" ? \"wss\" : \"ws\",\n http_protocol: protocol,\n host\n };\n } else if (endpoint.startsWith(\"file:\")) {\n return {\n ws_protocol: \"ws\",\n http_protocol: \"http:\",\n host: \"lite.local\"\n // Special fake hostname only used for this case. This matches the hostname allowed in `is_self_host()` in `js/wasm/network/host.ts`.\n };\n }\n return {\n ws_protocol: \"wss\",\n http_protocol: \"https:\",\n host: endpoint\n };\n}\nconst RE_SPACE_NAME = /^[^\\/]*\\/[^\\/]*$/;\nconst RE_SPACE_DOMAIN = /.*hf\\.space\\/{0,1}$/;\nasync function process_endpoint(app_reference, token) {\n const headers = {};\n if (token) {\n headers.Authorization = `Bearer ${token}`;\n }\n const _app_reference = app_reference.trim();\n if (RE_SPACE_NAME.test(_app_reference)) {\n try {\n const res = await fetch(\n `https://huggingface.co/api/spaces/${_app_reference}/host`,\n { headers }\n );\n if (res.status !== 200)\n throw new Error(\"Space metadata could not be loaded.\");\n const _host = (await res.json()).host;\n return {\n space_id: app_reference,\n ...determine_protocol(_host)\n };\n } catch (e) {\n throw new Error(\"Space metadata could not be loaded.\" + e.message);\n }\n }\n if (RE_SPACE_DOMAIN.test(_app_reference)) {\n const { ws_protocol, http_protocol, host } = determine_protocol(_app_reference);\n return {\n space_id: host.replace(\".hf.space\", \"\"),\n ws_protocol,\n http_protocol,\n host\n };\n }\n return {\n space_id: false,\n ...determine_protocol(_app_reference)\n };\n}\nfunction map_names_to_ids(fns) {\n let apis = {};\n fns.forEach(({ api_name }, i) => {\n if (api_name)\n apis[api_name] = i;\n });\n return apis;\n}\nconst RE_DISABLED_DISCUSSION = /^(?=[^]*\\b[dD]iscussions{0,1}\\b)(?=[^]*\\b[dD]isabled\\b)[^]*$/;\nasync function discussions_enabled(space_id) {\n try {\n const r = await fetch(\n `https://huggingface.co/api/spaces/${space_id}/discussions`,\n {\n method: \"HEAD\"\n }\n );\n const error = r.headers.get(\"x-error-message\");\n if (error && RE_DISABLED_DISCUSSION.test(error))\n return false;\n return true;\n } catch (e) {\n return false;\n }\n}\nasync function get_space_hardware(space_id, token) {\n const headers = {};\n if (token) {\n headers.Authorization = `Bearer ${token}`;\n }\n try {\n const res = await fetch(\n `https://huggingface.co/api/spaces/${space_id}/runtime`,\n { headers }\n );\n if (res.status !== 200)\n throw new Error(\"Space hardware could not be obtained.\");\n const { hardware } = await res.json();\n return hardware;\n } catch (e) {\n throw new Error(e.message);\n }\n}\nasync function set_space_hardware(space_id, new_hardware, token) {\n const headers = {};\n if (token) {\n headers.Authorization = `Bearer ${token}`;\n }\n try {\n const res = await fetch(\n `https://huggingface.co/api/spaces/${space_id}/hardware`,\n { headers, body: JSON.stringify(new_hardware) }\n );\n if (res.status !== 200)\n throw new Error(\n \"Space hardware could not be set. Please ensure the space hardware provided is valid and that a Hugging Face token is passed in.\"\n );\n const { hardware } = await res.json();\n return hardware;\n } catch (e) {\n throw new Error(e.message);\n }\n}\nasync function set_space_timeout(space_id, timeout, token) {\n const headers = {};\n if (token) {\n headers.Authorization = `Bearer ${token}`;\n }\n try {\n const res = await fetch(\n `https://huggingface.co/api/spaces/${space_id}/hardware`,\n { headers, body: JSON.stringify({ seconds: timeout }) }\n );\n if (res.status !== 200)\n throw new Error(\n \"Space hardware could not be set. Please ensure the space hardware provided is valid and that a Hugging Face token is passed in.\"\n );\n const { hardware } = await res.json();\n return hardware;\n } catch (e) {\n throw new Error(e.message);\n }\n}\nconst hardware_types = [\n \"cpu-basic\",\n \"cpu-upgrade\",\n \"t4-small\",\n \"t4-medium\",\n \"a10g-small\",\n \"a10g-large\",\n \"a100-large\"\n];\nconst QUEUE_FULL_MSG = \"This application is too busy. Keep trying!\";\nconst BROKEN_CONNECTION_MSG = \"Connection errored out.\";\nlet NodeBlob;\nasync function duplicate(app_reference, options) {\n const { hf_token, private: _private, hardware, timeout } = options;\n if (hardware && !hardware_types.includes(hardware)) {\n throw new Error(\n `Invalid hardware type provided. Valid types are: ${hardware_types.map((v) => `\"${v}\"`).join(\",\")}.`\n );\n }\n const headers = {\n Authorization: `Bearer ${hf_token}`\n };\n const user = (await (await fetch(`https://huggingface.co/api/whoami-v2`, {\n headers\n })).json()).name;\n const space_name = app_reference.split(\"/\")[1];\n const body = {\n repository: `${user}/${space_name}`\n };\n if (_private) {\n body.private = true;\n }\n try {\n const response = await fetch(\n `https://huggingface.co/api/spaces/${app_reference}/duplicate`,\n {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", ...headers },\n body: JSON.stringify(body)\n }\n );\n if (response.status === 409) {\n return client(`${user}/${space_name}`, options);\n }\n const duplicated_space = await response.json();\n let original_hardware;\n if (!hardware) {\n original_hardware = await get_space_hardware(app_reference, hf_token);\n }\n const requested_hardware = hardware || original_hardware || \"cpu-basic\";\n await set_space_hardware(\n `${user}/${space_name}`,\n requested_hardware,\n hf_token\n );\n await set_space_timeout(`${user}/${space_name}`, timeout || 300, hf_token);\n return client(duplicated_space.url, options);\n } catch (e) {\n throw new Error(e);\n }\n}\nfunction api_factory(fetch_implementation, WebSocket_factory) {\n return { post_data: post_data2, upload_files: upload_files2, client: client2, handle_blob: handle_blob2 };\n async function post_data2(url, body, token) {\n const headers = { \"Content-Type\": \"application/json\" };\n if (token) {\n headers.Authorization = `Bearer ${token}`;\n }\n try {\n var response = await fetch_implementation(url, {\n method: \"POST\",\n body: JSON.stringify(body),\n headers\n });\n } catch (e) {\n return [{ error: BROKEN_CONNECTION_MSG }, 500];\n }\n const output = await response.json();\n return [output, response.status];\n }\n async function upload_files2(root, files, token) {\n const headers = {};\n if (token) {\n headers.Authorization = `Bearer ${token}`;\n }\n const chunkSize = 1e3;\n const uploadResponses = [];\n for (let i = 0; i < files.length; i += chunkSize) {\n const chunk = files.slice(i, i + chunkSize);\n const formData = new FormData();\n chunk.forEach((file) => {\n formData.append(\"files\", file);\n });\n try {\n var response = await fetch_implementation(`${root}/upload`, {\n method: \"POST\",\n body: formData,\n headers\n });\n } catch (e) {\n return { error: BROKEN_CONNECTION_MSG };\n }\n const output = await response.json();\n uploadResponses.push(...output);\n }\n return { files: uploadResponses };\n }\n async function client2(app_reference, options = { normalise_files: true }) {\n return new Promise(async (res) => {\n const { status_callback, hf_token, normalise_files } = options;\n const return_obj = {\n predict,\n submit,\n view_api,\n component_server\n // duplicate\n };\n const transform_files = normalise_files ?? true;\n if ((typeof window === \"undefined\" || !(\"WebSocket\" in window)) && !global.Websocket) {\n const ws = await import(\"./wrapper-98f94c21.js\");\n NodeBlob = (await import(\"node:buffer\")).Blob;\n global.WebSocket = ws.WebSocket;\n }\n const { ws_protocol, http_protocol, host, space_id } = await process_endpoint(app_reference, hf_token);\n const session_hash = Math.random().toString(36).substring(2);\n const last_status = {};\n let config;\n let api_map = {};\n let jwt = false;\n if (hf_token && space_id) {\n jwt = await get_jwt(space_id, hf_token);\n }\n async function config_success(_config) {\n config = _config;\n api_map = map_names_to_ids((_config == null ? void 0 : _config.dependencies) || []);\n if (config.auth_required) {\n return {\n config,\n ...return_obj\n };\n }\n try {\n api = await view_api(config);\n } catch (e) {\n console.error(`Could not get api details: ${e.message}`);\n }\n return {\n config,\n ...return_obj\n };\n }\n let api;\n async function handle_space_sucess(status) {\n if (status_callback)\n status_callback(status);\n if (status.status === \"running\")\n try {\n config = await resolve_config(\n fetch_implementation,\n `${http_protocol}//${host}`,\n hf_token\n );\n const _config = await config_success(config);\n res(_config);\n } catch (e) {\n console.error(e);\n if (status_callback) {\n status_callback({\n status: \"error\",\n message: \"Could not load this space.\",\n load_status: \"error\",\n detail: \"NOT_FOUND\"\n });\n }\n }\n }\n try {\n config = await resolve_config(\n fetch_implementation,\n `${http_protocol}//${host}`,\n hf_token\n );\n const _config = await config_success(config);\n res(_config);\n } catch (e) {\n console.error(e);\n if (space_id) {\n check_space_status(\n space_id,\n RE_SPACE_NAME.test(space_id) ? \"space_name\" : \"subdomain\",\n handle_space_sucess\n );\n } else {\n if (status_callback)\n status_callback({\n status: \"error\",\n message: \"Could not load this space.\",\n load_status: \"error\",\n detail: \"NOT_FOUND\"\n });\n }\n }\n function predict(endpoint, data, event_data) {\n let data_returned = false;\n let status_complete = false;\n let dependency;\n if (typeof endpoint === \"number\") {\n dependency = config.dependencies[endpoint];\n } else {\n const trimmed_endpoint = endpoint.replace(/^\\//, \"\");\n dependency = config.dependencies[api_map[trimmed_endpoint]];\n }\n if (dependency.types.continuous) {\n throw new Error(\n \"Cannot call predict on this function as it may run forever. Use submit instead\"\n );\n }\n return new Promise((res2, rej) => {\n const app = submit(endpoint, data, event_data);\n let result;\n app.on(\"data\", (d) => {\n if (status_complete) {\n app.destroy();\n res2(d);\n }\n data_returned = true;\n result = d;\n }).on(\"status\", (status) => {\n if (status.stage === \"error\")\n rej(status);\n if (status.stage === \"complete\") {\n status_complete = true;\n if (data_returned) {\n app.destroy();\n res2(result);\n }\n }\n });\n });\n }\n function submit(endpoint, data, event_data) {\n let fn_index;\n let api_info;\n if (typeof endpoint === \"number\") {\n fn_index = endpoint;\n api_info = api.unnamed_endpoints[fn_index];\n } else {\n const trimmed_endpoint = endpoint.replace(/^\\//, \"\");\n fn_index = api_map[trimmed_endpoint];\n api_info = api.named_endpoints[endpoint.trim()];\n }\n if (typeof fn_index !== \"number\") {\n throw new Error(\n \"There is no endpoint matching that name of fn_index matching that number.\"\n );\n }\n let websocket;\n const _endpoint = typeof endpoint === \"number\" ? \"/predict\" : endpoint;\n let payload;\n let complete = false;\n const listener_map = {};\n let url_params = \"\";\n if (typeof window !== \"undefined\") {\n url_params = new URLSearchParams(window.location.search).toString();\n }\n handle_blob2(\n `${http_protocol}//${resolve_root(host, config.path, true)}`,\n data,\n api_info,\n hf_token\n ).then((_payload) => {\n payload = { data: _payload || [], event_data, fn_index };\n if (skip_queue(fn_index, config)) {\n fire_event({\n type: \"status\",\n endpoint: _endpoint,\n stage: \"pending\",\n queue: false,\n fn_index,\n time: /* @__PURE__ */ new Date()\n });\n post_data2(\n `${http_protocol}//${resolve_root(host, config.path, true)}/run${_endpoint.startsWith(\"/\") ? _endpoint : `/${_endpoint}`}${url_params ? \"?\" + url_params : \"\"}`,\n {\n ...payload,\n session_hash\n },\n hf_token\n ).then(([output, status_code]) => {\n const data2 = transform_files ? transform_output(\n output.data,\n api_info,\n config.root,\n config.root_url\n ) : output.data;\n if (status_code == 200) {\n fire_event({\n type: \"data\",\n endpoint: _endpoint,\n fn_index,\n data: data2,\n time: /* @__PURE__ */ new Date()\n });\n fire_event({\n type: \"status\",\n endpoint: _endpoint,\n fn_index,\n stage: \"complete\",\n eta: output.average_duration,\n queue: false,\n time: /* @__PURE__ */ new Date()\n });\n } else {\n fire_event({\n type: \"status\",\n stage: \"error\",\n endpoint: _endpoint,\n fn_index,\n message: output.error,\n queue: false,\n time: /* @__PURE__ */ new Date()\n });\n }\n }).catch((e) => {\n fire_event({\n type: \"status\",\n stage: \"error\",\n message: e.message,\n endpoint: _endpoint,\n fn_index,\n queue: false,\n time: /* @__PURE__ */ new Date()\n });\n });\n } else {\n fire_event({\n type: \"status\",\n stage: \"pending\",\n queue: true,\n endpoint: _endpoint,\n fn_index,\n time: /* @__PURE__ */ new Date()\n });\n let url = new URL(`${ws_protocol}://${resolve_root(\n host,\n config.path,\n true\n )}\n\t\t\t\t\t\t\t/queue/join${url_params ? \"?\" + url_params : \"\"}`);\n if (jwt) {\n url.searchParams.set(\"__sign\", jwt);\n }\n websocket = WebSocket_factory(url);\n websocket.onclose = (evt) => {\n if (!evt.wasClean) {\n fire_event({\n type: \"status\",\n stage: \"error\",\n broken: true,\n message: BROKEN_CONNECTION_MSG,\n queue: true,\n endpoint: _endpoint,\n fn_index,\n time: /* @__PURE__ */ new Date()\n });\n }\n };\n websocket.onmessage = function(event) {\n const _data = JSON.parse(event.data);\n const { type, status, data: data2 } = handle_message(\n _data,\n last_status[fn_index]\n );\n if (type === \"update\" && status && !complete) {\n fire_event({\n type: \"status\",\n endpoint: _endpoint,\n fn_index,\n time: /* @__PURE__ */ new Date(),\n ...status\n });\n if (status.stage === \"error\") {\n websocket.close();\n }\n } else if (type === \"hash\") {\n websocket.send(JSON.stringify({ fn_index, session_hash }));\n return;\n } else if (type === \"data\") {\n websocket.send(JSON.stringify({ ...payload, session_hash }));\n } else if (type === \"complete\") {\n complete = status;\n } else if (type === \"log\") {\n fire_event({\n type: \"log\",\n log: data2.log,\n level: data2.level,\n endpoint: _endpoint,\n fn_index\n });\n } else if (type === \"generating\") {\n fire_event({\n type: \"status\",\n time: /* @__PURE__ */ new Date(),\n ...status,\n stage: status == null ? void 0 : status.stage,\n queue: true,\n endpoint: _endpoint,\n fn_index\n });\n }\n if (data2) {\n fire_event({\n type: \"data\",\n time: /* @__PURE__ */ new Date(),\n data: transform_files ? transform_output(\n data2.data,\n api_info,\n config.root,\n config.root_url\n ) : data2.data,\n endpoint: _endpoint,\n fn_index\n });\n if (complete) {\n fire_event({\n type: \"status\",\n time: /* @__PURE__ */ new Date(),\n ...complete,\n stage: status == null ? void 0 : status.stage,\n queue: true,\n endpoint: _endpoint,\n fn_index\n });\n websocket.close();\n }\n }\n };\n if (semiver(config.version || \"2.0.0\", \"3.6\") < 0) {\n addEventListener(\n \"open\",\n () => websocket.send(JSON.stringify({ hash: session_hash }))\n );\n }\n }\n });\n function fire_event(event) {\n const narrowed_listener_map = listener_map;\n const listeners = narrowed_listener_map[event.type] || [];\n listeners == null ? void 0 : listeners.forEach((l) => l(event));\n }\n function on(eventType, listener) {\n const narrowed_listener_map = listener_map;\n const listeners = narrowed_listener_map[eventType] || [];\n narrowed_listener_map[eventType] = listeners;\n listeners == null ? void 0 : listeners.push(listener);\n return { on, off, cancel, destroy };\n }\n function off(eventType, listener) {\n const narrowed_listener_map = listener_map;\n let listeners = narrowed_listener_map[eventType] || [];\n listeners = listeners == null ? void 0 : listeners.filter((l) => l !== listener);\n narrowed_listener_map[eventType] = listeners;\n return { on, off, cancel, destroy };\n }\n async function cancel() {\n const _status = {\n stage: \"complete\",\n queue: false,\n time: /* @__PURE__ */ new Date()\n };\n complete = _status;\n fire_event({\n ..._status,\n type: \"status\",\n endpoint: _endpoint,\n fn_index\n });\n if (websocket && websocket.readyState === 0) {\n websocket.addEventListener(\"open\", () => {\n websocket.close();\n });\n } else {\n websocket.close();\n }\n try {\n await fetch_implementation(\n `${http_protocol}//${resolve_root(\n host,\n config.path,\n true\n )}/reset`,\n {\n headers: { \"Content-Type\": \"application/json\" },\n method: \"POST\",\n body: JSON.stringify({ fn_index, session_hash })\n }\n );\n } catch (e) {\n console.warn(\n \"The `/reset` endpoint could not be called. Subsequent endpoint results may be unreliable.\"\n );\n }\n }\n function destroy() {\n for (const event_type in listener_map) {\n listener_map[event_type].forEach((fn2) => {\n off(event_type, fn2);\n });\n }\n }\n return {\n on,\n off,\n cancel,\n destroy\n };\n }\n async function component_server(component_id, fn_name, data) {\n var _a;\n const headers = { \"Content-Type\": \"application/json\" };\n if (hf_token) {\n headers.Authorization = `Bearer ${hf_token}`;\n }\n let root_url;\n let component = config.components.find(\n (comp) => comp.id === component_id\n );\n if ((_a = component == null ? void 0 : component.props) == null ? void 0 : _a.root_url) {\n root_url = component.props.root_url;\n } else {\n root_url = `${http_protocol}//${resolve_root(\n host,\n config.path,\n true\n )}/`;\n }\n const response = await fetch_implementation(\n `${root_url}component_server/`,\n {\n method: \"POST\",\n body: JSON.stringify({\n data,\n component_id,\n fn_name,\n session_hash\n }),\n headers\n }\n );\n if (!response.ok) {\n throw new Error(\n \"Could not connect to component server: \" + response.statusText\n );\n }\n const output = await response.json();\n return output;\n }\n async function view_api(config2) {\n if (api)\n return api;\n const headers = { \"Content-Type\": \"application/json\" };\n if (hf_token) {\n headers.Authorization = `Bearer ${hf_token}`;\n }\n let response;\n if (semiver(config2.version || \"2.0.0\", \"3.30\") < 0) {\n response = await fetch_implementation(\n \"https://gradio-space-api-fetcher-v2.hf.space/api\",\n {\n method: \"POST\",\n body: JSON.stringify({\n serialize: false,\n config: JSON.stringify(config2)\n }),\n headers\n }\n );\n } else {\n response = await fetch_implementation(`${config2.root}/info`, {\n headers\n });\n }\n if (!response.ok) {\n throw new Error(BROKEN_CONNECTION_MSG);\n }\n let api_info = await response.json();\n if (\"api\" in api_info) {\n api_info = api_info.api;\n }\n if (api_info.named_endpoints[\"/predict\"] && !api_info.unnamed_endpoints[\"0\"]) {\n api_info.unnamed_endpoints[0] = api_info.named_endpoints[\"/predict\"];\n }\n const x = transform_api_info(api_info, config2, api_map);\n return x;\n }\n });\n }\n async function handle_blob2(endpoint, data, api_info, token) {\n const blob_refs = await walk_and_store_blobs(\n data,\n void 0,\n [],\n true,\n api_info\n );\n return Promise.all(\n blob_refs.map(async ({ path, blob, data: data2, type }) => {\n if (blob) {\n const file_url = (await upload_files2(endpoint, [blob], token)).files[0];\n return { path, file_url, type };\n }\n return { path, base64: data2, type };\n })\n ).then((r) => {\n r.forEach(({ path, file_url, base64, type }) => {\n if (base64) {\n update_object(data, base64, path);\n } else if (type === \"Gallery\") {\n update_object(data, file_url, path);\n } else if (file_url) {\n const o = {\n is_file: true,\n name: `${file_url}`,\n data: null\n // orig_name: \"file.csv\"\n };\n update_object(data, o, path);\n }\n });\n return data;\n });\n }\n}\nconst { post_data, upload_files, client, handle_blob } = api_factory(\n fetch,\n (...args) => new WebSocket(...args)\n);\nfunction transform_output(data, api_info, root_url, remote_url) {\n return data.map((d, i) => {\n var _a, _b, _c, _d;\n if (((_b = (_a = api_info == null ? void 0 : api_info.returns) == null ? void 0 : _a[i]) == null ? void 0 : _b.component) === \"File\") {\n return normalise_file(d, root_url, remote_url);\n } else if (((_d = (_c = api_info == null ? void 0 : api_info.returns) == null ? void 0 : _c[i]) == null ? void 0 : _d.component) === \"Gallery\") {\n return d.map((img) => {\n return Array.isArray(img) ? [normalise_file(img[0], root_url, remote_url), img[1]] : [normalise_file(img, root_url, remote_url), null];\n });\n } else if (typeof d === \"object\" && (d == null ? void 0 : d.is_file)) {\n return normalise_file(d, root_url, remote_url);\n }\n return d;\n });\n}\nfunction normalise_file(file, root, root_url) {\n if (file == null)\n return null;\n if (typeof file === \"string\") {\n return {\n name: \"file_data\",\n data: file\n };\n } else if (Array.isArray(file)) {\n const normalized_file = [];\n for (const x of file) {\n if (x === null) {\n normalized_file.push(null);\n } else {\n normalized_file.push(normalise_file(x, root, root_url));\n }\n }\n return normalized_file;\n } else if (file.is_file) {\n if (!root_url) {\n file.data = root + \"/file=\" + file.name;\n } else {\n file.data = \"/proxy=\" + root_url + \"file=\" + file.name;\n }\n }\n return file;\n}\nfunction get_type(type, component, serializer, signature_type) {\n switch (type.type) {\n case \"string\":\n return \"string\";\n case \"boolean\":\n return \"boolean\";\n case \"number\":\n return \"number\";\n }\n if (serializer === \"JSONSerializable\" || serializer === \"StringSerializable\") {\n return \"any\";\n } else if (serializer === \"ListStringSerializable\") {\n return \"string[]\";\n } else if (component === \"Image\") {\n return signature_type === \"parameter\" ? \"Blob | File | Buffer\" : \"string\";\n } else if (serializer === \"FileSerializable\") {\n if ((type == null ? void 0 : type.type) === \"array\") {\n return signature_type === \"parameter\" ? \"(Blob | File | Buffer)[]\" : `{ name: string; data: string; size?: number; is_file?: boolean; orig_name?: string}[]`;\n }\n return signature_type === \"parameter\" ? \"Blob | File | Buffer\" : `{ name: string; data: string; size?: number; is_file?: boolean; orig_name?: string}`;\n } else if (serializer === \"GallerySerializable\") {\n return signature_type === \"parameter\" ? \"[(Blob | File | Buffer), (string | null)][]\" : `[{ name: string; data: string; size?: number; is_file?: boolean; orig_name?: string}, (string | null))][]`;\n }\n}\nfunction get_description(type, serializer) {\n if (serializer === \"GallerySerializable\") {\n return \"array of [file, label] tuples\";\n } else if (serializer === \"ListStringSerializable\") {\n return \"array of strings\";\n } else if (serializer === \"FileSerializable\") {\n return \"array of files or single file\";\n }\n return type.description;\n}\nfunction transform_api_info(api_info, config, api_map) {\n const new_data = {\n named_endpoints: {},\n unnamed_endpoints: {}\n };\n for (const key in api_info) {\n const cat = api_info[key];\n for (const endpoint in cat) {\n const dep_index = config.dependencies[endpoint] ? endpoint : api_map[endpoint.replace(\"/\", \"\")];\n const info = cat[endpoint];\n new_data[key][endpoint] = {};\n new_data[key][endpoint].parameters = {};\n new_data[key][endpoint].returns = {};\n new_data[key][endpoint].type = config.dependencies[dep_index].types;\n new_data[key][endpoint].parameters = info.parameters.map(\n ({ label, component, type, serializer }) => ({\n label,\n component,\n type: get_type(type, component, serializer, \"parameter\"),\n description: get_description(type, serializer)\n })\n );\n new_data[key][endpoint].returns = info.returns.map(\n ({ label, component, type, serializer }) => ({\n label,\n component,\n type: get_type(type, component, serializer, \"return\"),\n description: get_description(type, serializer)\n })\n );\n }\n }\n return new_data;\n}\nasync function get_jwt(space, token) {\n try {\n const r = await fetch(`https://huggingface.co/api/spaces/${space}/jwt`, {\n headers: {\n Authorization: `Bearer ${token}`\n }\n });\n const jwt = (await r.json()).token;\n return jwt || false;\n } catch (e) {\n console.error(e);\n return false;\n }\n}\nfunction update_object(object, newValue, stack) {\n while (stack.length > 1) {\n object = object[stack.shift()];\n }\n object[stack.shift()] = newValue;\n}\nasync function walk_and_store_blobs(param, type = void 0, path = [], root = false, api_info = void 0) {\n if (Array.isArray(param)) {\n let blob_refs = [];\n await Promise.all(\n param.map(async (v, i) => {\n var _a;\n let new_path = path.slice();\n new_path.push(i);\n const array_refs = await walk_and_store_blobs(\n param[i],\n root ? ((_a = api_info == null ? void 0 : api_info.parameters[i]) == null ? void 0 : _a.component) || void 0 : type,\n new_path,\n false,\n api_info\n );\n blob_refs = blob_refs.concat(array_refs);\n })\n );\n return blob_refs;\n } else if (globalThis.Buffer && param instanceof globalThis.Buffer) {\n const is_image = type === \"Image\";\n return [\n {\n path,\n blob: is_image ? false : new NodeBlob([param]),\n data: is_image ? `${param.toString(\"base64\")}` : false,\n type\n }\n ];\n } else if (param instanceof Blob || typeof window !== \"undefined\" && param instanceof File) {\n if (type === \"Image\") {\n let data;\n if (typeof window !== \"undefined\") {\n data = await image_to_data_uri(param);\n } else {\n const buffer = await param.arrayBuffer();\n data = Buffer.from(buffer).toString(\"base64\");\n }\n return [{ path, data, type, blob: false }];\n }\n return [{ path, blob: param, type, data: false }];\n } else if (typeof param === \"object\") {\n let blob_refs = [];\n for (let key in param) {\n if (param.hasOwnProperty(key)) {\n let new_path = path.slice();\n new_path.push(key);\n blob_refs = blob_refs.concat(\n await walk_and_store_blobs(\n param[key],\n void 0,\n new_path,\n false,\n api_info\n )\n );\n }\n }\n return blob_refs;\n }\n return [];\n}\nfunction image_to_data_uri(blob) {\n return new Promise((resolve, _) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result);\n reader.readAsDataURL(blob);\n });\n}\nfunction skip_queue(id, config) {\n var _a, _b, _c, _d;\n return !(((_b = (_a = config == null ? void 0 : config.dependencies) == null ? void 0 : _a[id]) == null ? void 0 : _b.queue) === null ? config.enable_queue : (_d = (_c = config == null ? void 0 : config.dependencies) == null ? void 0 : _c[id]) == null ? void 0 : _d.queue) || false;\n}\nasync function resolve_config(fetch_implementation, endpoint, token) {\n const headers = {};\n if (token) {\n headers.Authorization = `Bearer ${token}`;\n }\n if (typeof window !== \"undefined\" && window.gradio_config && location.origin !== \"http://localhost:9876\" && !window.gradio_config.dev_mode) {\n const path = window.gradio_config.root;\n const config = window.gradio_config;\n config.root = resolve_root(endpoint, config.root, false);\n return { ...config, path };\n } else if (endpoint) {\n let response = await fetch_implementation(`${endpoint}/config`, {\n headers\n });\n if (response.status === 200) {\n const config = await response.json();\n config.path = config.path ?? \"\";\n config.root = endpoint;\n return config;\n }\n throw new Error(\"Could not get config.\");\n }\n throw new Error(\"No config or app endpoint found\");\n}\nasync function check_space_status(id, type, status_callback) {\n let endpoint = type === \"subdomain\" ? `https://huggingface.co/api/spaces/by-subdomain/${id}` : `https://huggingface.co/api/spaces/${id}`;\n let response;\n let _status;\n try {\n response = await fetch(endpoint);\n _status = response.status;\n if (_status !== 200) {\n throw new Error();\n }\n response = await response.json();\n } catch (e) {\n status_callback({\n status: \"error\",\n load_status: \"error\",\n message: \"Could not get space status\",\n detail: \"NOT_FOUND\"\n });\n return;\n }\n if (!response || _status !== 200)\n return;\n const {\n runtime: { stage },\n id: space_name\n } = response;\n switch (stage) {\n case \"STOPPED\":\n case \"SLEEPING\":\n status_callback({\n status: \"sleeping\",\n load_status: \"pending\",\n message: \"Space is asleep. Waking it up...\",\n detail: stage\n });\n setTimeout(() => {\n check_space_status(id, type, status_callback);\n }, 1e3);\n break;\n case \"PAUSED\":\n status_callback({\n status: \"paused\",\n load_status: \"error\",\n message: \"This space has been paused by the author. If you would like to try this demo, consider duplicating the space.\",\n detail: stage,\n discussions_enabled: await discussions_enabled(space_name)\n });\n break;\n case \"RUNNING\":\n case \"RUNNING_BUILDING\":\n status_callback({\n status: \"running\",\n load_status: \"complete\",\n message: \"\",\n detail: stage\n });\n break;\n case \"BUILDING\":\n status_callback({\n status: \"building\",\n load_status: \"pending\",\n message: \"Space is building...\",\n detail: stage\n });\n setTimeout(() => {\n check_space_status(id, type, status_callback);\n }, 1e3);\n break;\n default:\n status_callback({\n status: \"space_error\",\n load_status: \"error\",\n message: \"This space is experiencing an issue.\",\n detail: stage,\n discussions_enabled: await discussions_enabled(space_name)\n });\n break;\n }\n}\nfunction handle_message(data, last_status) {\n const queue = true;\n switch (data.msg) {\n case \"send_data\":\n return { type: \"data\" };\n case \"send_hash\":\n return { type: \"hash\" };\n case \"queue_full\":\n return {\n type: \"update\",\n status: {\n queue,\n message: QUEUE_FULL_MSG,\n stage: \"error\",\n code: data.code,\n success: data.success\n }\n };\n case \"estimation\":\n return {\n type: \"update\",\n status: {\n queue,\n stage: last_status || \"pending\",\n code: data.code,\n size: data.queue_size,\n position: data.rank,\n eta: data.rank_eta,\n success: data.success\n }\n };\n case \"progress\":\n return {\n type: \"update\",\n status: {\n queue,\n stage: \"pending\",\n code: data.code,\n progress_data: data.progress_data,\n success: data.success\n }\n };\n case \"log\":\n return { type: \"log\", data };\n case \"process_generating\":\n return {\n type: \"generating\",\n status: {\n queue,\n message: !data.success ? data.output.error : null,\n stage: data.success ? \"generating\" : \"error\",\n code: data.code,\n progress_data: data.progress_data,\n eta: data.average_duration\n },\n data: data.success ? data.output : null\n };\n case \"process_completed\":\n if (\"error\" in data.output) {\n return {\n type: \"update\",\n status: {\n queue,\n message: data.output.error,\n stage: \"error\",\n code: data.code,\n success: data.success\n }\n };\n }\n return {\n type: \"complete\",\n status: {\n queue,\n message: !data.success ? data.output.error : void 0,\n stage: data.success ? \"complete\" : \"error\",\n code: data.code,\n progress_data: data.progress_data,\n eta: data.output.average_duration\n },\n data: data.success ? data.output : null\n };\n case \"process_starts\":\n return {\n type: \"update\",\n status: {\n queue,\n stage: \"pending\",\n code: data.code,\n size: data.rank,\n position: 0,\n success: data.success\n }\n };\n }\n return { type: \"none\", status: { stage: \"error\", queue } };\n}\nexport {\n api_factory,\n client,\n duplicate,\n post_data,\n upload_files\n};\n","export function mount_css(url: string, target: HTMLElement): Promise {\n\tconst existing_link = document.querySelector(`link[href='${url}']`);\n\n\tif (existing_link) return Promise.resolve();\n\n\tconst link = document.createElement(\"link\");\n\tlink.rel = \"stylesheet\";\n\tlink.href = url;\n\n\treturn new Promise((res, rej) => {\n\t\tlink.addEventListener(\"load\", () => res());\n\t\tlink.addEventListener(\"error\", () => {\n\t\t\tconsole.error(`Unable to preload CSS for ${url}`);\n\t\t\tres();\n\t\t});\n\t\ttarget.appendChild(link);\n\t});\n}\n","import \"@gradio/theme/src/reset.css\";\nimport \"@gradio/theme/src/global.css\";\nimport \"@gradio/theme/src/pollen.css\";\nimport \"@gradio/theme/src/typography.css\";\nimport { client, upload_files } from \"@gradio/client\";\nimport { mount_css } from \"./css\";\nimport type Index from \"./Index.svelte\";\n\nimport type { ThemeMode } from \"./types\";\n\n//@ts-ignore\nimport * as svelte from \"./svelte/svelte.js\";\n\ndeclare let BUILD_MODE: string;\ndeclare let GRADIO_VERSION: string;\n\nconst ENTRY_CSS = \"__ENTRY_CSS__\";\n\nlet FONTS: string | [];\n\nFONTS = \"__FONTS_CSS__\";\n\nlet IndexComponent: typeof Index;\nfunction create_custom_element(): void {\n\tconst o = {\n\t\tSvelteComponent: svelte.SvelteComponent\n\t};\n\tfor (const key in svelte) {\n\t\tif (key === \"SvelteComponent\") continue;\n\t\tif (key === \"SvelteComponentDev\") {\n\t\t\t//@ts-ignore\n\t\t\to[key] = o[\"SvelteComponent\"];\n\t\t} else {\n\t\t\t//@ts-ignore\n\t\t\to[key] = svelte[key];\n\t\t}\n\t}\n\t//@ts-ignore\n\twindow.__gradio__svelte__internal = o;\n\tclass GradioApp extends HTMLElement {\n\t\tcontrol_page_title: string | null;\n\t\tinitial_height: string;\n\t\tis_embed: string;\n\t\tcontainer: string;\n\t\tinfo: string | true;\n\t\tautoscroll: string | null;\n\t\teager: string | null;\n\t\ttheme_mode: ThemeMode | null;\n\t\thost: string | null;\n\t\tspace: string | null;\n\t\tsrc: string | null;\n\t\tapp?: Index;\n\t\tloading: boolean;\n\t\tupdating: { name: string; value: string } | false;\n\n\t\tconstructor() {\n\t\t\tsuper();\n\t\t\tthis.host = this.getAttribute(\"host\");\n\t\t\tthis.space = this.getAttribute(\"space\");\n\t\t\tthis.src = this.getAttribute(\"src\");\n\n\t\t\tthis.control_page_title = this.getAttribute(\"control_page_title\");\n\t\t\tthis.initial_height = this.getAttribute(\"initial_height\") ?? \"300px\"; // default: 300px\n\t\t\tthis.is_embed = this.getAttribute(\"embed\") ?? \"true\"; // default: true\n\t\t\tthis.container = this.getAttribute(\"container\") ?? \"true\"; // default: true\n\t\t\tthis.info = this.getAttribute(\"info\") ?? true; // default: true\n\t\t\tthis.autoscroll = this.getAttribute(\"autoscroll\");\n\t\t\tthis.eager = this.getAttribute(\"eager\");\n\t\t\tthis.theme_mode = this.getAttribute(\"theme_mode\") as ThemeMode | null;\n\t\t\tthis.updating = false;\n\t\t\tthis.loading = false;\n\t\t}\n\n\t\tasync connectedCallback(): Promise {\n\t\t\tIndexComponent = (await import(\"./Index.svelte\")).default;\n\t\t\tthis.loading = true;\n\n\t\t\tif (this.app) {\n\t\t\t\tthis.app.$destroy();\n\t\t\t}\n\n\t\t\tif (typeof FONTS !== \"string\") {\n\t\t\t\tFONTS.forEach((f) => mount_css(f, document.head));\n\t\t\t}\n\n\t\t\tawait mount_css(ENTRY_CSS, document.head);\n\n\t\t\tconst event = new CustomEvent(\"domchange\", {\n\t\t\t\tbubbles: true,\n\t\t\t\tcancelable: false,\n\t\t\t\tcomposed: true\n\t\t\t});\n\n\t\t\tconst observer = new MutationObserver((mutations) => {\n\t\t\t\tthis.dispatchEvent(event);\n\t\t\t});\n\n\t\t\tobserver.observe(this, { childList: true });\n\n\t\t\tthis.app = new IndexComponent({\n\t\t\t\ttarget: this,\n\t\t\t\tprops: {\n\t\t\t\t\t// embed source\n\t\t\t\t\tspace: this.space ? this.space.trim() : this.space,\n\t\t\t\t\tsrc: this.src ? this.src.trim() : this.src,\n\t\t\t\t\thost: this.host ? this.host.trim() : this.host,\n\t\t\t\t\t// embed info\n\t\t\t\t\tinfo: this.info === \"false\" ? false : true,\n\t\t\t\t\tcontainer: this.container === \"false\" ? false : true,\n\t\t\t\t\tis_embed: this.is_embed === \"false\" ? false : true,\n\t\t\t\t\tinitial_height: this.initial_height,\n\t\t\t\t\teager: this.eager === \"true\" ? true : false,\n\t\t\t\t\t// gradio meta info\n\t\t\t\t\tversion: GRADIO_VERSION,\n\t\t\t\t\ttheme_mode: this.theme_mode,\n\t\t\t\t\t// misc global behaviour\n\t\t\t\t\tautoscroll: this.autoscroll === \"true\" ? true : false,\n\t\t\t\t\tcontrol_page_title: this.control_page_title === \"true\" ? true : false,\n\t\t\t\t\t// injectables\n\t\t\t\t\tclient,\n\t\t\t\t\tupload_files,\n\t\t\t\t\t// for gradio docs\n\t\t\t\t\t// TODO: Remove -- i think this is just for autoscroll behavhiour, app vs embeds\n\t\t\t\t\tapp_mode: window.__gradio_mode__ === \"app\"\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (this.updating) {\n\t\t\t\tthis.setAttribute(this.updating.name, this.updating.value);\n\t\t\t}\n\n\t\t\tthis.loading = false;\n\t\t}\n\n\t\tstatic get observedAttributes(): [\"src\", \"space\", \"host\"] {\n\t\t\treturn [\"src\", \"space\", \"host\"];\n\t\t}\n\n\t\tattributeChangedCallback(\n\t\t\tname: string,\n\t\t\told_val: string,\n\t\t\tnew_val: string\n\t\t): void {\n\t\t\tif (\n\t\t\t\t(name === \"host\" || name === \"space\" || name === \"src\") &&\n\t\t\t\tnew_val !== old_val\n\t\t\t) {\n\t\t\t\tthis.updating = { name, value: new_val };\n\t\t\t\tif (this.loading) return;\n\n\t\t\t\tif (this.app) {\n\t\t\t\t\tthis.app.$destroy();\n\t\t\t\t}\n\n\t\t\t\tthis.space = null;\n\t\t\t\tthis.host = null;\n\t\t\t\tthis.src = null;\n\n\t\t\t\tif (name === \"host\") {\n\t\t\t\t\tthis.host = new_val;\n\t\t\t\t} else if (name === \"space\") {\n\t\t\t\t\tthis.space = new_val;\n\t\t\t\t} else if (name === \"src\") {\n\t\t\t\t\tthis.src = new_val;\n\t\t\t\t}\n\n\t\t\t\tthis.app = new IndexComponent({\n\t\t\t\t\ttarget: this,\n\t\t\t\t\tprops: {\n\t\t\t\t\t\t// embed source\n\t\t\t\t\t\tspace: this.space ? this.space.trim() : this.space,\n\t\t\t\t\t\tsrc: this.src ? this.src.trim() : this.src,\n\t\t\t\t\t\thost: this.host ? this.host.trim() : this.host,\n\t\t\t\t\t\t// embed info\n\t\t\t\t\t\tinfo: this.info === \"false\" ? false : true,\n\t\t\t\t\t\tcontainer: this.container === \"false\" ? false : true,\n\t\t\t\t\t\tis_embed: this.is_embed === \"false\" ? false : true,\n\t\t\t\t\t\tinitial_height: this.initial_height,\n\t\t\t\t\t\teager: this.eager === \"true\" ? true : false,\n\t\t\t\t\t\t// gradio meta info\n\t\t\t\t\t\tversion: GRADIO_VERSION,\n\t\t\t\t\t\ttheme_mode: this.theme_mode,\n\t\t\t\t\t\t// misc global behaviour\n\t\t\t\t\t\tautoscroll: this.autoscroll === \"true\" ? true : false,\n\t\t\t\t\t\tcontrol_page_title:\n\t\t\t\t\t\t\tthis.control_page_title === \"true\" ? true : false,\n\t\t\t\t\t\t// injectables\n\t\t\t\t\t\tclient,\n\t\t\t\t\t\tupload_files,\n\t\t\t\t\t\t// for gradio docs\n\t\t\t\t\t\t// TODO: Remove -- i think this is just for autoscroll behavhiour, app vs embeds\n\t\t\t\t\t\tapp_mode: window.__gradio_mode__ === \"app\"\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tthis.updating = false;\n\t\t\t}\n\t\t}\n\t}\n\tif (!customElements.get(\"gradio-app\"))\n\t\tcustomElements.define(\"gradio-app\", GradioApp);\n}\n\ncreate_custom_element();\n"],"file":"assets/index-b5982b4a.js"}