{"version":3,"mappings":"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","names":["__defProp","__defNormalProp","obj","key","value","__publicField","fn","semiver","a","b","bool","UPLOAD_URL","CONFIG_URL","API_INFO_URL","RUNTIME_URL","SLEEPTIME_URL","SPACE_FETCHER_URL","QUEUE_FULL_MSG","BROKEN_CONNECTION_MSG","CONFIG_ERROR_MSG","SPACE_STATUS_ERROR_MSG","API_INFO_ERROR_MSG","SPACE_METADATA_ERROR_MSG","resolve_root","base_url","root_path","prioritize_base","get_jwt","space","token","map_names_to_ids","fns","apis","api_name","i","resolve_config","endpoint","headers","path","config","config_root","response","determine_protocol","protocol","host","RE_SPACE_NAME","RE_SPACE_DOMAIN","process_endpoint","app_reference","hf_token","_app_reference","_host","e","ws_protocol","http_protocol","transform_api_info","api_info","api_map","transformed_info","category","parameters","returns","_a","_b","dependencyIndex","dep","dependencyTypes","components","input","_a2","c","comp","idx","new_param","transform_type","data","component","serializer","signature_type","get_description","get_type","p","r","type","handle_message","last_status","map_data_to_params","values","resolved_data","provided_keys","param","index","view_api","upload_files","root_url","files","upload_id","chunkSize","uploadResponses","chunk","formData","file","upload_url","error_text","output","upload","file_data","max_file_size","file_data2","oversized_files","f","FileData","prepare_files","is_stream","url","orig_name","size","blob","mime_type","alt_text","update_object","object","newValue","stack","key2","walk_and_store_blobs","root","endpoint_info","blob_refs","item","new_path","array_refs","NodeBlob","skip_queue","id","post_message","message","origin","res","_rej","channel","handle_blob","self","blobRefs","file_url","name","post_data","body","additional_headers","status","predict","data_returned","status_complete","dependency","trimmed_endpoint","resolve","reject","app","result","d","check_space_status","status_callback","_status","stage","space_name","discussions_enabled","RE_DISABLED_DISCUSSION","space_id","error","get_space_hardware","hardware","set_space_timeout","timeout","hardware_types","duplicate","options","_private","v","user","original_hardware","requested_hardware","Client","duplicated_space","get_space_reference","regex","match","open_stream","event_callbacks","unclosed_events","pending_stream_messages","stream_status","jwt","stream","params","event","_data","close_stream","event_id","event_id2","fn2","apply_diff_stream","pending_diff_streams","new_data","apply_diff","diff","action","apply_edit","target","current","last_path","submit","event_data","trigger_id","fire_event","listeners","listener_map","l","on","eventType","listener","narrowed_listener_map","off","cancel","destroy","event_type","fetch2","session_hash","post_data2","fn_index","get_endpoint_info","websocket","_endpoint","payload","complete","url_params","cancel_request","_payload","status_code","data2","evt","_","status2","hostname","callback","msg","blobParts","init","EventSourceModule","__vitePreload","n","ws","heartbeat_url","client2","_config","component_id","fn_name","supports_adopted_stylesheets","mount_css","base","_url","link","rej","prefix_css","string","version","style_element","stylesheet","importString","rules","css_string","gradio_css_infix","rule","is_dark_rule","selector","new_selector","s","mediaCssString","j","innerRule","ENTRY_CSS","FONTS","IndexComponent","_res","pending","get_index","create_custom_element","o","svelte","GradioApp","mutations","old_val","new_val"],"ignoreList":[],"sources":["../../../../client/js/dist/index.js","../../../../js/app/src/css.ts","../../../../js/app/src/main.ts"],"sourcesContent":["var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nvar 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}\nconst UPLOAD_URL = \"upload\";\nconst CONFIG_URL = \"config\";\nconst API_INFO_URL = \"info\";\nconst RUNTIME_URL = \"runtime\";\nconst SLEEPTIME_URL = \"sleeptime\";\nconst SPACE_FETCHER_URL = \"https://gradio-space-api-fetcher-v2.hf.space/api\";\nconst QUEUE_FULL_MSG = \"This application is currently busy. Please try again. \";\nconst BROKEN_CONNECTION_MSG = \"Connection errored out. \";\nconst CONFIG_ERROR_MSG = \"Could not resolve app config. \";\nconst SPACE_STATUS_ERROR_MSG = \"Could not get space status. \";\nconst API_INFO_ERROR_MSG = \"Could not get API info. \";\nconst SPACE_METADATA_ERROR_MSG = \"Space metadata could not be loaded. \";\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}\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 return false;\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}\nasync function resolve_config(endpoint) {\n const headers = this.options.hf_token ? { Authorization: `Bearer ${this.options.hf_token}` } : {};\n headers[\"Content-Type\"] = \"application/json\";\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 let config_root = resolve_root(endpoint, config.root, false);\n config.root = config_root;\n return { ...config, path };\n } else if (endpoint) {\n const response = await this.fetch(`${endpoint}/${CONFIG_URL}`, {\n headers\n });\n if ((response == null ? void 0 : response.status) === 200) {\n let config = await response.json();\n config.path = config.path ?? \"\";\n config.root = endpoint;\n return config;\n }\n throw new Error(CONFIG_ERROR_MSG);\n }\n throw new Error(CONFIG_ERROR_MSG);\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, hf_token) {\n const headers = {};\n if (hf_token) {\n headers.Authorization = `Bearer ${hf_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 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(\n \"Space metadata could not be loaded. \" + e.message\n );\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 transform_api_info(api_info, config, api_map) {\n const transformed_info = {\n named_endpoints: {},\n unnamed_endpoints: {}\n };\n Object.keys(api_info).forEach((category) => {\n if (category === \"named_endpoints\" || category === \"unnamed_endpoints\") {\n transformed_info[category] = {};\n Object.entries(api_info[category]).forEach(\n ([endpoint, { parameters, returns }]) => {\n var _a, _b;\n const dependencyIndex = config.dependencies.findIndex(\n (dep) => dep.api_name === endpoint || dep.api_name === endpoint.replace(\"/\", \"\")\n ) || api_map[endpoint.replace(\"/\", \"\")] || -1;\n const dependencyTypes = dependencyIndex !== -1 ? config.dependencies[dependencyIndex].types : { continuous: false, generator: false };\n if (dependencyIndex !== -1 && ((_b = (_a = config.dependencies[dependencyIndex]) == null ? void 0 : _a.inputs) == null ? void 0 : _b.length) !== parameters.length) {\n const components = config.dependencies[dependencyIndex].inputs.map(\n (input) => {\n var _a2;\n return (_a2 = config.components.find((c) => c.id === input)) == null ? void 0 : _a2.type;\n }\n );\n try {\n components.forEach((comp, idx) => {\n if (comp === \"state\") {\n const new_param = {\n component: \"state\",\n example: null,\n parameter_default: null,\n parameter_has_default: true,\n parameter_name: null,\n hidden: true\n };\n parameters.splice(idx, 0, new_param);\n }\n });\n } catch (e) {\n }\n }\n const transform_type = (data, component, serializer, signature_type) => ({\n ...data,\n description: get_description(data == null ? void 0 : data.type, serializer),\n type: get_type(data == null ? void 0 : data.type, component, serializer, signature_type) || \"\"\n });\n transformed_info[category][endpoint] = {\n parameters: parameters.map(\n (p) => transform_type(p, p == null ? void 0 : p.component, p == null ? void 0 : p.serializer, \"parameter\")\n ),\n returns: returns.map(\n (r) => transform_type(r, r == null ? void 0 : r.component, r == null ? void 0 : r.serializer, \"return\")\n ),\n type: dependencyTypes\n };\n }\n );\n }\n });\n return transformed_info;\n}\nfunction get_type(type, component, serializer, signature_type) {\n switch (type == null ? void 0 : 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 == null ? void 0 : type.description;\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 \"heartbeat\":\n return {\n type: \"heartbeat\"\n };\n case \"unexpected_error\":\n return {\n type: \"unexpected_error\",\n status: {\n queue,\n message: data.message,\n stage: \"error\",\n success: false\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 },\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 eta: data.eta\n }\n };\n }\n return { type: \"none\", status: { stage: \"error\", queue } };\n}\nconst map_data_to_params = (data, api_info) => {\n const parameters = Object.values(api_info.named_endpoints).flatMap(\n (values) => values.parameters\n );\n if (Array.isArray(data)) {\n if (data.length > parameters.length) {\n console.warn(\"Too many arguments provided for the endpoint.\");\n }\n return data;\n }\n const resolved_data = [];\n const provided_keys = Object.keys(data);\n parameters.forEach((param, index) => {\n if (data.hasOwnProperty(param.parameter_name)) {\n resolved_data[index] = data[param.parameter_name];\n } else if (param.parameter_has_default) {\n resolved_data[index] = param.parameter_default;\n } else {\n throw new Error(\n `No value provided for required parameter: ${param.parameter_name}`\n );\n }\n });\n provided_keys.forEach((key) => {\n if (!parameters.some((param) => param.parameter_name === key)) {\n throw new Error(\n `Parameter \\`${key}\\` is not a valid keyword argument. Please refer to the API for usage.`\n );\n }\n });\n resolved_data.forEach((value, idx) => {\n if (value === void 0 && !parameters[idx].parameter_has_default) {\n throw new Error(\n `No value provided for required parameter: ${parameters[idx].parameter_name}`\n );\n }\n });\n return resolved_data;\n};\nasync function view_api() {\n if (this.api_info)\n return this.api_info;\n const { hf_token } = this.options;\n const { config } = this;\n const headers = { \"Content-Type\": \"application/json\" };\n if (hf_token) {\n headers.Authorization = `Bearer ${hf_token}`;\n }\n if (!config) {\n return;\n }\n try {\n let response;\n if (semiver((config == null ? void 0 : config.version) || \"2.0.0\", \"3.30\") < 0) {\n response = await this.fetch(SPACE_FETCHER_URL, {\n method: \"POST\",\n body: JSON.stringify({\n serialize: false,\n config: JSON.stringify(config)\n }),\n headers\n });\n } else {\n response = await this.fetch(`${config == null ? void 0 : config.root}/${API_INFO_URL}`, {\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 return transform_api_info(api_info, config, this.api_map);\n } catch (e) {\n \"Could not get API info. \" + e.message;\n }\n}\nasync function upload_files(root_url, files, upload_id) {\n var _a;\n const headers = {};\n if ((_a = this == null ? void 0 : this.options) == null ? void 0 : _a.hf_token) {\n headers.Authorization = `Bearer ${this.options.hf_token}`;\n }\n const chunkSize = 1e3;\n const uploadResponses = [];\n let response;\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 const upload_url = upload_id ? `${root_url}/upload?upload_id=${upload_id}` : `${root_url}/${UPLOAD_URL}`;\n response = await this.fetch(upload_url, {\n method: \"POST\",\n body: formData,\n headers\n });\n } catch (e) {\n throw new Error(BROKEN_CONNECTION_MSG + e.message);\n }\n if (!response.ok) {\n const error_text = await response.text();\n return { error: `HTTP ${response.status}: ${error_text}` };\n }\n const output = await response.json();\n if (output) {\n uploadResponses.push(...output);\n }\n }\n return { files: uploadResponses };\n}\nasync function upload(file_data, root_url, upload_id, max_file_size) {\n let files = (Array.isArray(file_data) ? file_data : [file_data]).map(\n (file_data2) => file_data2.blob\n );\n const oversized_files = files.filter(\n (f) => f.size > (max_file_size ?? Infinity)\n );\n if (oversized_files.length) {\n throw new Error(\n `File size exceeds the maximum allowed size of ${max_file_size} bytes: ${oversized_files.map((f) => f.name).join(\", \")}`\n );\n }\n return await Promise.all(\n await this.upload_files(root_url, files, upload_id).then(\n async (response) => {\n if (response.error) {\n throw new Error(response.error);\n } else {\n if (response.files) {\n return response.files.map((f, i) => {\n const file = new FileData({\n ...file_data[i],\n path: f,\n url: root_url + \"/file=\" + f\n });\n return file;\n });\n }\n return [];\n }\n }\n )\n );\n}\nasync function prepare_files(files, is_stream) {\n return files.map(\n (f) => new FileData({\n path: f.name,\n orig_name: f.name,\n blob: f,\n size: f.size,\n mime_type: f.type,\n is_stream\n })\n );\n}\nclass FileData {\n constructor({\n path,\n url,\n orig_name,\n size,\n blob,\n is_stream,\n mime_type,\n alt_text\n }) {\n __publicField(this, \"path\");\n __publicField(this, \"url\");\n __publicField(this, \"orig_name\");\n __publicField(this, \"size\");\n __publicField(this, \"blob\");\n __publicField(this, \"is_stream\");\n __publicField(this, \"mime_type\");\n __publicField(this, \"alt_text\");\n __publicField(this, \"meta\", { _type: \"gradio.FileData\" });\n this.path = path;\n this.url = url;\n this.orig_name = orig_name;\n this.size = size;\n this.blob = url ? void 0 : blob;\n this.is_stream = is_stream;\n this.mime_type = mime_type;\n this.alt_text = alt_text;\n }\n}\nfunction update_object(object, newValue, stack) {\n while (stack.length > 1) {\n const key2 = stack.shift();\n if (typeof key2 === \"string\" || typeof key2 === \"number\") {\n object = object[key2];\n } else {\n throw new Error(\"Invalid key type\");\n }\n }\n const key = stack.shift();\n if (typeof key === \"string\" || typeof key === \"number\") {\n object[key] = newValue;\n } else {\n throw new Error(\"Invalid key type\");\n }\n}\nasync function walk_and_store_blobs(data, type = void 0, path = [], root = false, endpoint_info = void 0) {\n if (Array.isArray(data)) {\n let blob_refs = [];\n await Promise.all(\n data.map(async (item) => {\n var _a;\n let new_path = path.slice();\n new_path.push(item);\n const array_refs = await walk_and_store_blobs(\n data[item],\n root ? ((_a = endpoint_info == null ? void 0 : endpoint_info.parameters[item]) == null ? void 0 : _a.component) || void 0 : type,\n new_path,\n false,\n endpoint_info\n );\n blob_refs = blob_refs.concat(array_refs);\n })\n );\n return blob_refs;\n } else if (globalThis.Buffer && data instanceof globalThis.Buffer || data instanceof Blob) {\n const is_image = type === \"Image\";\n return [\n {\n path,\n blob: is_image ? false : new NodeBlob([data]),\n type\n }\n ];\n } else if (typeof data === \"object\" && data !== null) {\n let blob_refs = [];\n for (const key of Object.keys(data)) {\n const new_path = [...path, key];\n const value = data[key];\n blob_refs = blob_refs.concat(\n await walk_and_store_blobs(\n value,\n void 0,\n new_path,\n false,\n endpoint_info\n )\n );\n }\n if (!blob_refs.length && !(data instanceof Blob || data instanceof ArrayBuffer || data instanceof Uint8Array)) {\n return [\n {\n path,\n blob: new NodeBlob([JSON.stringify(data)]),\n type: typeof data\n }\n ];\n }\n return blob_refs;\n }\n return [];\n}\nfunction skip_queue(id, config) {\n var _a, _b;\n if (((_b = (_a = config == null ? void 0 : config.dependencies) == null ? void 0 : _a[id]) == null ? void 0 : _b.queue) !== null) {\n return !config.dependencies[id].queue;\n }\n return !config.enable_queue;\n}\nfunction post_message(message, origin) {\n return new Promise((res, _rej) => {\n const channel = new MessageChannel();\n channel.port1.onmessage = ({ data }) => {\n channel.port1.close();\n res(data);\n };\n window.parent.postMessage(message, origin, [channel.port2]);\n });\n}\nasync function handle_blob(endpoint, data, api_info) {\n const self = this;\n const blobRefs = await walk_and_store_blobs(\n data,\n void 0,\n [],\n true,\n api_info\n );\n const results = await Promise.all(\n blobRefs.map(async ({ path, blob, type }) => {\n if (!blob)\n return { path, type };\n const response = await self.upload_files(endpoint, [blob]);\n const file_url = response.files && response.files[0];\n return {\n path,\n file_url,\n type,\n name: blob instanceof File ? blob == null ? void 0 : blob.name : void 0\n };\n })\n );\n results.forEach(({ path, file_url, type, name }) => {\n if (type === \"Gallery\") {\n update_object(data, file_url, path);\n } else if (file_url) {\n const file = new FileData({ path: file_url, orig_name: name });\n update_object(data, file, path);\n }\n });\n return data;\n}\nasync function post_data(url, body, additional_headers) {\n const headers = { \"Content-Type\": \"application/json\" };\n if (this.options.hf_token) {\n headers.Authorization = `Bearer ${this.options.hf_token}`;\n }\n try {\n var response = await this.fetch(url, {\n method: \"POST\",\n body: JSON.stringify(body),\n headers: { ...headers, ...additional_headers }\n });\n } catch (e) {\n return [{ error: BROKEN_CONNECTION_MSG }, 500];\n }\n let output;\n let status;\n try {\n output = await response.json();\n status = response.status;\n } catch (e) {\n output = { error: `Could not parse server response: ${e}` };\n status = 500;\n }\n return [output, status];\n}\nasync function predict(endpoint, data) {\n let data_returned = false;\n let status_complete = false;\n let dependency;\n if (!this.config) {\n throw new Error(\"Could not resolve app config\");\n }\n if (typeof endpoint === \"number\") {\n dependency = this.config.dependencies[endpoint];\n } else {\n const trimmed_endpoint = endpoint.replace(/^\\//, \"\");\n dependency = this.config.dependencies[this.api_map[trimmed_endpoint]];\n }\n if (dependency == null ? void 0 : 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(async (resolve, reject) => {\n const app = this.submit(endpoint, data);\n let result;\n app.on(\"data\", (d) => {\n if (status_complete) {\n app.destroy();\n resolve(d);\n }\n data_returned = true;\n result = d;\n }).on(\"status\", (status) => {\n if (status.stage === \"error\")\n reject(status);\n if (status.stage === \"complete\") {\n status_complete = true;\n if (data_returned) {\n app.destroy();\n resolve(result);\n }\n }\n });\n });\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: SPACE_STATUS_ERROR_MSG,\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}\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, hf_token) {\n const headers = {};\n if (hf_token) {\n headers.Authorization = `Bearer ${hf_token}`;\n }\n try {\n const res = await fetch(\n `https://huggingface.co/api/spaces/${space_id}/${RUNTIME_URL}`,\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.current;\n } catch (e) {\n throw new Error(e.message);\n }\n}\nasync function set_space_timeout(space_id, timeout, hf_token) {\n const headers = {};\n if (hf_token) {\n headers.Authorization = `Bearer ${hf_token}`;\n }\n const body = {\n seconds: timeout\n };\n try {\n const res = await fetch(\n `https://huggingface.co/api/spaces/${space_id}/${SLEEPTIME_URL}`,\n {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", ...headers },\n body: JSON.stringify(body)\n }\n );\n if (res.status !== 200) {\n throw new Error(\n \"Could not set sleep timeout on duplicated Space. Please visit *ADD HF LINK TO SETTINGS* to set a timeout manually to reduce billing charges.\"\n );\n }\n const response = await res.json();\n return response;\n } catch (e) {\n throw new Error(e.message);\n }\n}\nconst hardware_types = [\n \"cpu-basic\",\n \"cpu-upgrade\",\n \"cpu-xl\",\n \"t4-small\",\n \"t4-medium\",\n \"a10g-small\",\n \"a10g-large\",\n \"a10g-largex2\",\n \"a10g-largex4\",\n \"a100-large\",\n \"zero-a10g\",\n \"h100\",\n \"h100x8\"\n];\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 \"Content-Type\": \"application/json\"\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 let original_hardware;\n try {\n if (!hardware) {\n original_hardware = await get_space_hardware(app_reference, hf_token);\n }\n } catch (e) {\n throw Error(SPACE_METADATA_ERROR_MSG + e.message);\n }\n const requested_hardware = hardware || original_hardware || \"cpu-basic\";\n body.hardware = requested_hardware;\n try {\n const response = await fetch(\n `https://huggingface.co/api/spaces/${app_reference}/duplicate`,\n {\n method: \"POST\",\n headers,\n body: JSON.stringify(body)\n }\n );\n if (response.status === 409) {\n try {\n const client2 = await Client.connect(`${user}/${space_name}`, options);\n return client2;\n } catch (error) {\n console.error(\"Failed to connect Client instance:\", error);\n throw error;\n }\n } else if (response.status !== 200) {\n throw new Error(response.statusText);\n }\n const duplicated_space = await response.json();\n await set_space_timeout(`${user}/${space_name}`, timeout || 300, hf_token);\n return await Client.connect(\n get_space_reference(duplicated_space.url),\n options\n );\n } catch (e) {\n throw new Error(e);\n }\n}\nfunction get_space_reference(url) {\n const regex = /https:\\/\\/huggingface.co\\/spaces\\/([^/]+\\/[^/]+)/;\n const match = url.match(regex);\n if (match) {\n return match[1];\n }\n}\nasync function open_stream() {\n let {\n event_callbacks,\n unclosed_events,\n pending_stream_messages,\n stream_status,\n config,\n jwt\n } = this;\n if (!config) {\n throw new Error(\"Could not resolve app config\");\n }\n stream_status.open = true;\n let stream = null;\n let params = new URLSearchParams({\n session_hash: this.session_hash\n }).toString();\n let url = new URL(`${config.root}/queue/data?${params}`);\n if (jwt) {\n url.searchParams.set(\"__sign\", jwt);\n }\n stream = await this.stream(url);\n if (!stream) {\n console.warn(\"Cannot connect to SSE endpoint: \" + url.toString());\n return;\n }\n stream.onmessage = async function(event) {\n let _data = JSON.parse(event.data);\n if (_data.msg === \"close_stream\") {\n close_stream(stream_status, stream);\n return;\n }\n const event_id = _data.event_id;\n if (!event_id) {\n await Promise.all(\n Object.keys(event_callbacks).map(\n (event_id2) => event_callbacks[event_id2](_data)\n )\n );\n } else if (event_callbacks[event_id] && config) {\n if (_data.msg === \"process_completed\" && [\"sse\", \"sse_v1\", \"sse_v2\", \"sse_v2.1\"].includes(config.protocol)) {\n unclosed_events.delete(event_id);\n if (unclosed_events.size === 0) {\n close_stream(stream_status, stream);\n }\n }\n let fn2 = event_callbacks[event_id];\n if (typeof window !== \"undefined\") {\n window.setTimeout(fn2, 0, _data);\n } else {\n setImmediate(fn2, _data);\n }\n } else {\n if (!pending_stream_messages[event_id]) {\n pending_stream_messages[event_id] = [];\n }\n pending_stream_messages[event_id].push(_data);\n }\n };\n stream.onerror = async function() {\n await Promise.all(\n Object.keys(event_callbacks).map(\n (event_id) => event_callbacks[event_id]({\n msg: \"unexpected_error\",\n message: BROKEN_CONNECTION_MSG\n })\n )\n );\n close_stream(stream_status, stream);\n };\n}\nfunction close_stream(stream_status, stream) {\n if (stream_status && stream) {\n stream_status.open = false;\n stream == null ? void 0 : stream.close();\n }\n}\nfunction apply_diff_stream(pending_diff_streams, event_id, data) {\n let is_first_generation = !pending_diff_streams[event_id];\n if (is_first_generation) {\n pending_diff_streams[event_id] = [];\n data.data.forEach((value, i) => {\n pending_diff_streams[event_id][i] = value;\n });\n } else {\n data.data.forEach((value, i) => {\n let new_data = apply_diff(pending_diff_streams[event_id][i], value);\n pending_diff_streams[event_id][i] = new_data;\n data.data[i] = new_data;\n });\n }\n}\nfunction apply_diff(obj, diff) {\n diff.forEach(([action, path, value]) => {\n obj = apply_edit(obj, path, action, value);\n });\n return obj;\n}\nfunction apply_edit(target, path, action, value) {\n if (path.length === 0) {\n if (action === \"replace\") {\n return value;\n } else if (action === \"append\") {\n return target + value;\n }\n throw new Error(`Unsupported action: ${action}`);\n }\n let current = target;\n for (let i = 0; i < path.length - 1; i++) {\n current = current[path[i]];\n }\n const last_path = path[path.length - 1];\n switch (action) {\n case \"replace\":\n current[last_path] = value;\n break;\n case \"append\":\n current[last_path] += value;\n break;\n case \"add\":\n if (Array.isArray(current)) {\n current.splice(Number(last_path), 0, value);\n } else {\n current[last_path] = value;\n }\n break;\n case \"delete\":\n if (Array.isArray(current)) {\n current.splice(Number(last_path), 1);\n } else {\n delete current[last_path];\n }\n break;\n default:\n throw new Error(`Unknown action: ${action}`);\n }\n return target;\n}\nfunction submit(endpoint, data, event_data, trigger_id) {\n try {\n let fire_event = function(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 }, on = function(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 }, off = function(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 }, destroy = function() {\n var _a;\n for (const event_type in listener_map) {\n listener_map && ((_a = listener_map[event_type]) == null ? void 0 : _a.forEach((fn2) => {\n off(event_type, fn2);\n }));\n }\n };\n const { hf_token } = this.options;\n const {\n fetch: fetch2,\n app_reference,\n config,\n session_hash,\n api_info,\n api_map,\n stream_status,\n pending_stream_messages,\n pending_diff_streams,\n event_callbacks,\n unclosed_events,\n post_data: post_data2\n } = this;\n if (!api_info)\n throw new Error(\"No API found\");\n if (!config)\n throw new Error(\"Could not resolve app config\");\n let { fn_index, endpoint_info, dependency } = get_endpoint_info(\n api_info,\n endpoint,\n api_map,\n config\n );\n let resolved_data = map_data_to_params(data, api_info);\n let websocket;\n let stream;\n let protocol = config.protocol ?? \"ws\";\n const _endpoint = typeof endpoint === \"number\" ? \"/predict\" : endpoint;\n let payload;\n let event_id = null;\n let complete = false;\n const listener_map = {};\n let last_status = {};\n let url_params = typeof window !== \"undefined\" ? new URLSearchParams(window.location.search).toString() : \"\";\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 let cancel_request = {};\n if (protocol === \"ws\") {\n if (websocket && websocket.readyState === 0) {\n websocket.addEventListener(\"open\", () => {\n websocket.close();\n });\n } else {\n websocket.close();\n }\n cancel_request = { fn_index, session_hash };\n } else {\n stream == null ? void 0 : stream.close();\n cancel_request = { event_id };\n }\n try {\n if (!config) {\n throw new Error(\"Could not resolve app config\");\n }\n await fetch2(`${config.root}/reset`, {\n headers: { \"Content-Type\": \"application/json\" },\n method: \"POST\",\n body: JSON.stringify(cancel_request)\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 this.handle_blob(config.root, resolved_data, endpoint_info).then(\n async (_payload) => {\n var _a;\n payload = {\n data: _payload || [],\n event_data,\n fn_index,\n trigger_id\n };\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 `${config.root}/run${_endpoint.startsWith(\"/\") ? _endpoint : `/${_endpoint}`}${url_params ? \"?\" + url_params : \"\"}`,\n {\n ...payload,\n session_hash\n }\n ).then(([output, status_code]) => {\n const data2 = 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 event_data,\n trigger_id\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 if (protocol == \"ws\") {\n const { ws_protocol, host } = await process_endpoint(\n app_reference,\n hf_token\n );\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(\n `${ws_protocol}://${resolve_root(\n host,\n config.path,\n true\n )}/queue/join${url_params ? \"?\" + url_params : \"\"}`\n );\n if (this.jwt) {\n url.searchParams.set(\"__sign\", this.jwt);\n }\n websocket = new WebSocket(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: data2.data,\n endpoint: _endpoint,\n fn_index,\n event_data,\n trigger_id\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 } else if (protocol == \"sse\") {\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 var params = new URLSearchParams({\n fn_index: fn_index.toString(),\n session_hash\n }).toString();\n let url = new URL(\n `${config.root}/queue/join?${url_params ? url_params + \"&\" : \"\"}${params}`\n );\n if (this.jwt) {\n url.searchParams.set(\"__sign\", this.jwt);\n }\n stream = await this.stream(url);\n if (!stream) {\n return Promise.reject(\n new Error(\"Cannot connect to SSE endpoint: \" + url.toString())\n );\n }\n stream.onmessage = async 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 stream == null ? void 0 : stream.close();\n }\n } else if (type === \"data\") {\n event_id = _data.event_id;\n let [_, status2] = await post_data2(`${config.root}/queue/data`, {\n ...payload,\n session_hash,\n event_id\n });\n if (status2 !== 200) {\n fire_event({\n type: \"status\",\n stage: \"error\",\n message: BROKEN_CONNECTION_MSG,\n queue: true,\n endpoint: _endpoint,\n fn_index,\n time: /* @__PURE__ */ new Date()\n });\n stream == null ? void 0 : stream.close();\n }\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: data2.data,\n endpoint: _endpoint,\n fn_index,\n event_data,\n trigger_id\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 stream == null ? void 0 : stream.close();\n }\n }\n };\n } else if (protocol == \"sse_v1\" || protocol == \"sse_v2\" || protocol == \"sse_v2.1\" || protocol == \"sse_v3\") {\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 hostname = \"\";\n if (typeof window !== \"undefined\") {\n hostname = (_a = window == null ? void 0 : window.location) == null ? void 0 : _a.hostname;\n }\n let hfhubdev = \"dev.spaces.huggingface.tech\";\n const origin = hostname.includes(\".dev.\") ? `https://moon-${hostname.split(\".\")[1]}.${hfhubdev}` : `https://huggingface.co`;\n const zerogpu_auth_promise = dependency.zerogpu && window.parent != window && config.space_id ? post_message(\"zerogpu-headers\", origin) : Promise.resolve(null);\n const post_data_promise = zerogpu_auth_promise.then((headers) => {\n return post_data2(\n `${config.root}/queue/join?${url_params}`,\n {\n ...payload,\n session_hash\n },\n headers\n );\n });\n post_data_promise.then(async ([response, status]) => {\n if (status === 503) {\n fire_event({\n type: \"status\",\n stage: \"error\",\n message: QUEUE_FULL_MSG,\n queue: true,\n endpoint: _endpoint,\n fn_index,\n time: /* @__PURE__ */ new Date()\n });\n } else if (status !== 200) {\n fire_event({\n type: \"status\",\n stage: \"error\",\n message: BROKEN_CONNECTION_MSG,\n queue: true,\n endpoint: _endpoint,\n fn_index,\n time: /* @__PURE__ */ new Date()\n });\n } else {\n event_id = response.event_id;\n let callback = async function(_data) {\n try {\n const { type, status: status2, data: data2 } = handle_message(\n _data,\n last_status[fn_index]\n );\n if (type == \"heartbeat\") {\n return;\n }\n if (type === \"update\" && status2 && !complete) {\n fire_event({\n type: \"status\",\n endpoint: _endpoint,\n fn_index,\n time: /* @__PURE__ */ new Date(),\n ...status2\n });\n } else if (type === \"complete\") {\n complete = status2;\n } else if (type == \"unexpected_error\") {\n console.error(\"Unexpected error\", status2 == null ? void 0 : status2.message);\n fire_event({\n type: \"status\",\n stage: \"error\",\n message: (status2 == null ? void 0 : status2.message) || \"An Unexpected Error Occurred!\",\n queue: true,\n endpoint: _endpoint,\n fn_index,\n time: /* @__PURE__ */ new Date()\n });\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 return;\n } else if (type === \"generating\") {\n fire_event({\n type: \"status\",\n time: /* @__PURE__ */ new Date(),\n ...status2,\n stage: status2 == null ? void 0 : status2.stage,\n queue: true,\n endpoint: _endpoint,\n fn_index\n });\n if (data2 && [\"sse_v2\", \"sse_v2.1\", \"sse_v3\"].includes(protocol)) {\n apply_diff_stream(pending_diff_streams, event_id, data2);\n }\n }\n if (data2) {\n fire_event({\n type: \"data\",\n time: /* @__PURE__ */ new Date(),\n data: data2.data,\n endpoint: _endpoint,\n fn_index\n });\n if (data2.render_config) {\n fire_event({\n type: \"render\",\n data: data2.render_config,\n endpoint: _endpoint,\n fn_index\n });\n }\n if (complete) {\n fire_event({\n type: \"status\",\n time: /* @__PURE__ */ new Date(),\n ...complete,\n stage: status2 == null ? void 0 : status2.stage,\n queue: true,\n endpoint: _endpoint,\n fn_index\n });\n }\n }\n if ((status2 == null ? void 0 : status2.stage) === \"complete\" || (status2 == null ? void 0 : status2.stage) === \"error\") {\n if (event_callbacks[event_id]) {\n delete event_callbacks[event_id];\n }\n if (event_id in pending_diff_streams) {\n delete pending_diff_streams[event_id];\n }\n }\n } catch (e) {\n console.error(\"Unexpected client exception\", e);\n fire_event({\n type: \"status\",\n stage: \"error\",\n message: \"An Unexpected Error Occurred!\",\n queue: true,\n endpoint: _endpoint,\n fn_index,\n time: /* @__PURE__ */ new Date()\n });\n if ([\"sse_v2\", \"sse_v2.1\"].includes(protocol)) {\n close_stream(stream_status, stream);\n stream_status.open = false;\n }\n }\n };\n if (event_id in pending_stream_messages) {\n pending_stream_messages[event_id].forEach(\n (msg) => callback(msg)\n );\n delete pending_stream_messages[event_id];\n }\n event_callbacks[event_id] = callback;\n unclosed_events.add(event_id);\n if (!stream_status.open) {\n await this.open_stream();\n }\n }\n });\n }\n }\n );\n return { on, off, cancel, destroy };\n } catch (error) {\n console.error(\"Submit function encountered an error:\", error);\n throw error;\n }\n}\nfunction get_endpoint_info(api_info, endpoint, api_map, config) {\n let fn_index;\n let endpoint_info;\n let dependency;\n if (typeof endpoint === \"number\") {\n fn_index = endpoint;\n endpoint_info = api_info.unnamed_endpoints[fn_index];\n dependency = config.dependencies[endpoint];\n } else {\n const trimmed_endpoint = endpoint.replace(/^\\//, \"\");\n fn_index = api_map[trimmed_endpoint];\n endpoint_info = api_info.named_endpoints[endpoint.trim()];\n dependency = config.dependencies[api_map[trimmed_endpoint]];\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 return { fn_index, endpoint_info, dependency };\n}\nclass NodeBlob extends Blob {\n constructor(blobParts, options) {\n super(blobParts, options);\n }\n}\nclass Client {\n constructor(app_reference, options = {}) {\n __publicField(this, \"app_reference\");\n __publicField(this, \"options\");\n __publicField(this, \"config\");\n __publicField(this, \"api_info\");\n __publicField(this, \"api_map\", {});\n __publicField(this, \"session_hash\", Math.random().toString(36).substring(2));\n __publicField(this, \"jwt\", false);\n __publicField(this, \"last_status\", {});\n // streaming\n __publicField(this, \"stream_status\", { open: false });\n __publicField(this, \"pending_stream_messages\", {});\n __publicField(this, \"pending_diff_streams\", {});\n __publicField(this, \"event_callbacks\", {});\n __publicField(this, \"unclosed_events\", /* @__PURE__ */ new Set());\n __publicField(this, \"heartbeat_event\", null);\n __publicField(this, \"view_api\");\n __publicField(this, \"upload_files\");\n __publicField(this, \"upload\");\n __publicField(this, \"handle_blob\");\n __publicField(this, \"post_data\");\n __publicField(this, \"submit\");\n __publicField(this, \"predict\");\n __publicField(this, \"open_stream\");\n __publicField(this, \"resolve_config\");\n this.app_reference = app_reference;\n this.options = options;\n this.view_api = view_api.bind(this);\n this.upload_files = upload_files.bind(this);\n this.handle_blob = handle_blob.bind(this);\n this.post_data = post_data.bind(this);\n this.submit = submit.bind(this);\n this.predict = predict.bind(this);\n this.open_stream = open_stream.bind(this);\n this.resolve_config = resolve_config.bind(this);\n this.upload = upload.bind(this);\n }\n fetch(input, init) {\n return fetch(input, init);\n }\n async stream(url) {\n if (typeof window === \"undefined\" || typeof EventSource === \"undefined\") {\n try {\n const EventSourceModule = await import(\"eventsource\");\n return new EventSourceModule.default(url.toString());\n } catch (error) {\n console.error(\"Failed to load EventSource module:\", error);\n throw error;\n }\n } else {\n return new EventSource(url.toString());\n }\n }\n async init() {\n var _a;\n if ((typeof window === \"undefined\" || !(\"WebSocket\" in window)) && !global.WebSocket) {\n const ws = await import(\"./wrapper-CviSselG.js\");\n NodeBlob = (await import(\"node:buffer\")).Blob;\n global.WebSocket = ws.WebSocket;\n }\n try {\n await this._resolve_config().then(async ({ config }) => {\n this.config = config;\n if (config.space_id && this.options.hf_token) {\n this.jwt = await get_jwt(config.space_id, this.options.hf_token);\n }\n if (this.config && this.config.connect_heartbeat) {\n const heartbeat_url = new URL(\n `${this.config.root}/heartbeat/${this.session_hash}`\n );\n if (this.jwt) {\n heartbeat_url.searchParams.set(\"__sign\", this.jwt);\n }\n this.heartbeat_event = await this.stream(heartbeat_url);\n }\n });\n } catch (e) {\n throw Error(CONFIG_ERROR_MSG + e.message);\n }\n this.api_info = await this.view_api();\n this.api_map = map_names_to_ids(((_a = this.config) == null ? void 0 : _a.dependencies) || []);\n }\n static async connect(app_reference, options = {}) {\n const client2 = new this(app_reference, options);\n await client2.init();\n return client2;\n }\n close() {\n var _a;\n (_a = this.heartbeat_event) == null ? void 0 : _a.close();\n }\n static async duplicate(app_reference, options = {}) {\n return duplicate(app_reference, options);\n }\n async _resolve_config() {\n const { http_protocol, host, space_id } = await process_endpoint(\n this.app_reference,\n this.options.hf_token\n );\n const { status_callback } = this.options;\n let config;\n try {\n config = await this.resolve_config(`${http_protocol}//${host}`);\n if (!config) {\n throw new Error(CONFIG_ERROR_MSG);\n }\n return this.config_success(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 this.handle_space_success\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 }\n async config_success(_config) {\n this.config = _config;\n if (typeof window !== \"undefined\") {\n if (window.location.protocol === \"https:\") {\n this.config.root = this.config.root.replace(\"http://\", \"https://\");\n }\n }\n if (this.config.auth_required) {\n return this.prepare_return_obj();\n }\n try {\n this.api_info = await this.view_api();\n } catch (e) {\n console.error(API_INFO_ERROR_MSG + e.message);\n }\n return this.prepare_return_obj();\n }\n async handle_space_success(status) {\n const { status_callback } = this.options;\n if (status_callback)\n status_callback(status);\n if (status.status === \"running\") {\n try {\n this.config = await this._resolve_config();\n if (!this.config) {\n throw new Error(CONFIG_ERROR_MSG);\n }\n const _config = await this.config_success(this.config);\n return _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 }\n async component_server(component_id, fn_name, data) {\n var _a;\n if (!this.config) {\n throw new Error(CONFIG_ERROR_MSG);\n }\n const headers = {};\n const { hf_token } = this.options;\n const { session_hash } = this;\n if (hf_token) {\n headers.Authorization = `Bearer ${this.options.hf_token}`;\n }\n let root_url;\n let component = this.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 = this.config.root;\n }\n let body;\n if (\"binary\" in data) {\n body = new FormData();\n for (const key in data.data) {\n if (key === \"binary\")\n continue;\n body.append(key, data.data[key]);\n }\n body.set(\"component_id\", component_id.toString());\n body.set(\"fn_name\", fn_name);\n body.set(\"session_hash\", session_hash);\n } else {\n body = JSON.stringify({\n data,\n component_id,\n fn_name,\n session_hash\n });\n headers[\"Content-Type\"] = \"application/json\";\n }\n if (hf_token) {\n headers.Authorization = `Bearer ${hf_token}`;\n }\n try {\n const response = await this.fetch(`${root_url}/component_server/`, {\n method: \"POST\",\n body,\n headers\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 } catch (e) {\n console.warn(e);\n }\n }\n prepare_return_obj() {\n return {\n config: this.config,\n predict: this.predict,\n submit: this.submit,\n view_api: this.view_api,\n component_server: this.component_server\n };\n }\n}\nasync function client(app_reference, options = {}) {\n return await Client.connect(app_reference, options);\n}\nasync function duplicate_space(app_reference, options) {\n return await Client.duplicate(app_reference, options);\n}\nexport {\n Client,\n FileData,\n client,\n duplicate_space as duplicate,\n predict,\n prepare_files,\n submit,\n upload,\n upload_files\n};\n","let supports_adopted_stylesheets = false;\n\nif (\n\t\"attachShadow\" in Element.prototype &&\n\t\"adoptedStyleSheets\" in Document.prototype\n) {\n\t// Both Shadow DOM and adoptedStyleSheets are supported\n\tconst shadow_root_test = document\n\t\t.createElement(\"div\")\n\t\t.attachShadow({ mode: \"open\" });\n\tsupports_adopted_stylesheets = \"adoptedStyleSheets\" in shadow_root_test;\n}\n\nexport function mount_css(url: string, target: HTMLElement): Promise {\n\tconst base = new URL(import.meta.url).origin;\n\tconst _url = new URL(url, base).href;\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\nexport function prefix_css(\n\tstring: string,\n\tversion: string,\n\tstyle_element = document.createElement(\"style\")\n): HTMLStyleElement | null {\n\tif (!supports_adopted_stylesheets) return null;\n\tstyle_element.remove();\n\n\tconst stylesheet = new CSSStyleSheet();\n\tstylesheet.replaceSync(string);\n\n\tlet importString = \"\";\n\tstring = string.replace(/@import\\s+url\\((.*?)\\);\\s*/g, (match, url) => {\n\t\timportString += `@import url(${url});\\n`;\n\t\treturn \"\"; // remove and store any @import statements from the CSS\n\t});\n\n\tconst rules = stylesheet.cssRules;\n\n\tlet css_string = \"\";\n\tlet gradio_css_infix = `gradio-app .gradio-container.gradio-container-${version} .contain `;\n\n\tfor (let i = 0; i < rules.length; i++) {\n\t\tconst rule = rules[i];\n\n\t\tlet is_dark_rule = rule.cssText.includes(\".dark\");\n\t\tif (rule instanceof CSSStyleRule) {\n\t\t\tconst selector = rule.selectorText;\n\t\t\tif (selector) {\n\t\t\t\tconst new_selector = selector\n\t\t\t\t\t.replace(\".dark\", \"\")\n\t\t\t\t\t.split(\",\")\n\t\t\t\t\t.map(\n\t\t\t\t\t\t(s) =>\n\t\t\t\t\t\t\t`${is_dark_rule ? \".dark\" : \"\"} ${gradio_css_infix} ${s.trim()} `\n\t\t\t\t\t)\n\t\t\t\t\t.join(\",\");\n\n\t\t\t\tcss_string += rule.cssText;\n\t\t\t\tcss_string += rule.cssText.replace(selector, new_selector);\n\t\t\t}\n\t\t} else if (rule instanceof CSSMediaRule) {\n\t\t\tlet mediaCssString = `@media ${rule.media.mediaText} {`;\n\t\t\tfor (let j = 0; j < rule.cssRules.length; j++) {\n\t\t\t\tconst innerRule = rule.cssRules[j];\n\t\t\t\tif (innerRule instanceof CSSStyleRule) {\n\t\t\t\t\tlet is_dark_rule = innerRule.cssText.includes(\".dark \");\n\t\t\t\t\tconst selector = innerRule.selectorText;\n\t\t\t\t\tconst new_selector = selector\n\t\t\t\t\t\t.replace(\".dark\", \"\")\n\t\t\t\t\t\t.split(\",\")\n\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t(s) =>\n\t\t\t\t\t\t\t\t`${\n\t\t\t\t\t\t\t\t\tis_dark_rule ? \".dark\" : \"\"\n\t\t\t\t\t\t\t\t} ${gradio_css_infix} ${s.trim()} `\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join(\",\");\n\t\t\t\t\tmediaCssString += innerRule.cssText.replace(selector, new_selector);\n\t\t\t\t}\n\t\t\t}\n\t\t\tmediaCssString += \"}\";\n\t\t\tcss_string += mediaCssString;\n\t\t} else if (rule instanceof CSSKeyframesRule) {\n\t\t\tcss_string += `@keyframes ${rule.name} {`;\n\t\t\tfor (let j = 0; j < rule.cssRules.length; j++) {\n\t\t\t\tconst innerRule = rule.cssRules[j];\n\t\t\t\tif (innerRule instanceof CSSKeyframeRule) {\n\t\t\t\t\tcss_string += `${innerRule.keyText} { ${innerRule.style.cssText} }`;\n\t\t\t\t}\n\t\t\t}\n\t\t\tcss_string += \"}\";\n\t\t} else if (rule instanceof CSSFontFaceRule) {\n\t\t\tcss_string += `@font-face { ${rule.style.cssText} }`;\n\t\t}\n\t}\n\tcss_string = importString + css_string;\n\tstyle_element.textContent = css_string;\n\n\tdocument.head.appendChild(style_element);\n\treturn style_element;\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 } 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;\nlet _res: (value?: unknown) => void;\nlet pending = new Promise((res) => {\n\t_res = res;\n});\nasync function get_index(): Promise {\n\tIndexComponent = (await import(\"./Index.svelte\")).default;\n\t_res();\n}\n\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\tawait get_index();\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\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\tasync attributeChangedCallback(\n\t\t\tname: string,\n\t\t\told_val: string,\n\t\t\tnew_val: string\n\t\t): Promise {\n\t\t\tawait pending;\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\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-Dp5KDKrI.js"}