1import { p as prop, a as set_attribute, e as init, i as if_block, k as each, u as index, b as set_class, h as clsx, f as set_style, d as bind_this, t as remove_input_defaults, v as set_checked, F as set_value } from './i18n-CMo5lpzy.js'; 2import { R as push, t as template_effect, a as append, T as pop, U as flushSync, f as from_svg, a4 as createEventDispatcher, S as first_child, X as sibling, V as child, Y as reset, a8 as next, a0 as set_text, Z as event, W as from_html, a7 as text, G as deep_read_state, z as untrack, w as get, a1 as legacy_pre_effect, a2 as legacy_pre_effect_reset, a3 as mutable_source, x as set, a6 as comment, ad as derived_safe_equal, aa as onMount, M as tick, b3 as invalidate_inner_signals, a5 as user_derived, at as to_array, as as mutate, aw as $window } from './index-BvBk1Iap.js'; 3import { b as bubble_event } from './misc-ByVveAau.js'; 4import { C as Clear } from './clear-D8gK36Dy.js'; 5import { a as api_logo } from './Blocks-Wq-vWI14.js'; 6import { B as Button } from './Button-CH2w4_A4.js'; 7import { L as Loader } from './index-Lz7fsHFt.js'; 8import './ScrollFade.svelte_svelte_type_style_lang-Xm-PLg9E.js'; 9import './StreamingBar.svelte_svelte_type_style_lang-CdFIGsJa.js'; 10import { B as Block } from './Block-Bx3BikCN.js'; 11import { h as html } from './html-CdUEtR5E.js'; 12import { a as bind_checked } from './input-C317uaXR.js'; 13import './size-Cu4PabCL.js'; 14import './state.svelte-CCPBiyik.js'; 15import './utils.svelte-CYLB_jIA.js'; 16import './clone-DaB-S2nH.js'; 17import './index-BJk8VOjP.js'; 18import './index-DnoGeqVF.js'; 19import './snippet-Bl5YVoCg.js'; 20import './Image-CDw5qb5O.js'; 21/* empty css */ 22/* empty css */ 23import './Clear-Dgs5UhTO.js'; 24import './index-C7e-J7CF.js'; 25 26var root$e = from_svg(`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path fill="currentColor" d="M12.1 2a9.8 9.8 0 0 0-5.4 1.6l6.4 6.4a2.1 2.1 0 0 1 .2 3a2.1 2.1 0 0 1-3-.2L3.7 6.4A9.84 9.84 0 0 0 2 12.1a10.14 10.14 0 0 0 10.1 10.1a11 11 0 0 0 2.6-.3l6.7 6.7a5 5 0 0 0 7.1-7.1l-6.7-6.7a11 11 0 0 0 .3-2.6A10 10 0 0 0 12.1 2m8 10.1a7.6 7.6 0 0 1-.3 2.1l-.3 1.1l.8.8l6.7 6.7a2.88 2.88 0 0 1 .9 2.1A2.72 2.72 0 0 1 27 27a2.9 2.9 0 0 1-4.2 0l-6.7-6.7l-.8-.8l-1.1.3a7.6 7.6 0 0 1-2.1.3a8.27 8.27 0 0 1-5.7-2.3A7.63 7.63 0 0 1 4 12.1a8.3 8.3 0 0 1 .3-2.2l4.4 4.4a4.14 4.14 0 0 0 5.9.2a4.14 4.14 0 0 0-.2-5.9L10 4.2a6.5 6.5 0 0 1 2-.3a8.27 8.27 0 0 1 5.7 2.3a8.5 8.5 0 0 1 2.4 5.9"></path></svg>`); 27 28function Tool($$anchor, $$props) { 29 push($$props, false); 30 31 let icon_size = prop($$props, 'icon_size', 12, 16); 32 33 var $$exports = { 34 get icon_size() { 35 return icon_size(); 36 }, 37 38 set icon_size($$value) { 39 icon_size($$value); 40 flushSync(); 41 } 42 }; 43 44 var svg = root$e(); 45 46 template_effect(() => { 47 set_attribute(svg, 'width', icon_size()); 48 set_attribute(svg, 'height', icon_size()); 49 }); 50 51 append($$anchor, svg); 52 53 return pop($$exports); 54} 55 56var root$d = from_svg(`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path fill="currentColor" d="M17.74 30L16 29l4-7h6a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h9v2H6a4 4 0 0 1-4-4V8a4 4 0 0 1 4-4h20a4 4 0 0 1 4 4v12a4 4 0 0 1-4 4h-4.84Z"></path><path fill="currentColor" d="M8 10h16v2H8zm0 6h10v2H8z"></path></svg>`); 57 58function Prompt($$anchor, $$props) { 59 push($$props, false); 60 61 let icon_size = prop($$props, 'icon_size', 12, 16); 62 63 var $$exports = { 64 get icon_size() { 65 return icon_size(); 66 }, 67 68 set icon_size($$value) { 69 icon_size($$value); 70 flushSync(); 71 } 72 }; 73 74 var svg = root$d(); 75 76 template_effect(() => { 77 set_attribute(svg, 'width', icon_size()); 78 set_attribute(svg, 'height', icon_size()); 79 }); 80 81 append($$anchor, svg); 82 83 return pop($$exports); 84} 85 86var root$c = from_svg(`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path fill="currentColor" d="M19 10h7v2h-7zm0 5h7v2h-7zm0 5h7v2h-7z"></path><path fill="currentColor" d="M28 5H4a2 2 0 0 0-2 2v18a2 2 0 0 0 2 2h24a2.003 2.003 0 0 0 2-2V7a2 2 0 0 0-2-2M4 7h11v18H4Zm13 18V7h11l.002 18Z"></path></svg>`); 87 88function Resource($$anchor, $$props) { 89 push($$props, false); 90 91 let icon_size = prop($$props, 'icon_size', 12, 16); 92 93 var $$exports = { 94 get icon_size() { 95 return icon_size(); 96 }, 97 98 set icon_size($$value) { 99 icon_size($$value); 100 flushSync(); 101 } 102 }; 103 104 var svg = root$c(); 105 106 template_effect(() => { 107 set_attribute(svg, 'width', icon_size()); 108 set_attribute(svg, 'height', icon_size()); 109 }); 110 111 append($$anchor, svg); 112 113 return pop($$exports); 114} 115 116var root_1$7 = from_html(`<div class="wrap prose svelte-1m8i4xt"><h1>API Docs</h1> <p class="attention svelte-1m8i4xt">No API Routes found for <code class="svelte-1m8i4xt"> </code></p> <p>To expose an API endpoint of your app in this page, set the <code>api_name</code> parameter of the event listener. <br/> For more information, visit the <a href="https://gradio.app/sharing_your_app/#api-page" target="_blank">API Page guide</a> . To hide the API documentation button and this page, set <code>footer_links=["gradio", "settings"]</code> in the <code>Blocks.launch()</code> method.</p></div> <button class="svelte-1m8i4xt"><!></button>`, 1); 117 118function NoApi($$anchor, $$props) { 119 push($$props, false); 120 121 const dispatch = createEventDispatcher(); 122 let root = prop($$props, 'root', 12); 123 124 var $$exports = { 125 get root() {
126 return root(); 127 }, 128 129 set root($$value) { 130 root($$value); 131 flushSync(); 132 } 133 }; 134 135 init(); 136 137 var fragment = root_1$7(); 138 var div = first_child(fragment); 139 var p = sibling(child(div), 2); 140 var code = sibling(child(p)); 141 var text = child(code, true); 142 143 reset(code); 144 reset(p); 145 next(2); 146 reset(div); 147 148 var button = sibling(div, 2); 149 var node = child(button); 150 151 Clear(node); 152 reset(button); 153 template_effect(() => set_text(text, root())); 154 event('click', button, () => dispatch("close")); 155 append($$anchor, fragment); 156 157 return pop($$exports); 158} 159 160var root_5$3 = from_html(`<div class="loading-dot self-baseline svelte-uv8a36"></div> <p class="self-baseline btn-text svelte-uv8a36">API Recorder</p>`, 1); 161var root_1$6 = from_html(`<h2 class="svelte-uv8a36"><img alt="" class="svelte-uv8a36"/> <div class="title svelte-uv8a36"><!> documentation <div class="url svelte-uv8a36"> </div></div> <span class="counts svelte-uv8a36"><!> <p><span class="url svelte-uv8a36"> </span> <!><!><br/></p></span></h2> <button class="svelte-uv8a36"><!></button>`, 1); 162 163function ApiBanner($$anchor, $$props) { 164 push($$props, false); 165 166 let root = prop($$props, 'root', 12); 167 let api_count = prop($$props, 'api_count', 12); 168 let current_language = prop($$props, 'current_language', 12, "python"); 169 const dispatch = createEventDispatcher(); 170 171 var $$exports = { 172 get root() { 173 return root(); 174 }, 175 176 set root($$value) { 177 root($$value); 178 flushSync(); 179 }, 180 181 get api_count() { 182 return api_count(); 183 }, 184 185 set api_count($$value) { 186 api_count($$value); 187 flushSync(); 188 }, 189 190 get current_language() { 191 return current_language(); 192 }, 193 194 set current_language($$value) { 195 current_language($$value); 196 flushSync(); 197 } 198 }; 199 200 init(); 201 202 var fragment = root_1$6(); 203 var h2 = first_child(fragment); 204 var img = child(h2); 205 var div = sibling(img, 2); 206 var node = child(div); 207 208 { 209 var consequent = ($$anchor) => { 210 var text$1 = text('MCP'); 211 212 append($$anchor, text$1); 213 }; 214 215 var alternate = ($$anchor) => { 216 var text_1 = text('API'); 217 218 append($$anchor, text_1); 219 }; 220 221 if_block(node, ($$render) => { 222 if (current_language() === "mcp") $$render(consequent); else $$render(alternate, false); 223 }); 224 } 225 226 var div_1 = sibling(node, 2); 227 var text_2 = child(div_1, true); 228 229 reset(div_1); 230 reset(div); 231 232 var span = sibling(div, 2); 233 var node_1 = child(span); 234 235 { 236 var consequent_1 = ($$anchor) => { 237 Button($$anchor, { 238 size: 'sm', 239 variant: 'secondary', 240 elem_id: 'start-api-recorder', 241 onclick: () => dispatch("close", { api_recorder_visible: true }), 242 children: ($$anchor, $$slotProps) => { 243 var fragment_2 = root_5$3(); 244 245 next(2); 246 append($$anchor, fragment_2); 247 }, 248 $$slots: { default: true } 249 }); 250 }; 251 252 if_block(node_1, ($$render) => { 253 if (current_language() !== "mcp") $$render(consequent_1); 254 }); 255 } 256 257 var p = sibling(node_1, 2); 258 var span_1 = child(p); 259 var text_3 = child(span_1, true); 260 261 reset(span_1); 262 263 var node_2 = sibling(span_1, 2); 264 265 { 266 var consequent_2 = ($$anchor) => { 267 var text_4 = text('API endpoint'); 268 269 append($$anchor, text_4); 270 }; 271 272 var alternate_1 = ($$anchor) => { 273 var text_5 = text('MCP Tool'); 274 275 append($$anchor, text_5); 276 }; 277 278 if_block(node_2, ($$render) => { 279 if (current_language() !== "mcp") $$render(consequent_2); else $$render(alternate_1, false); 280 }); 281 } 282 283 var node_3 = sibling(node_2); 284 285 { 286 var consequent_3 = ($$anchor) => { 287 var text_6 = text('s'); 288 289 append($$anchor, text_6); 290 }; 291 292 if_block(node_3, ($$render) => { 293 if (api_count() > 1) $$render(consequent_3); 294 }); 295 } 296 297 next(); 298 reset(p); 299 reset(span); 300 reset(h2); 301 302 var button = sibling(h2, 2); 303 var node_4 = child(button); 304 305 Clear(node_4); 306 reset(button); 307 308 template_effect(() => { 309 set_attribute(img, 'src', api_logo); 310 set_text(text_2, root()); 311 set_text(text_3, api_count()); 312 }); 313 314 event('click', button, () => dispatch("close")); 315 append($$anchor, fragment); 316 317 return pop($$exports); 318} 319 320function represent_value(value, type, lang = null) { 321 if (type === void 0) { 322 return lang === "py" ? "None" : null; 323 } 324 if (value === null && lang === "py") { 325 return "None"; 326 } 327 if (type === "string" || type === "str") { 328 return lang === null ? value : '"' + value + '"'; 329 } else if (type === "number") { 330 return lang === null ? parseFloat(value) : value; 331 } else if (type === "boolean" || type == "bool") { 332 if (lang === "py") {
333 value = String(value); 334 return value === "true" ? "True" : "False"; 335 } else if (lang === "js" || lang === "bash") { 336 return value; 337 } 338 return value === "true"; 339 } else if (type === "List[str]") { 340 value = JSON.stringify(value); 341 return value; 342 } else if (type.startsWith("Literal['")) { 343 return '"' + value + '"'; 344 } 345 if (lang === null) { 346 return value === "" ? null : JSON.parse(value); 347 } else if (typeof value === "string") { 348 if (value === "") { 349 return lang === "py" ? "None" : "null"; 350 } 351 return value; 352 } 353 if (lang === "bash") { 354 value = simplify_file_data(value); 355 } 356 if (lang === "py") { 357 value = replace_file_data_with_file_function(value); 358 } 359 return stringify_except_file_function(value); 360} 361function simplify_file_data(obj) { 362 if (typeof obj === "object" && obj !== null && !Array.isArray(obj)) { 363 if ("url" in obj && obj.url && "meta" in obj && obj.meta?._type === "gradio.FileData") { 364 return { path: obj.url, meta: { _type: "gradio.FileData" } }; 365 } 366 } 367 if (Array.isArray(obj)) { 368 obj.forEach((item, index) => { 369 if (typeof item === "object" && item !== null) { 370 obj[index] = simplify_file_data(item); 371 } 372 }); 373 } else if (typeof obj === "object" && obj !== null) { 374 Object.keys(obj).forEach((key) => { 375 obj[key] = simplify_file_data(obj[key]); 376 }); 377 } 378 return obj; 379} 380function replace_file_data_with_file_function(obj) { 381 if (typeof obj === "object" && obj !== null && !Array.isArray(obj)) { 382 if ("url" in obj && obj.url && "meta" in obj && obj.meta?._type === "gradio.FileData") { 383 return `handle_file('${obj.url}')`; 384 } 385 } 386 if (Array.isArray(obj)) { 387 obj.forEach((item, index) => { 388 if (typeof item === "object" && item !== null) { 389 obj[index] = replace_file_data_with_file_function(item); 390 } 391 }); 392 } else if (typeof obj === "object" && obj !== null) { 393 Object.keys(obj).forEach((key) => { 394 obj[key] = replace_file_data_with_file_function(obj[key]); 395 }); 396 } 397 return obj; 398} 399function stringify_except_file_function(obj) { 400 let jsonString = JSON.stringify(obj, (key, value) => { 401 if (value === null) { 402 return "UNQUOTEDNone"; 403 } 404 if (typeof value === "string" && value.startsWith("handle_file(") && value.endsWith(")")) { 405 return `UNQUOTED${value}`; 406 } 407 return value; 408 }); 409 const regex = /"UNQUOTEDhandle_file\(([^)]*)\)"/g; 410 jsonString = jsonString.replace(regex, (match, p1) => `handle_file(${p1})`); 411 const regexNone = /"UNQUOTEDNone"/g; 412 return jsonString.replace(regexNone, "None"); 413} 414function format_latency(val) { 415 if (val < 1) return `${Math.round(val * 1e3)} ms`; 416 return `${val.toFixed(2)} s`; 417} 418 419var root_3$6 = from_html(` <!>`, 1); 420var root_6$3 = from_html(`<span style="font-weight:bold">Required</span>`); 421var root_7$4 = from_html(`<span>Default:</span><span class="code svelte-1nfxyth" style="font-size: var(--text-sm);"> </span>`, 1); 422var root_2$5 = from_html(`<hr class="hr svelte-1nfxyth"/> <div style="margin:10px;"><p style="white-space: nowrap; overflow-x: auto;"><span class="code svelte-1nfxyth" style="margin-right: 10px;"> </span> <span class="code highlight svelte-1nfxyth" style="margin-right: 10px;"><!></span> <!></p> <p class="desc svelte-1nfxyth"> </p></div>`, 1); 423var root_8$2 = from_html(`<div class="load-wrap"><!></div>`); 424var root$b = from_html(`<h4 class="svelte-1nfxyth"><div class="toggle-icon svelte-1nfxyth"><div class="toggle-dot svelte-1nfxyth"></div></div> <!>:</h4> <div></div> <!>`, 1); 425 426function ParametersSnippet($$anchor, $$props) { 427 push($$props, false); 428 429 let is_running = prop($$props, 'is_running', 12); 430 let endpoint_returns = prop($$props, 'endpoint_returns', 12); 431 let js_returns = prop($$props, 'js_returns', 12); 432 let current_language = prop($$props, 'current_language', 12); 433 434 var $$exports = { 435 get is_running() { 436 return is_running(); 437 }, 438 439 set is_running($$value) { 440 is_running($$value); 441 flushSync(); 442 }, 443 444 get endpoint_returns() { 445 return endpoint_returns(); 446 }, 447 448 set endpoint_returns($$value) { 449 endpoint_returns($$value); 450 flushSync(); 451 }, 452 453 get js_returns() { 454 return js_returns(); 455 }, 456 457 set js_returns($$value) { 458 js_returns($$value); 459 flushSync(); 460 }, 461 462 get current_language() { 463 return current_language(); 464 }, 465 466 set current_language($$value) { 467 current_language($$value); 468 flushSync(); 469 } 470 }; 471 472 init(); 473 474 var fragment = root$b(); 475 var h4 = first_child(fragment); 476 var text$1 = sibling(child(h4)); 477 var node = sibling(text$1); 478 479 { 480 var consequent = ($$anchor) => { 481 var text_1 = text('s'); 482 483 append($$anchor, text_1); 484 }; 485 486 if_block(node, ($$render) => { 487 if (( 488 deep_read_state(endpoint_returns()), 489 untrack(() => endpoint_returns().length != 1) 490 )) $$render(consequent); 491 }); 492 } 493 494 next(); 495 reset(h4); 496 497 var div = sibling(h4, 2); 498 let classes; 499 500 each(div, 5, endpoint_returns, index, ($$anchor, $$item, i) => { 501 let label = () => get($$item).label; 502 let python_type = () => get($$item).python_type; 503 let component = () => get($$item).component; 504 let parameter_name = () => get($$item).parameter_name; 505 let parameter_has_default = () => get($$item).parameter_has_default; 506 let parameter_default = () => get($$item).parameter_default; 507 var fragment_1 = root_2$5(); 508 var div_1 = sibling(first_child(fragment_1), 2); 509 var p = child(div_1); 510 var span = child(p); 511 var text_2 = child(span, true); 512 513 reset(span); 514
515 var span_1 = sibling(span, 2); 516 var node_1 = child(span_1); 517 518 { 519 var consequent_2 = ($$anchor) => { 520 var fragment_2 = root_3$6(); 521 var text_3 = first_child(fragment_2, true); 522 var node_2 = sibling(text_3); 523 524 { 525 var consequent_1 = ($$anchor) => { 526 var text_4 = text('Â |\n None'); 527 528 append($$anchor, text_4); 529 }; 530 531 if_block(node_2, ($$render) => { 532 if (parameter_has_default() && parameter_default() === null) $$render(consequent_1); 533 }); 534 } 535 536 template_effect(() => set_text(text_3, (python_type(), untrack(() => python_type().type)))); 537 append($$anchor, fragment_2); 538 }; 539 540 var alternate = ($$anchor) => { 541 var text_5 = text(); 542 543 template_effect(() => set_text(text_5, ( 544 deep_read_state(js_returns()), 545 untrack(() => js_returns()[i].type || "any") 546 ))); 547 548 append($$anchor, text_5); 549 }; 550 551 if_block(node_1, ($$render) => { 552 if (current_language() === "python") $$render(consequent_2); else $$render(alternate, false); 553 }); 554 } 555 556 reset(span_1); 557 558 var node_3 = sibling(span_1, 2); 559 560 { 561 var consequent_3 = ($$anchor) => { 562 var span_2 = root_6$3(); 563 564 append($$anchor, span_2); 565 }; 566 567 var alternate_1 = ($$anchor) => { 568 var fragment_4 = root_7$4(); 569 var span_3 = sibling(first_child(fragment_4)); 570 var text_6 = child(span_3, true); 571 572 reset(span_3); 573 574 template_effect(($0) => set_text(text_6, $0), [ 575 () => ( 576 deep_read_state(represent_value), 577 parameter_default(), 578 python_type(), 579 untrack(() => represent_value(parameter_default(), python_type().type, "py")) 580 ) 581 ]); 582 583 append($$anchor, fragment_4); 584 }; 585 586 if_block(node_3, ($$render) => { 587 if (!parameter_has_default() || current_language() == "bash") $$render(consequent_3); else $$render(alternate_1, false); 588 }); 589 } 590 591 reset(p); 592 593 var p_1 = sibling(p, 2); 594 var text_7 = child(p_1); 595 596 reset(p_1); 597 reset(div_1); 598 599 template_effect(() => { 600 set_text(text_2, current_language() !== "bash" && parameter_name() ? parameter_name() : "[" + i + "]"); 601 602 set_text(text_7, `The input value that is provided in the "${label() ?? ''}" ${component() ?? ''} 603 component. ${(python_type(), untrack(() => python_type().description)) ?? ''}`); 604 }); 605 606 append($$anchor, fragment_1); 607 }); 608 609 reset(div); 610 611 var node_4 = sibling(div, 2); 612 613 { 614 var consequent_4 = ($$anchor) => { 615 var div_2 = root_8$2(); 616 var node_5 = child(div_2); 617 618 Loader(node_5, { margin: false }); 619 reset(div_2); 620 append($$anchor, div_2); 621 }; 622 623 if_block(node_4, ($$render) => { 624 if (is_running()) $$render(consequent_4); 625 }); 626 } 627 628 template_effect(() => { 629 set_text(text$1, ` Accepts ${( 630 deep_read_state(endpoint_returns()), 631 untrack(() => endpoint_returns().length) 632 ) ?? ''} parameter`); 633 634 classes = set_class(div, 1, '', null, classes, { hide: is_running() }); 635 }); 636 637 append($$anchor, fragment); 638 639 return pop($$exports); 640} 641 642var root$a = from_svg(`<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg>`); 643 644function IconCopy($$anchor, $$props) { 645 push($$props, false); 646 647 let classNames = prop($$props, 'classNames', 12, ""); 648 649 var $$exports = { 650 get classNames() { 651 return classNames(); 652 }, 653 654 set classNames($$value) { 655 classNames($$value); 656 flushSync(); 657 } 658 }; 659 660 var svg = root$a(); 661 662 template_effect(() => set_class(svg, 0, clsx(classNames()), 'svelte-etvp4k')); 663 append($$anchor, svg); 664 665 return pop($$exports); 666} 667 668var root$9 = from_svg(`<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true"><path fill-rule="evenodd" fill="rgb(255, 124, 1)" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg>`); 669 670function IconCheck($$anchor, $$props) { 671 push($$props, false); 672 673 let classNames = prop($$props, 'classNames', 12, ""); 674 675 var $$exports = { 676 get classNames() { 677 return classNames(); 678 }, 679 680 set classNames($$value) { 681 classNames($$value); 682 flushSync(); 683 } 684 }; 685 686 var svg = root$9(); 687 688 template_effect(() => set_class(svg, 0, clsx(classNames() || "icon-size"), 'svelte-5quqiz')); 689 append($$anchor, svg); 690 691 return pop($$exports); 692} 693 694var root$8 = from_html(`<button class="copy-button svelte-egghn7" aria-l
694ive="polite"><span class="inline-flex items-center justify-center rounded-md p-0.5 max-sm:p-0"><!></span></button>`); 695 696function CopyButton($$anchor, $$props) { 697 push($$props, false); 698 699 let code = prop($$props, 'code', 12); 700 let copied = mutable_source(false); 701 702 function copy() { 703 navigator.clipboard.writeText(code()); 704 set(copied, true); 705 706 setTimeout( 707 () => { 708 set(copied, false); 709 }, 710 1500 711 ); 712 } 713 714 legacy_pre_effect(() => (get(copied)), () => { 715 get(copied); 716 }); 717 718 legacy_pre_effect_reset(); 719 720 var $$exports = { 721 get code() { 722 return code(); 723 }, 724 725 set code($$value) { 726 code($$value); 727 flushSync(); 728 } 729 }; 730 731 var button = root$8(); 732 var span = child(button); 733 var node = child(span); 734 735 { 736 var consequent = ($$anchor) => { 737 IconCheck($$anchor, { classNames: 'w-3 h-3 max-sm:w-2.5 max-sm:h-2.5' }); 738 }; 739 740 var alternate = ($$anchor) => { 741 IconCopy($$anchor, { classNames: 'w-3 h-3 max-sm:w-2.5 max-sm:h-2.5' }); 742 }; 743 744 if_block(node, ($$render) => { 745 if (get(copied)) $$render(consequent); else $$render(alternate, false); 746 }); 747 } 748 749 reset(span); 750 reset(button); 751 event('click', button, copy); 752 append($$anchor, button); 753 754 return pop($$exports); 755} 756 757var root_2$4 = from_html(`<div class="copy svelte-1ts4a2g"><!></div> <div><pre class="svelte-1ts4a2g"></pre></div>`, 1); 758var root_4$4 = from_html(`<div class="copy svelte-1ts4a2g"><!></div> <div><pre class="svelte-1ts4a2g"></pre></div>`, 1); 759var root_6$2 = from_html(`<div class="copy svelte-1ts4a2g"><!></div> <div><pre class="svelte-1ts4a2g"></pre></div>`, 1); 760var root_1$5 = from_html(`<code class="svelte-1ts4a2g"><!></code>`); 761 762function InstallSnippet($$anchor, $$props) { 763 push($$props, false); 764 765 let current_language = prop($$props, 'current_language', 12); 766 let py_install = "pip install gradio_client"; 767 let js_install = "npm i -D @gradio/client"; 768 let bash_install = "curl --version"; 769 770 var $$exports = { 771 get current_language() { 772 return current_language(); 773 }, 774 775 set current_language($$value) { 776 current_language($$value); 777 flushSync(); 778 } 779 }; 780 781 Block($$anchor, { 782 children: ($$anchor, $$slotProps) => { 783 var code = root_1$5(); 784 var node = child(code); 785 786 { 787 var consequent = ($$anchor) => { 788 var fragment_1 = root_2$4(); 789 var div = first_child(fragment_1);
790 var node_1 = child(div); 791 792 CopyButton(node_1, { code: py_install }); 793 reset(div); 794 795 var div_1 = sibling(div, 2); 796 var pre = child(div_1); 797 798 pre.textContent = '$ pip install gradio_client'; 799 reset(div_1); 800 append($$anchor, fragment_1); 801 }; 802 803 var alternate_1 = ($$anchor) => { 804 var fragment_2 = comment(); 805 var node_2 = first_child(fragment_2); 806 807 { 808 var consequent_1 = ($$anchor) => { 809 var fragment_3 = root_4$4(); 810 var div_2 = first_child(fragment_3); 811 var node_3 = child(div_2); 812 813 CopyButton(node_3, { code: js_install }); 814 reset(div_2); 815 816 var div_3 = sibling(div_2, 2); 817 var pre_1 = child(div_3); 818 819 pre_1.textContent = '$ npm i -D @gradio/client'; 820 reset(div_3); 821 append($$anchor, fragment_3); 822 }; 823 824 var alternate = ($$anchor) => { 825 var fragment_4 = comment(); 826 var node_4 = first_child(fragment_4); 827 828 { 829 var consequent_2 = ($$anchor) => { 830 var fragment_5 = root_6$2(); 831 var div_4 = first_child(fragment_5); 832 var node_5 = child(div_4); 833 834 CopyButton(node_5, { code: bash_install }); 835 reset(div_4); 836 837 var div_5 = sibling(div_4, 2); 838 var pre_2 = child(div_5); 839 840 pre_2.textContent = '$ curl --version'; 841 reset(div_5); 842 append($$anchor, fragment_5); 843 }; 844 845 if_block( 846 node_4, 847 ($$render) => { 848 if (current_language() === "bash") $$render(consequent_2); 849 }, 850 true 851 ); 852 } 853 854 append($$anchor, fragment_4); 855 }; 856 857 if_block( 858 node_2, 859 ($$render) => { 860 if (current_language() === "javascript") $$render(consequent_1); else $$render(alternate, false); 861 }, 862 true 863 ); 864 } 865 866 append($$anchor, fragment_2); 867 }; 868 869 if_block(node, ($$render) => { 870 if (current_language() === "python") $$render(consequent); else $$render(alternate_1, false); 871 }); 872 } 873 874 reset(code); 875 append($$anchor, code); 876 }, 877 $$slots: { default: true } 878 }); 879 880 return pop($$exports); 881} 882 883var root$7 = from_html(`<div class="tooltip-chart svelte-1q3jha5"><div class="tooltip-arrow svelte-1q3jha5"></div> <div class="chart-bars svelte-1q3jha5"><div class="chart-bar-container svelte-1q3jha5"><div class="chart-bar-label svelte-1q3jha5">p50</div> <div class="chart-bar-wrapper svelte-1q3jha5"><div class="chart-bar svelte-1q3jha5"></div></div> <div class="chart-bar-value svelte-1q3jha5"> </div></div> <div class="chart-bar-container svelte-1q3jha5"><div class="chart-bar-label svelte-1q3jha5">p90</div> <div class="chart-bar-wrapper svelte-1q3jha5"><div class="chart-bar svelte-1q3jha5"></div></div> <div class="chart-bar-value svelte-1q3jha5"> </div></div> <div class="chart-bar-container svelte-1q3jha5"><div class="chart-bar-label svelte-1q3jha5">p99</div> <div class="chart-bar-wrapper svelte-1q3jha5"><div class="chart-bar svelte-1q3jha5"></div></div> <div class="chart-bar-value svelte-1q3jha5"> </div></div></div></div>`); 884 885function PercentileChart($$anchor, $$props) { 886 push($$props, false); 887 888 const max_latency = mutable_source(); 889 let p50 = prop($$props, 'p50', 12); 890 let p90 = prop($$props, 'p90', 12); 891 let p99 = prop($$props, 'p99', 12); 892 893 legacy_pre_effect( 894 () => ( 895 deep_read_state(p50()), 896 deep_read_state(p90()), 897 deep_read_state(p99()) 898 ), 899 () => { 900 set(max_latency, Math.max(p50(), p90(), p99())); 901 } 902 ); 903 904 legacy_pre_effect_reset(); 905 906 var $$exports = { 907 get p50() { 908 return p50(); 909 }, 910 911 set p50($$value) { 912 p50($$value); 913 flushSync(); 914 }, 915 916 get p90() { 917 return p90(); 918 }, 919 920 set p90($$value) { 921 p90($$value); 922 flushSync(); 923 }, 924 925 get p99() { 926 return p99(); 927 }, 928 929 set p99($$value) { 930 p99($$value); 931 flushSync(); 932 } 933 }; 934 935 init(); 936 937 var div = root$7(); 938 var div_1 = sibling(child(div), 2); 939 var div_2 = child(div_1); 940 var div_3 = sibling(child(div_2), 2); 941 var div_4 = child(div_3); 942 943 reset(div_3); 944 945 var div_5 = sibling(div_3, 2); 946 var text = child(div_5, true); 947 948 reset(div_5); 949 reset(div_2); 950 951 var div_6 = sibling(div_2, 2); 952 var div_7 = sibling(child(div_6), 2); 953 var div_8 = child(div_7); 954 955 reset(div_7); 956 957 var div_9 = sibling(div_7, 2); 958 var text_1 = child(div_9, true); 959 960 reset(div_9); 961 reset(div_6); 962 963 var div_10 = sibling(div_6, 2); 964 var div_11 = sibling(child(div_10), 2); 965 var div_12 = child(div_11); 966 967 reset(div_11); 968 969 var div_13 = sibling(div_11, 2); 970 var text_2 = child(div_13, true); 971 972 reset(div_13); 973 reset(div_10); 974 reset(div_1); 975 reset(div); 976 977 template_effect( 978 ($0, $1, $2) => { 979 set_style(div_4, `width: ${p50() / get(max_latency) * 100}%`); 980 set_text(text, $0); 981 set_style(div_8, `width: ${p90() / get(max_latency) * 100}%`); 982 set_text(text_1, $1); 983 set_style(div_12, `width: ${p99() / get(max_latency) * 100}%`); 984 set_text(text_2, $2); 985 }, 986 [ 987 () => ( 988 deep_read_state(format_latency), 989 deep_read_state(p50()), 990 untrack(() => format_latency(p50())) 991 ), 992
993 () => ( 994 deep_read_state(format_latency), 995 deep_read_state(p90()), 996 untrack(() => format_latency(p90())) 997 ), 998 999 () => ( 1000 deep_read_state(format_latency), 1001 deep_read_state(p99()), 1002 untrack(() => format_latency(p99())) 1003 ) 1004 ] 1005 ); 1006 1007 append($$anchor, div); 1008 1009 return pop($$exports); 1010} 1011 1012var root_2$3 = from_html(`<span class="most-recently-used svelte-13swnto">Most recently used</span>`); 1013var root_1$4 = from_html(`<span class="analytics-inline svelte-13swnto"><span class="analytics-content svelte-13swnto"><span class="analytics-text-wrapper svelte-13swnto"> </span> <div class="analytics-tooltip svelte-13swnto"><!></div></span> <!></span>`); 1014var root$6 = from_html(`<h3 class="svelte-13swnto">API name: <span class="post svelte-13swnto"> </span> <span class="desc svelte-13swnto"> <!></span></h3>`); 1015 1016function EndpointDetail($$anchor, $$props) { 1017 push($$props, false); 1018 1019 const is_most_recently_used = mutable_source(); 1020 let api_name = prop($$props, 'api_name', 12, null); 1021 let description = prop($$props, 'description', 12, null); 1022 let analytics = prop($$props, 'analytics', 12); 1023 let last_api_call = prop($$props, 'last_api_call', 12, null); 1024 let dependency_id = prop($$props, 'dependency_id', 12, null); 1025 const success_rate = api_name() ? analytics()[api_name()]?.success_rate : 0; 1026 1027 legacy_pre_effect( 1028 () => ( 1029 deep_read_state(last_api_call()), 1030 deep_read_state(dependency_id()) 1031 ), 1032 () => { 1033 set(is_most_recently_used, last_api_call()?.fn_index === dependency_id()); 1034 } 1035 ); 1036 1037 legacy_pre_effect_reset(); 1038 1039 var $$exports = { 1040 get api_name() { 1041 return api_name(); 1042 }, 1043 1044 set api_name($$value) { 1045 api_name($$value); 1046 flushSync(); 1047 }, 1048 1049 get description() { 1050 return description(); 1051 }, 1052 1053 set description($$value) { 1054 description($$value); 1055 flushSync(); 1056 }, 1057 1058 get analytics() { 1059 return analytics(); 1060 }, 1061 1062 set analytics($$value) { 1063 analytics($$value); 1064 flushSync(); 1065 }, 1066 1067 get last_api_call() { 1068 return last_api_call(); 1069 }, 1070 1071 set last_api_call($$value) { 1072 last_api_call($$value); 1073 flushSync(); 1074 }, 1075 1076 get dependency_id() { 1077 return dependency_id(); 1078 }, 1079 1080 set dependency_id($$value) { 1081 dependency_id($$value); 1082 flushSync(); 1083 } 1084 }; 1085 1086 init(); 1087 1088 var h3 = root$6(); 1089 var span = sibling(child(h3)); 1090 var text = child(span, true); 1091 1092 reset(span); 1093 1094 var span_1 = sibling(span, 2); 1095 var text_1 = child(span_1); 1096 var node = sibling(text_1); 1097 1098 { 1099 var consequent_1 = ($$anchor) => { 1100 const endpoint_analytics = derived_safe_equal(() => ( 1101 deep_read_state(analytics()), 1102 deep_read_state(api_name()), 1103 untrack(() => analytics()[api_name()]) 1104 )); 1105 1106 const p50 = derived_safe_equal(() => ( 1107 deep_read_state(get(endpoint_analytics)), 1108 untrack(() => get(endpoint_analytics).process_time_percentiles["50th"]) 1109 )); 1110 1111 const p90 = derived_safe_equal(() => ( 1112 deep_read_state(get(endpoint_analytics)), 1113 untrack(() => get(endpoint_analytics).process_time_percentiles["90th"]) 1114 )); 1115 1116 const p99 = derived_safe_equal(() => ( 1117 deep_read_state(get(endpoint_analytics)), 1118 untrack(() => get(endpoint_analytics).process_time_percentiles["99th"]) 1119 )); 1120 1121 var span_2 = root_1$4(); 1122 var span_3 = child(span_2); 1123 var span_4 = child(span_3); 1124 var text_2 = child(span_4); 1125 1126 reset(span_4); 1127 1128 var div = sibling(span_4, 2); 1129 var node_1 = child(div); 1130 1131 PercentileChart(node_1, { 1132 get p50() { 1133 return get(p50); 1134 }, 1135 1136 get p90() { 1137 return get(p90); 1138 }, 1139 1140 get p99() { 1141 return get(p99); 1142 } 1143 }); 1144 1145 reset(div); 1146 reset(span_3); 1147 1148 var node_2 = sibling(span_3, 2); 1149 1150 { 1151 var consequent = ($$anchor) => { 1152 var span_5 = root_2$3(); 1153 1154 append($$anchor, span_5); 1155 }; 1156 1157 if_block(node_2, ($$render) => { 1158 if (get(is_most_recently_used)) $$render(consequent); 1159 }); 1160 } 1161 1162 reset(span_2); 1163 1164 template_effect( 1165 ($0, $1) => set_text(text_2, `${( 1166 deep_read_state(get(endpoint_analytics)), 1167 untrack(() => get(endpoint_analytics).total_requests) 1168 ) ?? ''} requests (${$0 ?? ''}% successful, p50: ${$1 ?? ''})`), 1169 [ 1170 () => (untrack(() => Math.round(success_rate * 100))), 1171 () => ( 1172 deep_read_state(format_latency), 1173 deep_read_state(get(p50)), 1174 untrack(() => format_latency(get(p50))) 1175 ) 1176 ] 1177 ); 1178 1179 append($$anchor, span_2); 1180 }; 1181 1182 if_block(node, ($$render) => { 1183 if (( 1184 deep_read_state(analytics()), 1185 deep_read_state(api_name()), 1186 untrack(() => analytics() && api_name() && analytics()[api_name()]) 1187 )) $$render(consequent_1); 1188 }); 1189 } 1190 1191 reset(span_1); 1192 reset(h3); 1193 1194 template_effect(() => { 1195 set_text(text, "/" + api_name()); 1196 set_text(text_1, `${description() ?? ''} `); 1197 }); 1198 1199 append($$anchor, h3); 1200 1201 return pop($$exports); 1202} 1203 1204var root_1$3 = from_html(`<code class="svelte-1v9rhoq"><div class="copy svelte-1v9rhoq"><!></div> <pre class="svelte-1v9rhoq"><!></pre></code>`); 1205var root_2$2 = from_html(`<code class="svelte-1v9rhoq"><div class="copy svelte-1v9rhoq"><!></div> <pre class="svelte-1v9rhoq"><!></pre></code>`); 1206var root_3$5 = from_html(`<code class="svelte-1v9rhoq"><div class="copy svelte-1v9rhoq"><!></div> <pre class="svelte-1v9rhoq"><!></pre></code>`); 1207var root$5 = from_html(`<div class="container svelte-1v9rhoq"><!> <div><!></div> <div><!></div> <div><!></div></div>`); 1208 1209function CodeSnippet($$anchor, $$props) { 1210 push($$props, false); 1211 1212 const python_html = mutable_source(); 1213 const js_html = mutable_source(); 1214 const bash_html = mutable_source();
1215 let dependency = prop($$props, 'dependency', 12); 1216 let current_language = prop($$props, 'current_language', 12); 1217 let api_description = prop($$props, 'api_description', 12, null); 1218 let analytics = prop($$props, 'analytics', 12); 1219 let markdown_code_snippets = prop($$props, 'markdown_code_snippets', 12); 1220 let code_snippets = prop($$props, 'code_snippets', 12); 1221 let last_api_call = prop($$props, 'last_api_call', 12, null); 1222 1223 function escape_html(text) { 1224 return text.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">"); 1225 } 1226 1227 function highlight_python(code) { 1228 let html = escape_html(code); 1229 1230 html = html.replace(/\b(from|import|print)\b/g, '<span class="kw">$1</span>'); 1231 html = html.replace(/(Client\()("[^"]*")(\))/g, '$1<span class="str">$2</span>$3'); 1232 html = html.replace(/(api_name=)("[^"]*")/g, '$1<span class="api-name">$2</span>'); 1233 1234 return html; 1235 } 1236 1237 function highlight_javascript(code) { 1238 let html = escape_html(code); 1239 1240 html = html.replace(/\b(import|from|const|await)\b/g, '<span class="kw">$1</span>'); 1241 html = html.replace(/(Client\.connect\()("[^"]*")(\))/g, '$1<span class="str">$2</span>$3'); 1242 html = html.replace(/(\.predict\()("[^"]*")/g, '$1<span class="api-name">$2</span>'); 1243 1244 return html; 1245 } 1246 1247 function highlight_bash(code) { 1248 return escape_html(code); 1249 } 1250 1251 legacy_pre_effect(() => (deep_read_state(code_snippets())), () => { 1252 markdown_code_snippets( 1253 markdown_code_snippets()[dependency().api_name] = { 1254 python: code_snippets().python || "", 1255 javascript: code_snippets().javascript || "", 1256 bash: code_snippets().bash || "" 1257 }, 1258 true 1259 ); 1260 }); 1261 1262 legacy_pre_effect(() => (deep_read_state(code_snippets())), () => { 1263 set(python_html, highlight_python(code_snippets().python || "")); 1264 }); 1265 1266 legacy_pre_effect(() => (deep_read_state(code_snippets())), () => { 1267 set(js_html, highlight_javascript(code_snippets().javascript || "")); 1268 }); 1269 1270 legacy_pre_effect(() => (deep_read_state(code_snippets())), () => { 1271 set(bash_html, highlight_bash(code_snippets().bash || "")); 1272 }); 1273 1274 legacy_pre_effect_reset(); 1275 1276 var $$exports = { 1277 get dependency() { 1278 return dependency(); 1279 }, 1280 1281 set dependency($$value) { 1282 dependency($$value); 1283 flushSync(); 1284 }, 1285 1286 get current_language() { 1287 return current_language(); 1288 }, 1289 1290 set current_language($$value) { 1291 current_language($$value); 1292 flushSync(); 1293 }, 1294 1295 get api_description() { 1296 return api_description(); 1297 }, 1298 1299 set api_description($$value) { 1300 api_description($$value); 1301 flushSync(); 1302 }, 1303 1304 get analytics() { 1305 return analytics(); 1306 }, 1307 1308 set analytics($$value) { 1309 analytics($$value); 1310 flushSync(); 1311 }, 1312 1313 get markdown_code_snippets() { 1314 return markdown_code_snippets(); 1315 }, 1316 1317 set markdown_code_snippets($$value) { 1318 markdown_code_snippets($$value); 1319 flushSync(); 1320 }, 1321 1322 get code_snippets() { 1323 return code_snippets(); 1324 }, 1325 1326 set code_snippets($$value) { 1327 code_snippets($$value); 1328 flushSync(); 1329 }, 1330 1331 get last_api_call() { 1332 return last_api_call(); 1333 }, 1334 1335 set last_api_call($$value) { 1336 last_api_call($$value); 1337 flushSync(); 1338 } 1339 }; 1340 1341 init(); 1342 1343 var div = root$5(); 1344 var node = child(div); 1345 1346 EndpointDetail(node, { 1347 get api_name() { 1348 return ( 1349 deep_read_state(dependency()), 1350 untrack(() => dependency().api_name) 1351 ); 1352 }, 1353 1354 get description() { 1355 return api_description(); 1356 }, 1357 1358 get analytics() { 1359 return analytics(); 1360 }, 1361 1362 get last_api_call() { 1363 return last_api_call(); 1364 }, 1365 1366 get dependency_id() { 1367 return ( 1368 deep_read_state(dependency()), 1369 untrack(() => dependency().id) 1370 ); 1371 } 1372 }); 1373 1374 var div_1 = sibling(node, 2); 1375 let classes; 1376 var node_1 = child(div_1); 1377 1378 Block(node_1, { 1379 children: ($$anchor, $$slotProps) => { 1380 var code_1 = root_1$3(); 1381 var div_2 = child(code_1); 1382 var node_2 = child(div_2); 1383 1384 { 1385 let $0 = derived_safe_equal(() => ( 1386 deep_read_state(code_snippets()), 1387 untrack(() => code_snippets().python || "") 1388 )); 1389 1390 CopyButton(node_2, { 1391 get code() { 1392 return get($0); 1393 } 1394 }); 1395 } 1396 1397 reset(div_2); 1398 1399 var pre = sibling(div_2, 2); 1400 var node_3 = child(pre); 1401 1402 html(node_3, () => get(python_html)); 1403 reset(pre); 1404 reset(code_1); 1405 append($$anchor, code_1); 1406 }, 1407 $$slots: { default: true } 1408 }); 1409 1410 reset(div_1); 1411 1412 var div_3 = sibling(div_1, 2); 1413 let classes_1; 1414 var node_4 = child(div_3); 1415 1416 Block(node_4, { 1417 children: ($$anchor, $$slotProps) => { 1418 var code_2 = root_2$2(); 1419 var div_4 = child(code_2); 1420 var node_5 = child(div_4); 1421 1422 { 1423 let $0 = derived_safe_equal(() => ( 1424 deep_read_state(code_snippets()), 1425 untrack(() => code_snippets().javascript || "") 1426 )); 1427 1428 CopyButton(node_5, { 1429 get code() { 1430 return get($0); 1431 } 1432 }); 1433 } 1434 1435 reset(div_4); 1436 1437 var pre_1 = sibling(div_4, 2); 1438 var node_6 = child(pre_1); 1439 1440 html(node_6, () => get(js_html));
1441 reset(pre_1); 1442 reset(code_2); 1443 append($$anchor, code_2); 1444 }, 1445 $$slots: { default: true } 1446 }); 1447 1448 reset(div_3); 1449 1450 var div_5 = sibling(div_3, 2); 1451 let classes_2; 1452 var node_7 = child(div_5); 1453 1454 Block(node_7, { 1455 children: ($$anchor, $$slotProps) => { 1456 var code_3 = root_3$5(); 1457 var div_6 = child(code_3); 1458 var node_8 = child(div_6); 1459 1460 { 1461 let $0 = derived_safe_equal(() => ( 1462 deep_read_state(code_snippets()), 1463 untrack(() => code_snippets().bash || "") 1464 )); 1465 1466 CopyButton(node_8, { 1467 get code() { 1468 return get($0); 1469 } 1470 }); 1471 } 1472 1473 reset(div_6); 1474 1475 var pre_2 = sibling(div_6, 2); 1476 var node_9 = child(pre_2); 1477 1478 html(node_9, () => get(bash_html)); 1479 reset(pre_2); 1480 reset(code_3); 1481 append($$anchor, code_3); 1482 }, 1483 $$slots: { default: true } 1484 }); 1485 1486 reset(div_5); 1487 reset(div); 1488 1489 template_effect(() => { 1490 classes = set_class(div_1, 1, 'svelte-1v9rhoq', null, classes, { hidden: current_language() !== "python" }); 1491 classes_1 = set_class(div_3, 1, 'svelte-1v9rhoq', null, classes_1, { hidden: current_language() !== "javascript" }); 1492 classes_2 = set_class(div_5, 1, 'svelte-1v9rhoq', null, classes_2, { hidden: current_language() !== "bash" }); 1493 }); 1494 1495 append($$anchor, div); 1496 1497 return pop($$exports); 1498} 1499 1500var root_5$2 = from_html( 1501 ` 1502client.<span class="highlight"> <span class="api-name svelte-154to14"> </span> 1503) 1504</span>`, 1505 1 1506); 1507 1508var root_3$4 = from_html(`<code class="svelte-154to14"><div class="copy svelte-154to14"><!></div> <div><pre class="svelte-154to14"><span class="highlight">from</span> gradio_client <span class="highlight">import</span> Client, file 1509 1510client = Client(<span class="token string svelte-154to14"> </span><!>) 1511<!></pre></div></code>`); 1512 1513var root_9 = from_html( 1514 ` 1515await client.predict(<span class="api-name svelte-154to14"> </span><!>); 1516 `, 1517 1 1518); 1519 1520var root_7$3 = from_html(`<code class="svelte-154to14"><div class="copy svelte-154to14"><!></div> <div><pre class="svelte-154to14">import { Client } from "@gradio/client"; 1521 1522const app = await Client.connect(<span class="token string svelte-154to14"> </span><!>); 1523 <!></pre></div></code>`); 1524 1525var root_13$2 = from_html(`<pre class="svelte-154to14"> </pre> <br/>`, 1); 1526var root_12$2 = from_html(`<code class="svelte-154to14"><div class="copy svelte-154to14"><!></div> <div></div></code>`); 1527var root_1$2 = from_html(`<div class="container svelte-154to14"><!></div>`); 1528 1529function RecordingSnippet($$anchor, $$props) { 1530 push($$props, false); 1531 1532 let dependencies = prop($$props, 'dependencies', 12); 1533 let short_root = prop($$props, 'short_root', 12); 1534 let root = prop($$props, 'root', 12); 1535 let api_prefix = prop($$props, 'api_prefix', 12, ""); 1536 let current_language = prop($$props, 'current_language', 12); 1537 let username = prop($$props, 'username', 12); 1538 let python_code = mutable_source(); 1539 let python_code_text = mutable_source(); 1540 let js_code = mutable_source(); 1541 let bash_code = mutable_source(); 1542 let api_calls = prop($$props, 'api_calls', 28, () => []); 1543 1544 async function get_info() { 1545 let response = await fetch(root().replace(/\/$/, "") + api_prefix() + "/info/?all_endpoints=true"); 1546 let data = await response.json(); 1547 1548 return data; 1549 } 1550 1551 let endpoints_info; 1552 let py_zipped = mutable_source([]); 1553 let js_zipped = mutable_source([]); 1554 let bash_zipped = mutable_source([]); 1555 1556 function format_api_call(call, lang) { 1557 const api_name = `/${dependencies()[call.fn_index].api_name}`; 1558 1559 // If an input is undefined (distinct from null) then it corresponds to a State component. 1560 let call_data_excluding_state = call.data.filter((d) => typeof d !== "undefined"); 1561 1562 const params = call_data_excluding_state.map((param, index) => { 1563 if (endpoints_info[api_name]) { 1564 const param_info = endpoints_info[api_name].parameters[index]; 1565 1566 if (!param_info) { 1567 return undefined; 1568 } 1569 1570 const param_name = param_info.parameter_name; 1571 const python_type = param_info.python_type.type; 1572 1573 if (lang === "py") { 1574 return ` ${param_name}=${represent_value(param, python_type, "py")}`; 1575 } else if (lang === "js") { 1576 return ` ${param_name}: ${represent_value(param, python_type, "js")}`; 1577 } else if (lang === "bash") { 1578 return ` ${represent_value(param, python_type, "bash")}`; 1579 } 1580 } 1581 1582 return ` ${represent_value(param, undefined, lang)}`; 1583 }).filter((d) => typeof d !== "undefined").join(",\n"); 1584 1585 if (params) { 1586 if (lang === "py") { 1587 return `${params},\n`; 1588 } else if (lang === "js") { 1589 return `{\n${params},\n}`; 1590 } else if (lang === "bash") { 1591 return `\n${params}\n`; 1592 } 1593 } 1594 1595 if (lang === "py") { 1596 return ""; 1597 } 1598 1599 return "\n"; 1600 } 1601 1602 onMount(async () => { 1603 const data = await get_info(); 1604 1605 endpoints_info = data["named_endpoints"]; 1606 1607 let py_api_calls = api_calls().map((call) => format_api_call(call, "py")); 1608 let js_api_calls = api_calls().map((call) => format_api_call(call, "js")); 1609 let bash_api_calls = api_calls().map((call) => format_api_call(call, "bash")); 1610 let api_names = api_calls().map((call) => dependencies()[call.fn_index].api_name || ""); 1611 1612 set(py_zipped, py_api_calls.map((call, index) => ({ call, api_name: api_names[index] }))); 1613 set(js_zipped, js_api_calls.map((call, index) => ({ call, api_name: api_names[index] }))); 1614 set(bash_zipped, bash_api_calls.map((call, index) => ({ call, api_name: api_names[index] }))); 1615 await tick(); 1616 set(python_code_text, get(python_code).innerText); 1617 }); 1618 1619 var $$exports = { 1620 get dependencies() {
1621 return dependencies(); 1622 }, 1623 1624 set dependencies($$value) { 1625 dependencies($$value); 1626 flushSync(); 1627 }, 1628 1629 get short_root() { 1630 return short_root(); 1631 }, 1632 1633 set short_root($$value) { 1634 short_root($$value); 1635 flushSync(); 1636 }, 1637 1638 get root() { 1639 return root(); 1640 }, 1641 1642 set root($$value) { 1643 root($$value); 1644 flushSync(); 1645 }, 1646 1647 get api_prefix() { 1648 return api_prefix(); 1649 }, 1650 1651 set api_prefix($$value) { 1652 api_prefix($$value); 1653 flushSync(); 1654 }, 1655 1656 get current_language() { 1657 return current_language(); 1658 }, 1659 1660 set current_language($$value) { 1661 current_language($$value); 1662 flushSync(); 1663 }, 1664 1665 get username() { 1666 return username(); 1667 }, 1668 1669 set username($$value) { 1670 username($$value); 1671 flushSync(); 1672 }, 1673 1674 get api_calls() { 1675 return api_calls(); 1676 }, 1677 1678 set api_calls($$value) { 1679 api_calls($$value); 1680 flushSync(); 1681 } 1682 }; 1683 1684 init(); 1685 1686 var div = root_1$2(); 1687 var node = child(div); 1688 1689 Block(node, { 1690 border_mode: "focus", 1691 children: ($$anchor, $$slotProps) => { 1692 var fragment = comment(); 1693 var node_1 = first_child(fragment); 1694 1695 { 1696 var consequent_1 = ($$anchor) => { 1697 var code = root_3$4(); 1698 var div_1 = child(code); 1699 var node_2 = child(div_1); 1700 1701 CopyButton(node_2, { 1702 get code() { 1703 return get(python_code_text); 1704 } 1705 }); 1706 1707 reset(div_1); 1708 1709 var div_2 = sibling(div_1, 2); 1710 var pre = child(div_2); 1711 var span = sibling(child(pre), 4); 1712 var text$1 = child(span); 1713 1714 reset(span); 1715 1716 var node_3 = sibling(span); 1717 1718 { 1719 var consequent = ($$anchor) => { 1720 var text_1 = text(); 1721 1722 template_effect(() => set_text(text_1, `, auth=("${username() ?? ''}", **password**)`)); 1723 append($$anchor, text_1); 1724 }; 1725 1726 if_block(node_3, ($$render) => { 1727 if (username() !== null) $$render(consequent); 1728 }); 1729 } 1730 1731 var node_4 = sibling(node_3, 2); 1732 1733 each(node_4, 1, () => get(py_zipped), index, ($$anchor, $$item) => { 1734 let call = () => get($$item).call; 1735 let api_name = () => get($$item).api_name; 1736 1737 next(); 1738 1739 var fragment_2 = root_5$2(); 1740 var span_1 = sibling(first_child(fragment_2)); 1741 var text_2 = child(span_1); 1742 var span_2 = sibling(text_2); 1743 var text_3 = child(span_2); 1744 1745 reset(span_2); 1746 next(); 1747 reset(span_1); 1748 1749 template_effect(() => { 1750 set_text(text_2, `predict( 1751${call() ?? ''} api_name=`); 1752 1753 set_text(text_3, `"/${api_name() ?? ''}"`); 1754 }); 1755 1756 append($$anchor, fragment_2); 1757 }); 1758 1759 reset(pre); 1760 reset(div_2); 1761 bind_this(div_2, ($$value) => set(python_code, $$value), () => get(python_code)); 1762 reset(code); 1763 template_effect(() => set_text(text$1, `"${short_root() ?? ''}"`)); 1764 append($$anchor, code); 1765 }; 1766 1767 var alternate_1 = ($$anchor) => { 1768 var fragment_3 = comment(); 1769 var node_5 = first_child(fragment_3); 1770 1771 { 1772 var consequent_4 = ($$anchor) => { 1773 var code_1 = root_7$3(); 1774 var div_3 = child(code_1); 1775 var node_6 = child(div_3); 1776 1777 { 1778 let $0 = derived_safe_equal(() => (get(js_code), untrack(() => get(js_code)?.innerText))); 1779 1780 CopyButton(node_6, { 1781 get code() { 1782 return get($0); 1783 } 1784 }); 1785 } 1786 1787 reset(div_3); 1788 1789 var div_4 = sibling(div_3, 2); 1790 var pre_1 = child(div_4); 1791 var span_3 = sibling(child(pre_1)); 1792 var text_4 = child(span_3); 1793 1794 reset(span_3); 1795 1796 var node_7 = sibling(span_3); 1797 1798 { 1799 var consequent_2 = ($$anchor) => { 1800 var text_5 = text(); 1801 1802 template_effect(() => set_text(text_5, `, {auth: ["${username() ?? ''}", **password**]}`)); 1803 append($$anchor, text_5); 1804 }; 1805 1806 if_block(node_7, ($$render) => { 1807 if (username() !== null) $$render(consequent_2); 1808 }); 1809 } 1810 1811 var node_8 = sibling(node_7, 2); 1812 1813 each(node_8, 1, () => get(js_zipped), index, ($$anchor, $$item) => { 1814 let call = () => get($$item).call; 1815 let api_name = () => get($$item).api_name; 1816 1817 next(); 1818 1819 var fragment_5 = root_9(); 1820 var span_4 = sibling(first_child(fragment_5)); 1821 var text_6 = child(span_4); 1822 1823 reset(span_4); 1824
1825 var node_9 = sibling(span_4); 1826 1827 { 1828 var consequent_3 = ($$anchor) => { 1829 var text_7 = text(); 1830 1831 template_effect(() => set_text(text_7, `, ${call() ?? ''}`)); 1832 append($$anchor, text_7); 1833 }; 1834 1835 if_block(node_9, ($$render) => { 1836 if (call()) $$render(consequent_3); 1837 }); 1838 } 1839 1840 next(); 1841 1842 template_effect(() => set_text(text_6, ` 1843 "/${api_name() ?? ''}"`)); 1844 1845 append($$anchor, fragment_5); 1846 }); 1847 1848 reset(pre_1); 1849 reset(div_4); 1850 bind_this(div_4, ($$value) => set(js_code, $$value), () => get(js_code)); 1851 reset(code_1); 1852 template_effect(() => set_text(text_4, `"${short_root() ?? ''}"`)); 1853 append($$anchor, code_1); 1854 }; 1855 1856 var alternate = ($$anchor) => { 1857 var fragment_7 = comment(); 1858 var node_10 = first_child(fragment_7); 1859 1860 { 1861 var consequent_5 = ($$anchor) => { 1862 var code_2 = root_12$2(); 1863 var div_5 = child(code_2); 1864 var node_11 = child(div_5); 1865 1866 { 1867 let $0 = derived_safe_equal(() => ( 1868 get(bash_code), 1869 untrack(() => get(bash_code)?.innerText) 1870 )); 1871 1872 CopyButton(node_11, { 1873 get code() { 1874 return get($0); 1875 } 1876 }); 1877 } 1878 1879 reset(div_5); 1880 1881 var div_6 = sibling(div_5, 2); 1882 1883 each(div_6, 5, () => get(bash_zipped), index, ($$anchor, $$item) => { 1884 let call = () => get($$item).call; 1885 let api_name = () => get($$item).api_name; 1886 var fragment_8 = root_13$2(); 1887 var pre_2 = first_child(fragment_8); 1888 var text_8 = child(pre_2); 1889 1890 reset(pre_2); 1891 next(2); 1892 1893 template_effect(() => set_text(text_8, `curl -X POST ${short_root() ?? ''}call/${api_name() ?? ''} -s -H "Content-Type: application/json" -d '{ 1894 "data": [${call() ?? ''}]}' \\ 1895 | awk -F'"' '{ print $4}' \\ 1896 | read EVENT_ID; curl -N ${short_root() ?? ''}call/${api_name() ?? ''}/$EVENT_ID`)); 1897 1898 append($$anchor, fragment_8); 1899 }); 1900 1901 reset(div_6); 1902 bind_this(div_6, ($$value) => set(bash_code, $$value), () => get(bash_code)); 1903 reset(code_2); 1904 append($$anchor, code_2); 1905 }; 1906 1907 if_block( 1908 node_10, 1909 ($$render) => { 1910 if (current_language() === "bash") $$render(consequent_5); 1911 }, 1912 true 1913 ); 1914 } 1915 1916 append($$anchor, fragment_7); 1917 }; 1918 1919 if_block( 1920 node_5, 1921 ($$render) => { 1922 if (current_language() === "javascript") $$render(consequent_4); else $$render(alternate, false); 1923 }, 1924 true 1925 ); 1926 } 1927 1928 append($$anchor, fragment_3); 1929 }; 1930 1931 if_block(node_1, ($$render) => { 1932 if (current_language() === "python") $$render(consequent_1); else $$render(alternate_1, false); 1933 }); 1934 } 1935 1936 append($$anchor, fragment); 1937 }, 1938 $$slots: { default: true } 1939 }); 1940 1941 reset(div); 1942 append($$anchor, div); 1943 1944 return pop($$exports); 1945} 1946 1947const python = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20aria-hidden='true'%20focusable='false'%20role='img'%20width='1em'%20height='1em'%20preserveAspectRatio='xMidYMid%20meet'%20viewBox='0%200%2032%2032'%20%3e%3cpath%20d='M15.84.5a16.4,16.4,0,0,0-3.57.32C9.1,1.39,8.53,2.53,8.53,4.64V7.48H16v1H5.77a4.73,4.73,0,0,0-4.7,3.74,14.82,14.82,0,0,0,0,7.54c.57,2.28,1.86,3.82,4,3.82h2.6V20.14a4.73,4.73,0,0,1,4.63-4.63h7.38a3.72,3.72,0,0,0,3.73-3.73V4.64A4.16,4.16,0,0,0,19.65.82,20.49,20.49,0,0,0,15.84.5ZM11.78,2.77a1.39,1.39,0,0,1,1.38,1.46,1.37,1.37,0,0,1-1.38,1.38A1.42,1.42,0,0,1,10.4,4.23,1.44,1.44,0,0,1,11.78,2.77Z'%20fill='%235a9fd4'%20%3e%3c/path%3e%3cpath%20d='M16.16,31.5a16.4,16.4,0,0,0,3.57-.32c3.17-.57,3.74-1.71,3.74-3.82V24.52H16v-1H26.23a4.73,4.73,0,0,0,4.7-3.74,14.82,14.82,0,0,0,0-7.54c-.57-2.28-1.86-3.82-4-3.82h-2.6v3.41a4.73,4.73,0,0,1-4.63,4.63H12.35a3.72,3.72,0,0,0-3.73,3.73v7.14a4.16,4.16,0,0,0,3.73,3.82A20.49,20.49,0,0,0,16.16,31.5Zm4.06-2.27a1.39,1.39,0,0,1-1.38-1.46,1.37,1.37,0,0,1,1.38-1.38,1.42,1.42,0,0,1,1.38,1.38A1.44,1.44,0,0,1,20.22,29.23Z'%20fill='%23ffd43b'%20%3e%3c/path%3e%3c/svg%3e"; 1948 1949const javascript = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20aria-hidden='true'%20focusable='false'%20role='img'%20width='1em'%20height='1em'%20preserveAspectRatio='xMidYMid%20meet'%20viewBox='0%200%2032%2032'%20%3e%3crect%20width='32'%20height='32'%20fill='%23f7df1e'%3e%3c/rect%3e%3cpath%20d='M21.5,25a3.27,3.27,0,0,0,3,1.83c1.25,0,2-.63,2-1.49,0-1-.81-1.39-2.19-2L23.56,23C21.39,22.1,20,20.94,20,18.49c0-2.25,1.72-4,4.41-4a4.44,4.44,0,0,1,4.27,2.41l-2.34,1.5a2,2,0,0,0-1.93-1.29,1.31,1.31,0,0,0-1.44,1.29c0,.9.56,1.27,1.85,1.83l.75.32c2.55,1.1,4,2.21,4,4.72,0,2.71-2.12,4.19-5,4.19a5.78,5.78,0,0,1-5.48-3.07Zm-10.63.26c.48.84.91,1.55,1.94,1.55s1.61-.39,1.61-1.89V14.69h3V25c0,3.11-1.83,4.53-4.49,4.53a4.66,4.66,0,0,1-4.51-2.75Z'%20%3e%3c/path%3e%3c/svg%3e"; 1950 1951const bash = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20version='1.1'%20id='Layer_1'%20x='0px'%20y='0px'%20viewBox='0%200%20150%20150'%20style='enable-background:new%200%200%20150%20150;%20background-color:%20%2372a824;'%20xml:space='preserve'%3e%3cscript%20xmlns=''/%3e%3cstyle%20type='text/css'%3e%20.st0{fill:%23FFFFFF;}%20%3c/style%3e%3cg%3e%3cpath%20class='st0'%20d='M118.9,40.3L81.7,18.2c-2.2-1.3-4.7-2-7.2-2s-5,0.7-7.2,2L30.1,40.3c-4.4,2.6-7.2,7.5-7.2,12.8v44.2%20c0,5.3,2.7,10.1,7.2,12.8l37.2,22.1c2.2,1.3,4.7,2,7.2,2c2.5,0,5-0.7,7.2-2l37.2-22.1c4.4-2.6,7.2-7.5,7.2-12.8V53%20C126.1,47.8,123.4,42.9,118.9,40.3z%20M90.1,109.3l0.1,3.2c0,0.4-0.2,0.8-0.5,1l-1.9,1.1c-0.3,0.2-0.5,0-0.6-0.4l0-3.1%20c-1.
19516,0.7-3.2,0.8-4.3,0.4c-0.2-0.1-0.3-0.4-0.2-0.7l0.7-2.9c0.1-0.2,0.2-0.5,0.3-0.6c0.1-0.1,0.1-0.1,0.2-0.1%20c0.1-0.1,0.2-0.1,0.3,0c1.1,0.4,2.6,0.2,3.9-0.5c1.8-0.9,2.9-2.7,2.9-4.5c0-1.6-0.9-2.3-3-2.3c-2.7,0-5.2-0.5-5.3-4.5%20c0-3.3,1.7-6.7,4.4-8.8l0-3.2c0-0.4,0.2-0.8,0.5-1l1.8-1.2c0.3-0.2,0.5,0,0.6,0.4l0,3.2c1.3-0.5,2.5-0.7,3.6-0.4%20c0.2,0.1,0.3,0.4,0.2,0.7l-0.7,2.8c-0.1,0.2-0.2,0.4-0.3,0.6c-0.1,0.1-0.1,0.1-0.2,0.1c-0.1,0-0.2,0.1-0.3,0%20c-0.5-0.1-1.6-0.4-3.4,0.6c-1.9,1-2.6,2.6-2.5,3.8c0,1.5,0.8,1.9,3.3,1.9c3.4,0.1,4.9,1.6,5,5C94.7,103.4,92.9,107,90.1,109.3z%20M109.6,103.9c0,0.3,0,0.6-0.3,0.7l-9.4,5.7c-0.2,0.1-0.4,0-0.4-0.3v-2.4c0-0.3,0.2-0.5,0.4-0.6l9.3-5.5c0.2-0.1,0.4,0,0.4,0.3%20V103.9z%20M116.1,49.6L80.9,71.3c-4.4,2.6-7.6,5.4-7.6,10.7v43.4c0,3.2,1.3,5.2,3.2,5.8c-0.6,0.1-1.3,0.2-2,0.2%20c-2.1,0-4.1-0.6-5.9-1.6l-37.2-22.1c-3.6-2.2-5.9-6.2-5.9-10.5V53c0-4.3,2.3-8.4,5.9-10.5l37.2-22.1c1.8-1.1,3.8-1.6,5.9-1.6%20s4.1,0.6,5.9,1.6l37.2,22.1c3.1,1.8,5.1,5,5.7,8.5C122.1,48.4,119.3,47.7,116.1,49.6z'/%3e%3c/g%3e%3c/svg%3e"; 1952 1953var root_4$3 = from_html(`<span class="code svelte-17pn6bc"></span>`); 1954var root_3$3 = from_html(`<hr class="hr svelte-17pn6bc"/> <div style="margin:10px;"><p><!> <span class="code highlight svelte-17pn6bc"><!></span></p> <p class="desc svelte-17pn6bc"> </p></div>`, 1); 1955var root_7$2 = from_html(`<div class="load-wrap"><!></div>`); 1956var root$4 = from_html(`<h4 class="svelte-17pn6bc"><div class="toggle-icon svelte-17pn6bc"><div class="toggle-dot toggle-right svelte-17pn6bc"></div></div> Returns <!></h4> <div></div> <!>`, 1); 1957 1958function ResponseSnippet($$anchor, $$props) { 1959 push($$props, false); 1960 1961 let is_running = prop($$props, 'is_running', 12); 1962 let endpoint_returns = prop($$props, 'endpoint_returns', 12); 1963 let js_returns = prop($$props, 'js_returns', 12); 1964 let current_language = prop($$props, 'current_language', 12); 1965 1966 var $$exports = { 1967 get is_running() { 1968 return is_running(); 1969 }, 1970 1971 set is_running($$value) { 1972 is_running($$value); 1973 flushSync(); 1974 }, 1975 1976 get endpoint_returns() { 1977 return endpoint_returns(); 1978 }, 1979 1980 set endpoint_returns($$value) { 1981 endpoint_returns($$value); 1982 flushSync(); 1983 }, 1984 1985 get js_returns() { 1986 return js_returns(); 1987 }, 1988 1989 set js_returns($$value) { 1990 js_returns($$value); 1991 flushSync(); 1992 }, 1993 1994 get current_language() { 1995 return current_language(); 1996 }, 1997 1998 set current_language($$value) { 1999 current_language($$value); 2000 flushSync(); 2001 } 2002 }; 2003 2004 init(); 2005 2006 var fragment = root$4(); 2007 var h4 = first_child(fragment); 2008 var node = sibling(child(h4), 2); 2009 2010 { 2011 var consequent = ($$anchor) => { 2012 var text$1 = text(); 2013 2014 template_effect(() => set_text(text$1, `${current_language() == "python" ? "tuple" : "list"} of ${( 2015 deep_read_state(endpoint_returns()), 2016 untrack(() => endpoint_returns().length) 2017 ) ?? ''} 2018 elements`)); 2019 2020 append($$anchor, text$1); 2021 }; 2022 2023 var alternate = ($$anchor) => { 2024 var text_1 = text('1 element'); 2025 2026 append($$anchor, text_1); 2027 }; 2028 2029 if_block(node, ($$render) => { 2030 if (( 2031 deep_read_state(endpoint_returns()), 2032 untrack(() => endpoint_returns().length > 1) 2033 )) $$render(consequent); else $$render(alternate, false); 2034 }); 2035 } 2036 2037 reset(h4); 2038 2039 var div = sibling(h4, 2); 2040 let classes; 2041 2042 each(div, 5, endpoint_returns, index, ($$anchor, $$item, i) => { 2043 let label = () => get($$item).label; 2044 let python_type = () => get($$item).python_type; 2045 let component = () => get($$item).component; 2046 var fragment_2 = root_3$3(); 2047 var div_1 = sibling(first_child(fragment_2), 2); 2048 var p = child(div_1); 2049 var node_1 = child(p); 2050 2051 { 2052 var consequent_1 = ($$anchor) => { 2053 var span = root_4$3(); 2054 2055 span.textContent = `[${i}]`; 2056 append($$anchor, span); 2057 }; 2058 2059 if_block(node_1, ($$render) => { 2060 if (( 2061 deep_read_state(endpoint_returns()), 2062 untrack(() => endpoint_returns().length > 1) 2063 )) $$render(consequent_1); 2064 }); 2065 } 2066 2067 var span_1 = sibling(node_1, 2); 2068 var node_2 = child(span_1); 2069 2070 { 2071 var consequent_2 = ($$anchor) => { 2072 var text_2 = text(); 2073 2074 template_effect(() => set_text(text_2, (python_type(), untrack(() => python_type().type)))); 2075 append($$anchor, text_2); 2076 }; 2077 2078 var alternate_1 = ($$anchor) => { 2079 var text_3 = text(); 2080 2081 template_effect(() => set_text(text_3, ( 2082 deep_read_state(js_returns()), 2083 untrack(() => js_returns()[i].type) 2084 ))); 2085 2086 append($$anchor, text_3); 2087 }; 2088 2089 if_block(node_2, ($$render) => { 2090 if (current_language() === "python") $$render(consequent_2); else $$render(alternate_1, false); 2091 }); 2092 } 2093 2094 reset(span_1); 2095 reset(p); 2096 2097 var p_1 = sibling(p, 2); 2098 var text_4 = child(p_1); 2099 2100 reset(p_1); 2101 reset(div_1); 2102 2103 template_effect(() => set_text(text_4, `The output value that appears in the "${label() ?? ''}" ${component() ?? ''} 2104 component.`)); 2105 2106 append($$anchor, fragment_2); 2107 }); 2108 2109 reset(div); 2110 2111 var node_3 = sibling(div, 2); 2112 2113 { 2114 var consequent_3 = ($$anchor) => { 2115 var div_2 = root_7$2(); 2116 var node_4 = child(div_2); 2117 2118 Loader(node_4, { margin: false }); 2119 reset(div_2); 2120 append($$anchor, div_2); 2121 }; 2122 2123 if_block(node_3, ($$render) => { 2124 if (is_running()) $$render(consequent_3); 2125 }); 2126 } 2127 2128 template_effect(() => classes = set_class(div, 1, '', null, classes, { hide: is_running() })); 2129 append($$anchor, fragment); 2130 2131 return pop($$exports); 2132} 2133 2134const skill = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjE0IDIyIDEyMiAxMDYiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOyI+CjxyZWN0IHg9IjIyIiB5PSIyOCIgd2lkdGg9IjEwNiIgaGVpZ2h0PSI5NCIgcng9IjgiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzM3NDE1MSIgc3Ryb2tlLXdpZHRoPSI2Ii8+CjxyZWN0IHg9IjIyIiB5PSIyOCIgd2lkdGg9IjEwNiIgaGVpZ2h0PSIyMCIgcng9IjgiIGZpbGw9IiMzNzQxNTEiIGZpbGwtb3BhY2l0eT0iMC4wOCIvPgo8Y2lyY2xlIGN4PSIzOCIgY3k9IjM4IiByPSI0IiBmaWxsPSIjZmY1ZjU3Ii8+CjxjaXJjbGUgY3g9IjUyIiBjeT0iMzgiIHI9IjQiIGZpbGw9IiNmZWJjMmUiLz4KPGNpcmNsZSBjeD0iNjYiIGN5PSIzOCIgcj0iNCIgZmlsbD0iIzI4Yzg0MCIvPgo8dGV4dCB4PSIzOCIgeT0iNzYiIGZpbGw9IiMzNzQxNTEiIGZvbnQtZmFtaWx5PSJtb25vc3BhY2UiIGZvbnQtc2l6ZT0iMjIiIGZvbnQtd2VpZ2h0PSJib2xkIj4mZ3Q7XzwvdGV4dD4KPHJlY3QgeD0iMzgiIHk9Ijg4IiB3aWR0aD0iNTAiIGhlaWdodD0iNCIgcng9IjIiIGZpbGw9IiMzNzQxNTEiIGZpbGwtb3BhY2l0eT0iMC4zNSIvPgo8cmVjdCB4PSIzOCIgeT0iMTAwIiB3aWR0aD0iMzUiIGhlaWdodD0iNCIgcng9IjIiIGZpbGw9IiMzNzQxNTEiIGZpbGwtb3BhY2l0eT0iMC4yIi8+Cjwvc3ZnPgo="; 2135 2136var root_1$1 = from_html(`<code class="svelte-1cyp2hi"><div class="copy svelte-1cyp2hi"><!></div> <div><pre class="svelte-1cyp2hi"> </pre></div></code>`); 2137var root_2$1 = from_html(`<code class="svelte-1cyp2hi"><div class="copy svelte-1cyp2hi"><!></div> <div><pre class="svelte-1cyp2hi"> </pre></div></code>`); 2138var root_3$2 = from_html(`<code class="svelte-1cyp2hi"><div class="copy svelte-1cyp2hi"><!></div> <div><pre class="svelte-1cyp2hi"> </pre></div></code>`); 2139 2140var root$3 = from_html(`<div class="skill-content svelte-1cyp2hi"><p class="padded svelte-1cyp2hi">1. Make sure you are using the latest version of Gradio:</p> <!> <p class="padded svelte-1cyp2hi">
21402. Install the usage of this Space as a Skill for your coding agent by 2141 running this in your terminal:</p> <!> <p class="hint svelte-1cyp2hi">Instead of <span class="inline-code svelte-1cyp2hi">--claude</span>, you can use <span class="inline-code svelte-1cyp2hi">--cursor</span>, <span class="inline-code svelte-1cyp2hi">--codex</span>, or <span class="inline-code svelte-1cyp2hi">--opencode</span>. Combine flags to install for 2142 multiple agents. Use <span class="inline-code svelte-1cyp2hi">--global</span> to install user-level 2143 instead of per-project.</p> <p class="padded svelte-1cyp2hi">3. This will add a skill to your coding agent that describes how to use this 2144 Space via Python, JavaScript, and cURL API. The skill will look like this:</p> <!></div>`); 2145 2146function SkillSnippet($$anchor, $$props) { 2147 push($$props, false); 2148 2149 const effective_space_id = mutable_source(); 2150 const skill_id = mutable_source(); 2151 const install_gradio = mutable_source(); 2152 const install_cmd_claude = mutable_source(); 2153 const install_cmd_cursor = mutable_source(); 2154 const install_cmd_codex = mutable_source(); 2155 const skill_preview = mutable_source(); 2156 let space_id = prop($$props, 'space_id', 12); 2157 2158 legacy_pre_effect(() => (deep_read_state(space_id())), () => { 2159 set(effective_space_id, space_id() || ""); 2160 }); 2161 2162 legacy_pre_effect(() => (get(effective_space_id)), () => { 2163 set(skill_id, get(effective_space_id).replace("/", "-")); 2164 }); 2165 2166 legacy_pre_effect(() => {}, () => { 2167 set(install_gradio, "pip install --upgrade gradio"); 2168 }); 2169 2170 legacy_pre_effect(() => (get(effective_space_id)), () => { 2171 set(install_cmd_claude, `gradio skills add ${get(effective_space_id)} --claude`); 2172 }); 2173 2174 legacy_pre_effect(() => (get(effective_space_id)), () => { 2175 set(install_cmd_cursor, `gradio skills add ${get(effective_space_id)} --cursor`); 2176 }); 2177 2178 legacy_pre_effect(() => (get(effective_space_id)), () => { 2179 set(install_cmd_codex, `gradio skills add ${get(effective_space_id)} --codex`); 2180 }); 2181 2182 legacy_pre_effect(() => (get(skill_id), get(effective_space_id)), () => { 2183 set(skill_preview, `--- 2184name: ${get(skill_id)} 2185description: Use the ${get(effective_space_id)} Gradio Space via API. Provides Python, JavaScript, and cURL usage examples. 2186--- 2187 2188# ${get(effective_space_id)} 2189 2190This skill describes how to use the ${get(effective_space_id)} Gradio Space programmatically. 2191 2192## API Endpoints 2193...`); 2194 }); 2195 2196 legacy_pre_effect_reset(); 2197 2198 var $$exports = { 2199 get space_id() { 2200 return space_id(); 2201 }, 2202 2203 set space_id($$value) { 2204 space_id($$value); 2205 flushSync(); 2206 } 2207 }; 2208 2209 var div = root$3(); 2210 var node = sibling(child(div), 2); 2211 2212 Block(node, { 2213 children: ($$anchor, $$slotProps) => { 2214 var code = root_1$1(); 2215 var div_1 = child(code); 2216 var node_1 = child(div_1); 2217 2218 CopyButton(node_1, { 2219 get code() { 2220 return get(install_gradio); 2221 } 2222 }); 2223 2224 reset(div_1); 2225 2226 var div_2 = sibling(div_1, 2); 2227 var pre = child(div_2); 2228 var text = child(pre); 2229 2230 reset(pre); 2231 reset(div_2); 2232 reset(code); 2233 template_effect(() => set_text(text, `$ ${get(install_gradio) ?? ''}`)); 2234 append($$anchor, code); 2235 }, 2236 $$slots: { default: true } 2237 }); 2238 2239 var node_2 = sibling(node, 4); 2240 2241 Block(node_2, { 2242 children: ($$anchor, $$slotProps) => { 2243 var code_1 = root_2$1(); 2244 var div_3 = child(code_1); 2245 var node_3 = child(div_3); 2246 2247 CopyButton(node_3, { 2248 get code() { 2249 return get(install_cmd_claude); 2250 } 2251 }); 2252 2253 reset(div_3); 2254 2255 var div_4 = sibling(div_3, 2); 2256 var pre_1 = child(div_4); 2257 var text_1 = child(pre_1); 2258 2259 reset(pre_1); 2260 reset(div_4); 2261 reset(code_1); 2262 template_effect(() => set_text(text_1, `$ ${get(install_cmd_claude) ?? ''}`)); 2263 append($$anchor, code_1); 2264 }, 2265 $$slots: { default: true } 2266 }); 2267 2268 var node_4 = sibling(node_2, 6); 2269 2270 Block(node_4, { 2271 children: ($$anchor, $$slotProps) => { 2272 var code_2 = root_3$2(); 2273 var div_5 = child(code_2); 2274 var node_5 = child(div_5); 2275 2276 CopyButton(node_5, { 2277 get code() { 2278 return get(skill_preview); 2279 } 2280 }); 2281 2282 reset(div_5); 2283 2284 var div_6 = sibling(div_5, 2); 2285 var pre_2 = child(div_6); 2286 var text_2 = child(pre_2, true); 2287 2288 reset(pre_2); 2289 reset(div_6); 2290 reset(code_2); 2291 template_effect(() => set_text(text_2, get(skill_preview))); 2292 append($$anchor, code_2); 2293 }, 2294 $$slots: { default: true } 2295 }); 2296 2297 reset(div); 2298 append($$anchor, div); 2299 2300 return pop($$exports); 2301} 2302
2303const mcp = ""+new URL('mcp-DNm9doVd.svg', import.meta.url).href+""; 2304 2305var root_3$1 = from_html(`<button type="button"> </button>`); 2306 2307var root_5$1 = from_html(`<div class="mcp-url svelte-1uo4thf"><label for="mcp-server-url" class="svelte-1uo4thf"><span class="status-indicator active svelte-1uo4thf">â</span>MCP Server URL 2308 (Streamable HTTP)</label> <div class="textbox svelte-1uo4thf"><input id="mcp-server-url" type="text" readonly="" class="svelte-1uo4thf"/> <!></div></div>`); 2309 2310var root_4$2 = from_html(`<!> <p class="svelte-1uo4thf"> </p>`, 1); 2311var root_6$1 = from_html(`<div class="tool-selection-controls svelte-1uo4thf"><button class="select-all-btn svelte-1uo4thf">Select All</button> <button class="select-none-btn svelte-1uo4thf">Select None</button></div>`); 2312var root_8$1 = from_html(`<input type="checkbox" class="tool-checkbox svelte-1uo4thf"/>`); 2313var root_10 = from_html(`<div class="tool-analytics-wrapper svelte-1uo4thf" style="margin-left: 1em;"><span class="tool-analytics svelte-1uo4thf" style="color: var(--body-text-color-subdued);"> </span></div>`); 2314var root_13$1 = from_html(`<div class="parameter svelte-1uo4thf"><code class="svelte-1uo4thf"> </code> <span class="parameter-type svelte-1uo4thf"> </span> <p class="parameter-description svelte-1uo4thf"> </p></div>`); 2315var root_12$1 = from_html(`<div class="tool-parameters svelte-1uo4thf"></div>`); 2316var root_14$1 = from_html(`<p class="svelte-1uo4thf">Takes no input parameters</p>`); 2317var root_11$1 = from_html(`<div class="tool-content svelte-1uo4thf"><!></div>`); 2318var root_7$1 = from_html(`<div class="tool-item svelte-1uo4thf"><div class="tool-header-wrapper svelte-1uo4thf"><!> <button class="tool-header svelte-1uo4thf"><span style="display: inline-block" class="svelte-1uo4thf"><span style="display: inline-block; padding-right: 6px; vertical-align: sub" class="svelte-1uo4thf"><!></span> <span class="tool-name svelte-1uo4thf"> </span> <span class="tool-description svelte-1uo4thf"> </span> <!></span> <span class="tool-arrow svelte-1uo4thf"> </span></button></div> <!></div>`); 2319var root_15 = from_html(`<code class="svelte-1uo4thf"><div class="copy svelte-1uo4thf"><!></div> <div class="svelte-1uo4thf"><pre class="svelte-1uo4thf"> </pre></div></code>`); 2320var root_16 = from_html(`<code class="svelte-1uo4thf"><div class="copy svelte-1uo4thf"><!></div> <div class="svelte-1uo4thf"><pre class="svelte-1uo4thf"> </pre></div></code>`); 2321 2322var root_17$1 = from_html(`<div class="file-upload-section svelte-1uo4thf"><label class="checkbox-label svelte-1uo4thf"><input type="checkbox" class="checkbox svelte-1uo4thf"/> Include Gradio file upload tool</label> <p class="file-upload-explanation svelte-1uo4thf">The <code class="svelte-1uo4thf">upload_files_to_gradio</code> tool uploads files from your 2323 local <code class="svelte-1uo4thf">UPLOAD_DIRECTORY</code> (or any of its subdirectories) to 2324 the Gradio app. This is needed because MCP servers require files to be 2325 provided as URLs. You can omit this tool if you prefer to upload files 2326 manually. This tool requires <a href="https://docs.astral.sh/uv/getting-started/installation/" target="_blank" class="svelte-1uo4thf">uv</a> to be installed.</p></div>`); 2327 2328var root_2 = from_html( 2329 `<div class="transport-selection svelte-1uo4thf"><div class="snippets svelte-1uo4thf"><span class="transport-label svelte-1uo4thf">Transport:</span> <!></div></div> <!> <div class="tool-selection svelte-1uo4thf"><strong class="svelte-1uo4thf"> <span style="display: inline-block; vertical-align: sub;" class="svelte-1uo4thf"><!></span>), Resources (<span style="display: inline-block; vertical-align: sub;" class="svelte-1uo4thf"><!></span>), and Prompts (<span style="display: inline-block; vertical-align: sub;" class="svelte-1uo4thf"><!></span>)</strong> <!></div> <div class="mcp-tools svelte-1uo4thf"></div> <p class="svelte-1uo4thf"> </p> <div><strong class="svelte-1uo4thf">Streamable HTTP Transport</strong>: To add this MCP to clients that 2330 support Streamable HTTP, simply add the following configuration to your MCP 2331 config. <p class="svelte-1uo4thf"> </p> <!></div> <div><strong class="svelte-1uo4thf">STDIO Transport</strong>: For clients that only support stdio (e.g. 2332 Claude Desktop), first <a href="https://nodejs.org/en/download/" target="_blank" class="svelte-1uo4thf">install Node.js</a>. Then, you can use the following command: <p class="svelte-1uo4thf"> </p> <!></div> <!> <p class="svelte-1uo4thf"> </p> <p class="svelte-1uo4thf"><a target="_blank" class="svelte-1uo4thf">Read more about MCP in the Gradio docs</a></p>`, 2333 1 2334); 2335 2336var root_18 = from_html( 2337 `This Gradio app can also serve as an MCP server, with an MCP tool 2338 corresponding to each API endpoint. To enable this, launch this Gradio app 2339 with <code class="svelte-1uo4thf">.launch(mcp_server=True)</code> or set the <code class="svelte-1uo4thf">GRADIO_MCP_SERVER</code> env variable to <code class="svelte-1uo4thf">"True"</code>.`, 2340 1 2341); 2342 2343function MCPSnippet($$anchor, $$props) { 2344 push($$props, false); 2345 2346 const display_url = mutable_source(); 2347 const mcp_json_streamable_http = mutable_source(); 2348 const mcp_json_stdio_updated = mutable_source(); 2349 let mcp_server_active = prop($$props, 'mcp_server_active', 12); 2350 let mcp_server_url_streamable = prop($$props, 'mcp_server_url_streamable', 12); 2351 let root = prop($$props, 'root', 12); 2352 let tools = prop($$props, 'tools', 12); 2353 let all_tools = prop($$props, 'all_tools', 28, () => []); 2354 let selected_tools = prop($$props, 'selected_tools', 28, () => new Set()); 2355 let mcp_json_stdio = prop($$props, 'mcp_json_stdio', 12); 2356 let file_data_present = prop($$props, 'file_data_present', 12); 2357 let mcp_docs = prop($$props, 'mcp_docs', 12); 2358 let analytics = prop($$props, 'analytics', 12); 2359 let config_snippets = prop($$props, 'config_snippets', 12); 2360 let current_transport = mutable_source("streamable_http"); 2361 let include_file_upload = mutable_source(true); 2362 const transports = [["streamable_http", "Streamable HTTP"], ["stdio", "STDIO"]]; 2363 const tool_type_icons = { tool: Tool, resource: Resource, prompt: Prompt }; 2364 2365 // Helper function to add/remove file upload tool from config 2366 function update_config_with_file_upload(base_config, include_upload) { 2367 if (!base_config) return null; 2368 2369 const config = JSON.parse(JSON.stringify(base_config)); 2370 2371 if (include_upload && file_data_present()) { 2372 const upload_file_mcp_server = { 2373 command: "uvx", 2374 args: [ 2375 "--from", 2376 "gradio[mcp]", 2377 "gradio", 2378 "upload-mcp", 2379 root(), 2380 "<UPLOAD_DIRECTORY>" 2381 ] 2382 }; 2383 2384 config.mcpServers.upload_files_to_gradio = upload_file_mcp_server; 2385 } else { 2386 delete config.mcpServers?.upload_files_to_gradio; 2387 } 2388 2389 return config; 2390 } 2391 2392 legacy_pre_effect(() => (deep_read_state(mcp_server_url_streamable())), () => { 2393 set(display_url, mcp_server_url_streamable()); 2394 }); 2395 2396 legacy_pre_effect( 2397 () => ( 2398 deep_read_state(mcp_json_stdio()), 2399 deep_read_state(mcp_server_url_streamable()), 2400 get(include_file_upload) 2401 ), 2402 () => { 2403 set(mcp_json_streamable_http, update_config_with_file_upload( 2404 mcp_json_stdio() 2405 ? { mcpServers: { gradio: { url: mcp_server_url_streamable() } } } 2406 : null, 2407 get(include_file_upload) 2408 )); 2409 } 2410 ); 2411 2412 legacy_pre_effect( 2413 () => ( 2414 deep_read_state(mcp_json_stdio()), 2415 get(include_file_upload) 2416 ), 2417 () => { 2418 set(mcp_json_stdio_updated, update_config_with_file_upload(mcp_json_stdio(), get(include_file_upload))); 2419 } 2420 ); 2421 2422 legacy_pre_effect( 2423 () => ( 2424 get(mcp_json_streamable_http), 2425 get(mcp_json_stdio_updated) 2426 ), 2427 () => { 2428 config_snippets({ 2429 streamable_http: JSON.stringify(get(mcp_json_streamable_http), null, 2), 2430 stdio: JSON.stringify(get(mcp_json_stdio_updated), null, 2) 2431 }); 2432 } 2433 ); 2434 2435 legacy_pre_effect_reset(); 2436 2437 var $$exports = { 2438 get mcp_server_active() { 2439 return mcp_server_active(); 2440 }, 2441 2442 set mcp_server_active($$value) { 2443 mcp_server_active($$value); 2444 flushSync(); 2445 }, 2446 2447 get mcp_server_url_streamable() { 2448 return mcp_server_url_streamable(); 2449 }, 2450 2451 set mcp_server_url_streamable($$value) { 2452 mcp_server_url_streamable($$value); 2453 flushSync(); 2454 }, 2455 2456 get root() {
2457 return root(); 2458 }, 2459 2460 set root($$value) { 2461 root($$value); 2462 flushSync(); 2463 }, 2464 2465 get tools() { 2466 return tools(); 2467 }, 2468 2469 set tools($$value) { 2470 tools($$value); 2471 flushSync(); 2472 }, 2473 2474 get all_tools() { 2475 return all_tools(); 2476 }, 2477 2478 set all_tools($$value) { 2479 all_tools($$value); 2480 flushSync(); 2481 }, 2482 2483 get selected_tools() { 2484 return selected_tools(); 2485 }, 2486 2487 set selected_tools($$value) { 2488 selected_tools($$value); 2489 flushSync(); 2490 }, 2491 2492 get mcp_json_stdio() { 2493 return mcp_json_stdio(); 2494 }, 2495 2496 set mcp_json_stdio($$value) { 2497 mcp_json_stdio($$value); 2498 flushSync(); 2499 }, 2500 2501 get file_data_present() { 2502 return file_data_present(); 2503 }, 2504 2505 set file_data_present($$value) { 2506 file_data_present($$value); 2507 flushSync(); 2508 }, 2509 2510 get mcp_docs() { 2511 return mcp_docs(); 2512 }, 2513 2514 set mcp_docs($$value) { 2515 mcp_docs($$value); 2516 flushSync(); 2517 }, 2518 2519 get analytics() { 2520 return analytics(); 2521 }, 2522 2523 set analytics($$value) { 2524 analytics($$value); 2525 flushSync(); 2526 }, 2527 2528 get config_snippets() { 2529 return config_snippets(); 2530 }, 2531 2532 set config_snippets($$value) { 2533 config_snippets($$value); 2534 flushSync(); 2535 } 2536 }; 2537 2538 init(); 2539 2540 var fragment = comment(); 2541 var node = first_child(fragment); 2542 2543 { 2544 var consequent_8 = ($$anchor) => { 2545 var fragment_1 = root_2(); 2546 var div = first_child(fragment_1); 2547 var div_1 = child(div); 2548 var node_1 = sibling(child(div_1), 2); 2549 2550 each(node_1, 1, () => transports, index, ($$anchor, $$item) => { 2551 var $$array = user_derived(() => to_array(get($$item), 2)); 2552 let transport = () => get($$array)[0]; 2553 let display_name = () => get($$array)[1]; 2554 var button = root_3$1(); 2555 var text = child(button, true); 2556 2557 reset(button); 2558 2559 template_effect(() => { 2560 set_class(button, 1, `snippet ${get(current_transport) === transport() ? 'current-lang' : 'inactive-lang'}`, 'svelte-1uo4thf'); 2561 set_text(text, display_name()); 2562 }); 2563 2564 event('click', button, () => set(current_transport, transport())); 2565 append($$anchor, button); 2566 }); 2567 2568 reset(div_1); 2569 reset(div); 2570 2571 var node_2 = sibling(div, 2); 2572 2573 { 2574 var consequent = ($$anchor) => { 2575 var fragment_2 = root_4$2(); 2576 var node_3 = first_child(fragment_2); 2577 2578 Block(node_3, { 2579 children: ($$anchor, $$slotProps) => { 2580 var div_2 = root_5$1(); 2581 var div_3 = sibling(child(div_2), 2); 2582 var input = child(div_3); 2583 2584 remove_input_defaults(input); 2585 2586 var node_4 = sibling(input, 2); 2587 2588 CopyButton(node_4, { 2589 get code() { 2590 return get(display_url); 2591 } 2592 }); 2593 2594 reset(div_3); 2595 reset(div_2); 2596 template_effect(() => set_value(input, get(display_url))); 2597 append($$anchor, div_2); 2598 }, 2599 $$slots: { default: true } 2600 }); 2601 2602 next(2); 2603 append($$anchor, fragment_2); 2604 }; 2605 2606 if_block(node_2, ($$render) => { 2607 if (get(current_transport) !== "stdio") $$render(consequent); 2608 }); 2609 } 2610 2611 var div_4 = sibling(node_2, 2); 2612 var strong = child(div_4); 2613 var text_1 = child(strong); 2614 var span = sibling(text_1); 2615 var node_5 = child(span); 2616 2617 Tool(node_5, {}); 2618 reset(span); 2619 2620 var span_1 = sibling(span, 2); 2621 var node_6 = child(span_1); 2622 2623 Resource(node_6, {}); 2624 reset(span_1); 2625 2626 var span_2 = sibling(span_1, 2); 2627 var node_7 = child(span_2); 2628 2629 Prompt(node_7, {}); 2630 reset(span_2); 2631 next(); 2632 reset(strong); 2633 2634 var node_8 = sibling(strong, 2); 2635 2636 { 2637 var consequent_1 = ($$anchor) => { 2638 var div_5 = root_6$1(); 2639 var button_1 = child(div_5); 2640 var button_2 = sibling(button_1, 2); 2641 2642 reset(div_5); 2643 2644 event('click', button_1, () => { 2645 selected_tools(new Set(all_tools().map((t) => t.name))); 2646 }); 2647 2648 event('click', button_2, () => { 2649 selected_tools(new Set()); 2650 }); 2651 2652 append($$anchor, div_5); 2653 }; 2654 2655 if_block(node_8, ($$render) => { 2656 if (( 2657 deep_read_state(all_tools()), 2658 untrack(() => all_tools().length > 0) 2659 )) $$render(consequent_1); 2660 }); 2661 } 2662 2663 reset(div_4); 2664 2665 var div_6 = sibling(div_4, 2); 2666 2667 each( 2668 div_6, 2669 5, 2670 () => ( 2671 deep_read_state(all_tools()), 2672 deep_read_state(tools()), 2673 untrack(() => all_tools().length > 0 ? all_tools() : tools()) 2674 ), 2675 index, 2676 ($$anchor, tool, $$index_2) => { 2677 const success_rate = derived_safe_equal(() => ( 2678 deep_read_state(analytics()), 2679 get(tool), 2680 untrack(() => analytics()[get(tool).meta.endpoint_name]?.success_rate || 0) 2681 )); 2682 2683 var div_7 = root_7$1(); 2684 var div_8 = child(div_7); 2685 var node_9 = child(div_8); 2686 2687 { 2688 var consequent_2 = ($$anchor) => { 2689 var input_1 = root_8$1(); 2690 2691 remove_input_defaults(input_1); 2692 2693 template_effect( 2694 ($0) => { 2695 set_checked(input_1, $0); 2696 input_1.disabled = get(current_transport) !== "streamable_http"; 2697 set_style(input_1, get(current_transport) !== "streamable_http" ? "opacity: 0.5;
2697 cursor: not-allowed;" : ""); 2698 }, 2699 [ 2700 () => ( 2701 deep_read_state(selected_tools()), 2702 get(tool), 2703 get(current_transport), 2704 untrack(() => selected_tools().has(get(tool).name) || get(current_transport) !== "streamable_http") 2705 ) 2706 ] 2707 ); 2708 2709 event('change', input_1, (e) => { 2710 if (e.currentTarget.checked) { 2711 selected_tools().add(get(tool).name); 2712 } else { 2713 selected_tools().delete(get(tool).name); 2714 } 2715 2716 selected_tools(selected_tools()); 2717 }); 2718 2719 append($$anchor, input_1); 2720 }; 2721 2722 if_block(node_9, ($$render) => { 2723 if (( 2724 deep_read_state(all_tools()), 2725 untrack(() => all_tools().length > 0) 2726 )) $$render(consequent_2); 2727 }); 2728 } 2729 2730 var button_3 = sibling(node_9, 2); 2731 var span_3 = child(button_3); 2732 var span_4 = child(span_3); 2733 var node_10 = child(span_4); 2734 2735 { 2736 var consequent_3 = ($$anchor) => { 2737 const Icon = derived_safe_equal(() => ( 2738 get(tool), 2739 untrack(() => tool_type_icons[get(tool).meta.mcp_type]) 2740 )); 2741 2742 get(Icon)($$anchor, {}); 2743 }; 2744 2745 if_block(node_10, ($$render) => { 2746 if (( 2747 get(tool), 2748 untrack(() => tool_type_icons[get(tool).meta.mcp_type]) 2749 )) $$render(consequent_3); 2750 }); 2751 } 2752 2753 reset(span_4); 2754 2755 var span_5 = sibling(span_4, 2); 2756 var text_2 = child(span_5, true); 2757 2758 reset(span_5); 2759 2760 var span_6 = sibling(span_5, 2); 2761 var text_3 = child(span_6, true); 2762 2763 reset(span_6); 2764
2765 var node_11 = sibling(span_6, 2); 2766 2767 { 2768 var consequent_4 = ($$anchor) => { 2769 const endpoint_analytics = derived_safe_equal(() => ( 2770 deep_read_state(analytics()), 2771 get(tool), 2772 untrack(() => analytics()[get(tool).meta.endpoint_name]) 2773 )); 2774 2775 const p50 = derived_safe_equal(() => ( 2776 deep_read_state(get(endpoint_analytics)), 2777 untrack(() => get(endpoint_analytics).process_time_percentiles["50th"]) 2778 )); 2779 2780 var div_9 = root_10(); 2781 var span_7 = child(div_9); 2782 var text_4 = child(span_7); 2783 2784 reset(span_7); 2785 reset(div_9); 2786 2787 template_effect( 2788 ($0, $1) => set_text(text_4, `${( 2789 deep_read_state(get(endpoint_analytics)), 2790 untrack(() => get(endpoint_analytics).total_requests) 2791 ) ?? ''} requests (${$0 ?? ''}% successful, p50: ${$1 ?? ''})`), 2792 [ 2793 () => ( 2794 deep_read_state(get(success_rate)), 2795 untrack(() => Math.round(get(success_rate) * 100)) 2796 ), 2797 2798 () => ( 2799 deep_read_state(format_latency), 2800 deep_read_state(get(p50)), 2801 untrack(() => format_latency(get(p50))) 2802 ) 2803 ] 2804 ); 2805 2806 append($$anchor, div_9); 2807 }; 2808 2809 if_block(node_11, ($$render) => { 2810 if (( 2811 deep_read_state(analytics()), 2812 get(tool), 2813 untrack(() => analytics()[get(tool).meta.endpoint_name]) 2814 )) $$render(consequent_4); 2815 }); 2816 } 2817 2818 reset(span_3); 2819 2820 var span_8 = sibling(span_3, 2); 2821 var text_5 = child(span_8, true); 2822 2823 reset(span_8); 2824 reset(button_3); 2825 reset(div_8); 2826
2827 var node_12 = sibling(div_8, 2); 2828 2829 { 2830 var consequent_6 = ($$anchor) => { 2831 var div_10 = root_11$1(); 2832 var node_13 = child(div_10); 2833 2834 { 2835 var consequent_5 = ($$anchor) => { 2836 var div_11 = root_12$1(); 2837 2838 each( 2839 div_11, 2840 5, 2841 () => ( 2842 get(tool), 2843 untrack(() => Object.entries(get(tool).parameters)) 2844 ), 2845 index, 2846 ($$anchor, $$item) => { 2847 var $$array_1 = user_derived(() => to_array(get($$item), 2)); 2848 let name = () => get($$array_1)[0]; 2849 let param = () => get($$array_1)[1]; 2850 var div_12 = root_13$1(); 2851 var code = child(div_12); 2852 var text_6 = child(code, true); 2853 2854 reset(code); 2855 2856 var span_9 = sibling(code, 2); 2857 var text_7 = child(span_9); 2858 2859 reset(span_9); 2860 2861 var p = sibling(span_9, 2); 2862 var text_8 = child(p, true); 2863 2864 reset(p); 2865 reset(div_12); 2866 2867 template_effect( 2868 ($0) => { 2869 set_text(text_6, name()); 2870 set_text(text_7, `(${(param(), untrack(() => param().type)) ?? ''}${$0 ?? ''})`); 2871 2872 set_text(text_8, ( 2873 param(), 2874 untrack(() => param().description 2875 ? param().description 2876 : "â ï¸ No description for this parameter in function docstring") 2877 )); 2878 }, 2879 [ 2880 () => ( 2881 param(), 2882 untrack(() => param().default !== undefined ? `, default: ${JSON.stringify(param().default)}` : "") 2883 ) 2884 ] 2885 ); 2886 2887 append($$anchor, div_12); 2888 } 2889 ); 2890 2891 reset(div_11); 2892 append($$anchor, div_11); 2893 }; 2894 2895 var alternate = ($$anchor) => { 2896 var p_1 = root_14$1(); 2897 2898 append($$anchor, p_1); 2899 }; 2900 2901 if_block(node_13, ($$render) => { 2902 if (( 2903 get(tool), 2904 untrack(() => Object.keys(get(tool).parameters).length > 0) 2905 )) $$render(consequent_5); else $$render(alternate, false); 2906 }); 2907 } 2908 2909 reset(div_10); 2910 append($$anchor, div_10); 2911 }; 2912 2913 if_block(node_12, ($$render) => { 2914 if ((get(tool), untrack(() => get(tool).expanded))) $$render(consequent_6); 2915 }); 2916 } 2917 2918 reset(div_7); 2919 2920 template_effect(() => { 2921 set_text(text_2, (get(tool), untrack(() => get(tool).name))); 2922 2923 set_text(text_3, ( 2924 get(tool), 2925 untrack(() => get(tool).description 2926 ? get(tool).description 2927 : "â ï¸ No description provided in function docstring") 2928 )); 2929 2930 set_text(text_5, ( 2931 get(tool), 2932 untrack(() => get(tool).expanded ? "â¼" : "â¶") 2933 )); 2934 }); 2935 2936 event('click', button_3, () => ( 2937 get(tool).expanded = !get(tool).expanded, 2938 invalidate_inner_signals(() => (all_tools(), tools())) 2939 )); 2940 2941 append($$anchor, div_7); 2942 } 2943 ); 2944 2945 reset(div_6); 2946 2947 var div_13 = sibling(div_6, 4); 2948 let classes; 2949 var node_14 = sibling(child(div_13), 4); 2950 2951 Block(node_14, { 2952 children: ($$anchor, $$slotProps) => { 2953 var code_1 = root_15(); 2954 var div_14 = child(code_1);
2955 var node_15 = child(div_14); 2956 2957 CopyButton(node_15, { 2958 get code() { 2959 return ( 2960 deep_read_state(config_snippets()), 2961 untrack(() => config_snippets().streamable_http) 2962 ); 2963 } 2964 }); 2965 2966 reset(div_14); 2967 2968 var div_15 = sibling(div_14, 2); 2969 var pre = child(div_15); 2970 var text_9 = child(pre, true); 2971 2972 reset(pre); 2973 reset(div_15); 2974 reset(code_1); 2975 2976 template_effect(() => set_text(text_9, ( 2977 deep_read_state(config_snippets()), 2978 untrack(() => config_snippets().streamable_http) 2979 ))); 2980 2981 append($$anchor, code_1); 2982 }, 2983 $$slots: { default: true } 2984 }); 2985 2986 reset(div_13); 2987 2988 var div_16 = sibling(div_13, 2); 2989 let classes_1; 2990 var node_16 = sibling(child(div_16), 6); 2991 2992 Block(node_16, { 2993 children: ($$anchor, $$slotProps) => { 2994 var code_2 = root_16(); 2995 var div_17 = child(code_2); 2996 var node_17 = child(div_17); 2997 2998 CopyButton(node_17, { 2999 get code() { 3000 return ( 3001 deep_read_state(config_snippets()), 3002 untrack(() => config_snippets().stdio) 3003 ); 3004 } 3005 }); 3006 3007 reset(div_17); 3008 3009 var div_18 = sibling(div_17, 2); 3010 var pre_1 = child(div_18); 3011 var text_10 = child(pre_1, true); 3012 3013 reset(pre_1); 3014 reset(div_18); 3015 reset(code_2); 3016 3017 template_effect(() => set_text(text_10, ( 3018 deep_read_state(config_snippets()), 3019 untrack(() => config_snippets().stdio) 3020 ))); 3021 3022 append($$anchor, code_2); 3023 }, 3024 $$slots: { default: true } 3025 }); 3026 3027 reset(div_16); 3028 3029 var node_18 = sibling(div_16, 2); 3030 3031 { 3032 var consequent_7 = ($$anchor) => { 3033 var div_19 = root_17$1(); 3034 var label = child(div_19); 3035 var input_2 = child(label); 3036 3037 remove_input_defaults(input_2); 3038 next(); 3039 reset(label); 3040 next(2); 3041 reset(div_19); 3042 bind_checked(input_2, () => get(include_file_upload), ($$value) => set(include_file_upload, $$value)); 3043 append($$anchor, div_19); 3044 }; 3045 3046 if_block(node_18, ($$render) => { 3047 if (file_data_present()) $$render(consequent_7); 3048 }); 3049 } 3050 3051 var p_2 = sibling(node_18, 4); 3052 var a = child(p_2); 3053 3054 reset(p_2); 3055 3056 template_effect(() => { 3057 set_text(text_1, `${( 3058 deep_read_state(all_tools()), 3059 deep_read_state(tools()), 3060 untrack(() => all_tools().length > 0 ? all_tools().length : tools().length) 3061 ) ?? ''} Available MCP Tools 3062 (`); 3063 3064 classes = set_class(div_13, 1, 'svelte-1uo4thf', null, classes, { hidden: get(current_transport) !== "streamable_http" }); 3065 classes_1 = set_class(div_16, 1, 'svelte-1uo4thf', null, classes_1, { hidden: get(current_transport) !== "stdio" }); 3066 set_attribute(a, 'href', mcp_docs()); 3067 }); 3068 3069 append($$anchor, fragment_1); 3070 }; 3071 3072 var alternate_1 = ($$anchor) => { 3073 var fragment_4 = root_18(); 3074 3075 next(6); 3076 append($$anchor, fragment_4); 3077 }; 3078 3079 if_block(node, ($$render) => { 3080 if (mcp_server_active()) $$render(consequent_8); else $$render(alternate_1, false); 3081 }); 3082 } 3083 3084 append($$anchor, fragment); 3085 3086 return pop($$exports); 3087} 3088 3089var root$2 = from_svg(`<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M7 7h10v10"></path><path d="M7 17 17 7"></path></svg>`); 3090 3091function IconArrowUpRight($$anchor, $$props) { 3092 push($$props, false); 3093 3094 let classNames = prop($$props, 'classNames', 12, ""); 3095 3096 var $$exports = { 3097 get classNames() { 3098 return classNames(); 3099 }, 3100 3101 set classNames($$value) { 3102 classNames($$value); 3103 flushSync(); 3104 } 3105 }; 3106 3107 var svg = root$2(); 3108 3109 template_effect(() => set_class(svg, 0, clsx(classNames() || "menu-icon-arrow"), 'svelte-1s9m4x9')); 3110 append($$anchor, svg); 3111 3112 return pop($$exports); 3113} 3114 3115var root$1 = from_svg(`<svg width="1em" height="1em" viewBox="0 0 12 7" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 1L6 6L11 1" stroke="currentColor"></path></svg>`); 3116 3117function IconCaret($$anchor, $$props) { 3118 push($$props, false); 3119 3120 let classNames = prop($$props, 'classNames', 12, ""); 3121 3122 var $$exports = { 3123 get classNames() { 3124 return classNames(); 3125 }, 3126 3127 set classNames($$value) { 3128 classNames($$value); 3129 flushSync(); 3130 } 3131 }; 3132 3133 var svg = root$1(); 3134 3135 template_effect(() => set_class(svg, 0, clsx(classNames()), 'svelte-1u0oj9c')); 3136 append($$anchor, svg); 3137 3138 return pop($$exports); 3139} 3140 3141var root = from_svg(`<svg width="1em" height="1em" viewBox="5 5 22 22" fill="none" xmlns="http://www.w3.org/2000/svg"><title>HuggingChat</title><path d="M16.0006 25.9992C13.8266 25.999 11.7118 25.2901 9.97686 23.9799C8.2419 22.6698 6.98127 20.8298 6.38599 18.7388C5.79071 16.6478 5.89323 14.4198 6.678 12.3923C7.46278 10.3648 8.88705 8.64837 10.735 7.50308C12.5829 6.35779 14.7538 5.84606 16.9187 6.04544C19.0837 6.24481 21.1246 7.14442 22.7323 8.60795C24.34 10.0715 25.4268 12.0192 25.8281 14.1559C26.2293 16.2926 25.9232 18.5019 24.9561 20.449C24.7703 20.8042 24.7223 21.2155 24.8211 21.604L25.4211 23.8316C25.4803 24.0518 25.48
314105 24.2837 25.4216 24.5039C25.3627 24.7242 25.2468 24.925 25.0856 25.0862C24.9244 25.2474 24.7235 25.3633 24.5033 25.4222C24.283 25.4811 24.0512 25.4809 23.831 25.4217L21.6034 24.8217C21.2172 24.7248 20.809 24.7729 20.4558 24.9567C19.0683 25.6467 17.5457 26.0068 16.0006 26.0068V25.9992Z" fill="black" class="block dark:hidden svelte-pw1cre"></path><path d="M9.62598 16.0013C9.62598 15.3799 10.1294 14.8765 10.7508 14.8765C11.3721 14.8765 11.8756 15.3799 11.8756 16.0013C11.8756 17.0953 12.3102 18.1448 13.0838 18.9184C13.8574 19.692 14.9069 20.1266 16.001 20.1267C17.095 20.1267 18.1445 19.692 18.9181 18.9184C19.6918 18.1448 20.1264 17.0953 20.1264 16.0013C20.1264 15.3799 20.6299 14.8765 21.2512 14.8765C21.8725 14.8765 22.3759 15.3799 22.3759 16.0013C22.3759 17.6921 21.7046 19.3137 20.509 20.5093C19.3134 21.7049 17.6918 22.3762 16.001 22.3762C14.3102 22.3762 12.6885 21.7049 11.4929 20.5093C10.2974 19.3137 9.62598 17.6921 9.62598 16.0013Z" fill="white" class="block dark:hidden svelte-pw1cre"></path><path d="M16.0006 25.9992C13.8266 25.999 11.7118 25.2901 9.97686 23.9799C8.2419 22.6698 6.98127 20.8298 6.38599 18.7388C5.79071 16.6478 5.89323 14.4198 6.678 12.3923C7.46278 10.3648 8.88705 8.64837 10.735 7.50308C12.5829 6.35779 14.7538 5.84606 16.9187 6.04544C19.0837 6.24481 21.1246 7.14442 22.7323 8.60795C24.34 10.0715 25.4268 12.0192 25.8281 14.1559C26.2293 16.2926 25.9232 18.5019 24.9561 20.449C24.7703 20.8042 24.7223 21.2155 24.8211 21.604L25.4211 23.8316C25.4803 24.0518 25.4805 24.2837 25.4216 24.5039C25.3627 24.7242 25.2468 24.925 25.0856 25.0862C24.9244 25.2474 24.7235 25.3633 24.5033 25.4222C24.283 25.4811 24.0512 25.4809 23.831 25.4217L21.6034 24.8217C21.2172 24.7248 20.809 24.7729 20.4558 24.9567C19.0683 25.6467 17.5457 26.0068 16.0006 26.0068V25.9992Z" fill="white" class="hidden dark:block svelte-pw1cre"></path><path d="M9.62598 16.0013C9.62598 15.3799 10.1294 14.8765 10.7508 14.8765C11.3721 14.8765 11.8756 15.3799 11.8756 16.0013C11.8756 17.0953 12.3102 18.1448 13.0838 18.9184C13.8574 19.692 14.9069 20.1266 16.001 20.1267C17.095 20.1267 18.1445 19.692 18.9181 18.9184C19.6918 18.1448 20.1264 17.0953 20.1264 16.0013C20.1264 15.3799 20.6299 14.8765 21.2512 14.8765C21.8725 14.8765 22.3759 15.3799 22.3759 16.0013C22.3759 17.6921 21.7046 19.3137 20.509 20.5093C19.3134 21.7049 17.6918 22.3762 16.001 22.3762C14.3102 22.3762 12.6885 21.7049 11.4929 20.5093C10.2974 19.3137 9.62598 17.6921 9.62598 16.0013Z" fill="black" class="hidden dark:block svelte-pw1cre"></path></svg>`); 3142 3143function IconHuggingChat($$anchor, $$props) { 3144 push($$props, false); 3145 3146 let classNames = prop($$props, 'classNames', 12, ""); 3147 3148 var $$exports = { 3149 get classNames() { 3150 return classNames(); 3151 }, 3152 3153 set classNames($$value) { 3154 classNames($$value); 3155 flushSync(); 3156 } 3157 }; 3158 3159 var svg = root(); 3160 3161 template_effect(() => set_class(svg, 0, clsx(classNames() || "icon-size"), 'svelte-pw1cre')); 3162 append($$anchor, svg); 3163 3164 return pop($$exports); 3165} 3166 3167var root_4$1 = from_html(`<div class="backdrop-overlay svelte-de9ybk" aria-hidden="true" style="background: transparent;"></div> <div role="menu" class="menu-dropdown svelte-de9ybk" aria-label="Copy menu"><button role="menuitem" class="base-menu-item svelte-de9ybk"><div class="menu-icon-container svelte-de9ybk"><!></div> <div class="menu-text-container svelte-de9ybk"><div class="menu-text-primary svelte-de9ybk">Copy Page</div> <div class="menu-text-secondary svelte-de9ybk"> </div></div></button> <button role="menuitem" class="base-menu-item svelte-de9ybk"><div class="menu-icon-container svelte-de9ybk"><!></div> <div class="menu-text-container svelte-de9ybk"><div class="menu-text-primary svelte-de9ybk">Open in HuggingChat <!></div> <div class="menu-text-secondary svelte-de9ybk"> </div></div></button></div>`, 1); 3168var root_1 = from_html(`<div class="container-wrapper svelte-de9ybk"><div class="trigger-wrapper svelte-de9ybk"><button class="copy-button svelte-de9ybk" aria-live="polite"><span class="icon-wrapper svelte-de9ybk"><!></span> <span> </span></button> <button class="menu-toggle-button svelte-de9ybk" aria-haspopup="menu"><!></button></div> <!></div>`); 3169 3170function CopyMarkdown($$anchor, $$props) { 3171 push($$props, false); 3172 3173 let current_language = prop($$props, 'current_language', 12); 3174 let space_id = prop($$props, 'space_id', 12); 3175 let root = prop($$props, 'root', 12); 3176 let api_count = prop($$props, 'api_count', 12); 3177 let tools = prop($$props, 'tools', 12); 3178 let py_docs = prop($$props, 'py_docs', 12); 3179 let js_docs = prop($$props, 'js_docs', 12); 3180 let bash_docs = prop($$props, 'bash_docs', 12); 3181 let mcp_docs = prop($$props, 'mcp_docs', 12); 3182 let spaces_docs_suffix = prop($$props, 'spaces_docs_suffix', 12); 3183 let mcp_server_active = prop($$props, 'mcp_server_active', 12); 3184 let mcp_server_url_streamable = prop($$props, 'mcp_server_url_streamable', 12); 3185 let config_snippets = prop($$props, 'config_snippets', 12); 3186 let markdown_code_snippets = prop($$props, 'markdown_code_snippets', 12);
3187 let dependencies = prop($$props, 'dependencies', 12); 3188 let info = prop($$props, 'info', 12); 3189 let js_info = prop($$props, 'js_info', 12); 3190 let markdown_content = mutable_source({ python: "", javascript: "", bash: "", mcp: "" }); 3191 3192 /* eslint-disable complexity */ 3193 /* eslint-enable complexity */ 3194 let current_language_label = mutable_source(current_language() === "python" 3195 ? "Python" 3196 : current_language() === "javascript" 3197 ? "JavaScript" 3198 : current_language() === "bash" ? "Bash" : "MCP"); 3199 3200 let label = mutable_source(`Copy ${get(current_language_label)} Docs as Markdown for LLMs`); 3201 let copied = mutable_source(false); 3202 let open = mutable_source(false); 3203 let triggerEl = mutable_source(null); 3204 let menuEl = mutable_source(null); 3205 let menuStyle = mutable_source(""); 3206 const isClient = typeof window !== "undefined"; 3207 3208 function openMenu() { 3209 set(open, true); 3210 3211 if (isClient && get(triggerEl)) { 3212 void tick().then(() => { 3213 if (!get(triggerEl)) return; 3214 3215 const rect = get(triggerEl).getBoundingClientRect(); 3216 const gutter = 6; 3217 const minWidth = Math.max(rect.width + 80, 220); 3218 const right = Math.max(window.innerWidth - rect.right, gutter); 3219 3220 set(menuStyle, `top:${rect.bottom + gutter}px;right:${right}px;min-width:${minWidth}px;`); 3221 }); 3222 } 3223 } 3224 3225 function closeMenu() { 3226 set(open, false); 3227 } 3228 3229 function toggleMenu() { 3230 get(open) ? closeMenu() : openMenu(); 3231 } 3232 3233 function buildUrl() { 3234 const encodedPromptText = encodeURIComponent(`-------------------------------- 3235${get(markdown_content)[current_language()]} 3236-------------------------------- 3237 3238Read the documentation above so I can ask questions about it.`); 3239 3240 return `https://huggingface.co/chat/?prompt=${encodedPromptText}`; 3241 } 3242 3243 function openHuggingChat() { 3244 if (isClient) { 3245 window.open(buildUrl(), "_blank", "noopener,noreferrer"); 3246 } 3247 3248 closeMenu(); 3249 } 3250 3251 function handleWindowPointer(event) { 3252 if (!get(open) || !isClient) return; 3253 3254 const targetNode = event.target; 3255 3256 if (get(menuEl)?.contains(targetNode) || get(triggerEl)?.contains(targetNode)) { 3257 return; 3258 } 3259 3260 closeMenu(); 3261 } 3262 3263 function handleWindowKeydown(event) { 3264 if (event.key === "Escape" && get(open)) { 3265 closeMenu(); 3266 } 3267 } 3268 3269 function handleWindowResize() { 3270 if (get(open)) closeMenu(); 3271 } 3272 3273 function handleWindowScroll() { 3274 if (get(open)) closeMenu(); 3275 } 3276 3277 async function copyMarkdown(current_language) { 3278 try { 3279 if (!get(markdown_content)[current_language]) { 3280 console.warn("Nothing to copy"); 3281 3282 return; 3283 } 3284 3285 const hasNavigatorClipboard = typeof navigator !== "undefined" && !!navigator.clipboard && typeof navigator.clipboard.writeText === "function"; 3286 3287 if (hasNavigatorClipboard) { 3288 await navigator.clipboard.writeText(get(markdown_content)[current_language]); 3289 } else { 3290 console.warn("Clipboard API unavailable"); 3291 3292 return; 3293 } 3294 3295 set(copied, true); 3296 3297 setTimeout( 3298 () => { 3299 set(copied, false); 3300 }, 3301 1500 3302 ); 3303 } catch(error) { 3304 console.error("Failed to write to clipboard", error); 3305 } 3306 } 3307 3308 legacy_pre_effect( 3309 () => ( 3310 deep_read_state(space_id()), 3311 deep_read_state(root()), 3312 deep_read_state(api_count()), 3313 deep_read_state(py_docs()), 3314 deep_read_state(spaces_docs_suffix()), 3315 deep_read_state(dependencies()), 3316 deep_read_state(info()), 3317 deep_read_state(markdown_code_snippets()), 3318 deep_read_state(js_info()) 3319 ), 3320 () => { 3321 mutate(markdown_content, get(markdown_content).python = ` 3322# Python API documentation for ${space_id() || root()} 3323API Endpoints: ${api_count()} 3324 33251. Install the Python client [docs](${py_docs()}) if you don't already have it installed. 3326 3327\`\`\`bash 3328pip install gradio_client 3329\`\`\` 3330 33312. Find the API endpoint below corresponding to your desired function in the app. Copy the code snippet, replacing the placeholder values with your own input data. ${space_id() 3332 ? "If this is a private Space, you may need to pass your Hugging Face token as well. [Read more](" + py_docs() + spaces_docs_suffix() + ")." 3333 : ""} 3334 3335${dependencies().filter((d) => d.api_visibility === "public" && info().named_endpoints["/" + d.api_name]).map((d) => `### API Name: /${d.api_name} 3336${info()?.named_endpoints["/" + d.api_name]?.description 3337 ? "Description: " + info()?.named_endpoints["/" + d.api_name]?.description 3338 : ""} 3339 3340\`\`\`python 3341${markdown_code_snippets()[d.api_name]?.python} 3342\`\`\` 3343 3344Accepts ${info()?.named_endpoints["/" + d.api_name]?.parameters?.length} parameter${info()?.named_endpoints["/" + d.api_name]?.parameters?.length != 1 ? "s" : ""}: 3345 3346${info()?.named_endpoints["/" + d.api_name]?.parameters?.map((p) => { 3347 const required = !p.parameter_has_default; 3348 3349 const defaultValue = !required 3350 ? `Default: ${represent_value(p.parameter_default, p.python_type.type, "py")}` 3351 : "Required"; 3352 3353 const type = `${p.python_type.type}${p.parameter_has_default && p.parameter_default === null ? " | None" : ""}`; 3354
3355 return `${p.parameter_name || `[${js_info().named_endpoints["/" + d.api_name]?.parameters.findIndex((p) => p.parameter_name === p.parameter_name)}]`}:\n- Type: ${type}\n- ${defaultValue}\n- The input value that is provided in the ${p.label} ${p.component} component. ${p.python_type.description}`; 3356 }).join("\n\n")} 3357 3358Returns ${info()?.named_endpoints["/" + d.api_name]?.returns?.length > 1 3359 ? `tuple of ${info()?.named_endpoints["/" + d.api_name]?.returns?.length} elements` 3360 : "1 element"}: 3361 3362${info()?.named_endpoints["/" + d.api_name]?.returns?.map((r, i) => { 3363 const type = r.python_type.type; 3364 3365 return `${info()?.named_endpoints["/" + d.api_name]?.returns?.length > 1 ? `[${i}]: ` : ""}- Type: ${type}\n- The output value that appears in the "${r.label}" ${r.component} component.`; 3366 }).join("\n\n")} 3367`).join("\n\n\n")} 3368`); 3369 } 3370 ); 3371 3372 legacy_pre_effect( 3373 () => ( 3374 deep_read_state(space_id()), 3375 deep_read_state(root()), 3376 deep_read_state(api_count()), 3377 deep_read_state(js_docs()), 3378 deep_read_state(spaces_docs_suffix()), 3379 deep_read_state(dependencies()), 3380 deep_read_state(info()), 3381 deep_read_state(markdown_code_snippets()), 3382 deep_read_state(js_info()) 3383 ), 3384 () => { 3385 mutate(markdown_content, get(markdown_content).javascript = ` 3386# JavaScript API documentation for ${space_id() || root()} 3387API Endpoints: ${api_count()} 3388 33891. Install the JavaScript client [docs](${js_docs()}) if you don't already have it installed. 3390 3391\`\`\`bash 3392npm i -D @gradio/client 3393\`\`\` 3394 33952. Find the API endpoint below corresponding to your desired function in the app. Copy the code snippet, replacing the placeholder values with your own input data. ${space_id() 3396 ? "If this is a private Space, you may need to pass your Hugging Face token as well. [Read more](" + js_docs() + spaces_docs_suffix() + ")." 3397 : ""} 3398 3399${dependencies().filter((d) => d.api_visibility === "public" && info().named_endpoints["/" + d.api_name]).map((d) => `### API Name: /${d.api_name} 3400${info()?.named_endpoints["/" + d.api_name]?.description 3401 ? "Description: " + info()?.named_endpoints["/" + d.api_name]?.description 3402 : ""} 3403 3404\`\`\`javascript 3405${markdown_code_snippets()[d.api_name]?.javascript} 3406\`\`\` 3407 3408Accepts ${info()?.named_endpoints["/" + d.api_name]?.parameters?.length} parameter${info()?.named_endpoints["/" + d.api_name]?.parameters?.length != 1 ? "s" : ""}: 3409 3410${info()?.named_endpoints["/" + d.api_name]?.parameters?.map((p) => { 3411 const required = !p.parameter_has_default; 3412 3413 const defaultValue = !required 3414 ? `Default: ${represent_value(p.parameter_default, p.python_type.type, "py")}` 3415 : "Required"; 3416 3417 const type = `${js_info().named_endpoints["/" + d.api_name]?.parameters.find((_p) => _p.parameter_name === p.parameter_name)?.type || "any"}`; 3418 3419 return `${p.parameter_name || `[${js_info().named_endpoints["/" + d.api_name]?.parameters.findIndex((_p) => _p.parameter_name === p.parameter_name)}]`}:\n- Type: ${type}\n- ${defaultValue}\n- The input value that is provided in the ${p.label} ${p.component} component. ${p.python_type.description}`; 3420 }).join("\n\n")} 3421 3422Returns ${info()?.named_endpoints["/" + d.api_name]?.returns?.length > 1 3423 ? `list of ${info()?.named_endpoints["/" + d.api_name]?.returns?.length} elements` 3424 : "1 element"}: 3425 3426${info()?.named_endpoints["/" + d.api_name]?.returns?.map((r, i) => { 3427 const type = js_info().named_endpoints["/" + d.api_name]?.returns[i]?.type; 3428 3429 return `${info()?.named_endpoints["/" + d.api_name]?.returns?.length > 1 ? `[${i}]: ` : ""}- Type: ${type}\n- The output value that appears in the "${r.label}" ${r.component} component.`; 3430 }).join("\n\n")}`).join("\n\n\n")} 3431`); 3432 } 3433 ); 3434 3435 legacy_pre_effect( 3436 () => ( 3437 deep_read_state(space_id()), 3438 deep_read_state(root()), 3439 deep_read_state(api_count()), 3440 deep_read_state(bash_docs()), 3441 deep_read_state(dependencies()), 3442 deep_read_state(info()), 3443 deep_read_state(markdown_code_snippets()), 3444 deep_read_state(js_info()) 3445 ), 3446 () => { 3447 mutate(markdown_content, get(markdown_content).bash = ` 3448# Bash API documentation for ${space_id() || root()} 3449API Endpoints: ${api_count()} 3450 34511. Confirm that you have cURL installed on your system. 3452 3453\`\`\`bash 3454curl --version 3455\`\`\` 3456 34572. Find the API endpoint below corresponding to your desired function in the app. Copy the code snippet, replacing the placeholder values with your own input data. 3458 3459Making a prediction and getting a result requires 2 requests: a POST and a GET request. The POST request returns an EVENT_ID, which is used in the second GET request to fetch the results. In these snippets, we've used awk and read to parse the results, combining these two requests into one command for ease of use. See [curl docs](${bash_docs()}). 3460 3461${dependencies().filter((d) => d.api_visibility === "public" && info().named_endpoints["/" + d.api_name]).map((d) => `### API Name: /${d.api_name} 3462${info()?.named_endpoints["/" + d.api_name]?.description 3463 ? "Description: " + info()?.named_endpoints["/" + d.api_name]?.description 3464 : ""} 3465 3466\`\`\`bash 3467${markdown_code_snippets()[d.api_name]?.bash} 3468\`\`\` 3469 3470Accepts ${info()?.named_endpoints["/" + d.api_name]?.parameters?.length} parameter${info()?.named_endpoints["/" + d.api_name]?.parameters?.length != 1 ? "s" : ""}: 3471 3472${info()?.named_endpoints["/" + d.api_name]?.parameters?.map((p) => { 3473 const defaultValue = "Required"; 3474 const type = `${js_info().named_endpoints["/" + d.api_name]?.parameters.find((_p) => _p.parameter_name === p.parameter_name)?.type || "any"}`; 3475
3476 return `${`[${js_info().named_endpoints["/" + d.api_name]?.parameters.findIndex((_p) => _p.parameter_name === p.parameter_name)}]`}:\n- Type: ${type}\n- ${defaultValue}\n- The input value that is provided in the ${p.label} ${p.component} component. ${p.python_type.description}`; 3477 }).join("\n\n")} 3478 3479Returns ${info()?.named_endpoints["/" + d.api_name]?.returns?.length > 1 3480 ? `list of ${info()?.named_endpoints["/" + d.api_name]?.returns?.length} elements` 3481 : "1 element"}: 3482 3483${info()?.named_endpoints["/" + d.api_name]?.returns?.map((r, i) => { 3484 const type = js_info().named_endpoints["/" + d.api_name]?.returns[i]?.type; 3485 3486 return `${info()?.named_endpoints["/" + d.api_name]?.returns?.length > 1 ? `[${i}]: ` : ""}- Type: ${type}\n- The output value that appears in the "${r.label}" ${r.component} component.`; 3487 }).join("\n\n")} 3488`).join("\n\n\n")} 3489`); 3490 } 3491 ); 3492 3493 legacy_pre_effect( 3494 () => ( 3495 deep_read_state(space_id()), 3496 deep_read_state(root()), 3497 deep_read_state(tools()), 3498 deep_read_state(mcp_server_active()), 3499 deep_read_state(mcp_server_url_streamable()), 3500 deep_read_state(config_snippets()), 3501 deep_read_state(mcp_docs()) 3502 ), 3503 () => { 3504 mutate(markdown_content, get(markdown_content).mcp = ` 3505# MCP documentation for ${space_id() || root()} 3506MCP Tools: ${tools().length} 3507 3508${!mcp_server_active() 3509 ? `This Gradio app can also serve as an MCP server, with an MCP tool corresponding to each API endpoint. 3510To enable this, launch this Gradio app with \`.launch(mcp_server=True)\` or set the \`.launch(mcp_server=True)\`or set the \`GRADIO_MCP_SERVER\` env variable to \`"True"\`.` 3511 : ` 3512 3513This page documents two transports: Streamable HTTP and STDIO. 3514 3515### Streamable HTTP 3516 3517MCP Server URL (Streamable HTTP): ${mcp_server_url_streamable()} 3518 3519${tools().length} available MCP tools, resources, and prompts: 3520 3521${tools().map((tool) => `### ${tool.name} 3522Type: ${tool.meta.mcp_type} 3523Description: ${tool.description 3524 ? tool.description 3525 : "No description provided in function docstring"} 3526Parameters: ${Object.keys(tool.parameters).length} 3527${Object.keys(tool.parameters).map((parameter) => { 3528 return `- ${parameter} (${tool.parameters[parameter].type}): ${tool.parameters[parameter].description 3529 ? tool.parameters[parameter].description 3530 : "No description provided in function docstring"}`; 3531 }).join("\n")} 3532`).join("\n\n")} 3533 3534Streamable HTTP Transport: To add this MCP to clients that support Streamable HTTP, simply add the following configuration to your MCP config. 3535 3536\`\`\`json 3537${config_snippets().streamable_http} 3538\`\`\` 3539 3540The \`upload_files_to_gradio\` tool uploads files from your local \`UPLOAD_DIRECTORY\` (or any of its subdirectories) to the Gradio app. 3541This is needed because MCP servers require files to be provided as URLs. You can omit this tool if you prefer to upload files manually. This tool requires [uv](https://docs.astral.sh/uv/getting-started/installation/) to be installed. 3542 3543### STDIO Transport 3544 3545 3546${tools().length} available MCP tools, resources, and prompts: 3547 3548${tools().map((tool) => `### ${tool.name} 3549Type: ${tool.meta.mcp_type} 3550Description: ${tool.description 3551 ? tool.description 3552 : "No description provided in function docstring"} 3553Parameters: ${Object.keys(tool.parameters).length} 3554${Object.keys(tool.parameters).map((parameter) => { 3555 return `- ${parameter} (${tool.parameters[parameter].type}): ${tool.parameters[parameter].description 3556 ? tool.parameters[parameter].description 3557 : "No description provided in function docstring"}`; 3558 }).join("\n")} 3559`).join("\n\n")} 3560 3561STDIO Transport: For clients that only support stdio (e.g. Claude Desktop), first [install Node.js](https://nodejs.org/en/download/). Then, you can use the following command: 3562 3563\`\`\`json 3564${config_snippets().stdio} 3565\`\`\` 3566 3567The \`upload_files_to_gradio\` tool uploads files from your local \`UPLOAD_DIRECTORY\` (or any of its subdirectories) to the Gradio app. 3568This is needed because MCP servers require files to be provided as URLs. You can omit this tool if you prefer to upload files manually. This tool requires [uv](https://docs.astral.sh/uv/getting-started/installation/) to be installed. 3569 3570Read more about the MCP in the [Gradio docs](${mcp_docs()}). 3571`} 3572 3573`); 3574 } 3575 ); 3576 3577 legacy_pre_effect(() => (deep_read_state(current_language())), () => { 3578 current_language(); 3579 }); 3580 3581 legacy_pre_effect(() => (deep_read_state(current_language())), () => { 3582 set(current_language_label, current_language() === "python" 3583 ? "Python" 3584 : current_language() === "javascript" 3585 ? "JavaScript" 3586 : current_language() === "bash" ? "Bash" : "MCP"); 3587 }); 3588 3589 legacy_pre_effect(() => (get(current_language_label)), () => { 3590 set(label, `Copy ${get(current_language_label)} Docs as Markdown for LLMs`); 3591 }); 3592 3593 legacy_pre_effect(() => (get(copied)), () => { 3594 get(copied); 3595 }); 3596 3597 legacy_pre_effect_reset(); 3598 3599 var $$exports = { 3600 get current_language() { 3601 return current_language(); 3602 }, 3603 3604 set current_language($$value) { 3605 current_language($$value); 3606 flushSync(); 3607 }, 3608 3609 get space_id() { 3610 return space_id(); 3611 }, 3612 3613 set space_id($$value) { 3614 space_id($$value); 3615 flushSync(); 3616 }, 3617 3618 get root() {
3619 return root(); 3620 }, 3621 3622 set root($$value) { 3623 root($$value); 3624 flushSync(); 3625 }, 3626 3627 get api_count() { 3628 return api_count(); 3629 }, 3630 3631 set api_count($$value) { 3632 api_count($$value); 3633 flushSync(); 3634 }, 3635 3636 get tools() { 3637 return tools(); 3638 }, 3639 3640 set tools($$value) { 3641 tools($$value); 3642 flushSync(); 3643 }, 3644 3645 get py_docs() { 3646 return py_docs(); 3647 }, 3648 3649 set py_docs($$value) { 3650 py_docs($$value); 3651 flushSync(); 3652 }, 3653 3654 get js_docs() { 3655 return js_docs(); 3656 }, 3657 3658 set js_docs($$value) { 3659 js_docs($$value); 3660 flushSync(); 3661 }, 3662 3663 get bash_docs() { 3664 return bash_docs(); 3665 }, 3666 3667 set bash_docs($$value) { 3668 bash_docs($$value); 3669 flushSync(); 3670 }, 3671 3672 get mcp_docs() { 3673 return mcp_docs(); 3674 }, 3675 3676 set mcp_docs($$value) { 3677 mcp_docs($$value); 3678 flushSync(); 3679 }, 3680 3681 get spaces_docs_suffix() { 3682 return spaces_docs_suffix(); 3683 }, 3684 3685 set spaces_docs_suffix($$value) { 3686 spaces_docs_suffix($$value); 3687 flushSync(); 3688 }, 3689 3690 get mcp_server_active() { 3691 return mcp_server_active(); 3692 }, 3693 3694 set mcp_server_active($$value) { 3695 mcp_server_active($$value); 3696 flushSync(); 3697 }, 3698 3699 get mcp_server_url_streamable() { 3700 return mcp_server_url_streamable(); 3701 }, 3702 3703 set mcp_server_url_streamable($$value) { 3704 mcp_server_url_streamable($$value); 3705 flushSync(); 3706 }, 3707 3708 get config_snippets() { 3709 return config_snippets(); 3710 }, 3711 3712 set config_snippets($$value) { 3713 config_snippets($$value); 3714 flushSync(); 3715 }, 3716 3717 get markdown_code_snippets() { 3718 return markdown_code_snippets(); 3719 }, 3720 3721 set markdown_code_snippets($$value) { 3722 markdown_code_snippets($$value); 3723 flushSync(); 3724 }, 3725 3726 get dependencies() { 3727 return dependencies(); 3728 }, 3729 3730 set dependencies($$value) { 3731 dependencies($$value); 3732 flushSync(); 3733 }, 3734 3735 get info() { 3736 return info(); 3737 }, 3738 3739 set info($$value) { 3740 info($$value); 3741 flushSync(); 3742 }, 3743 3744 get js_info() { 3745 return js_info(); 3746 }, 3747 3748 set js_info($$value) { 3749 js_info($$value); 3750 flushSync(); 3751 } 3752 }; 3753 3754 init(); 3755 3756 var div = root_1(); 3757 3758 event('mousedown', $window, handleWindowPointer); 3759 event('keydown', $window, handleWindowKeydown); 3760 event('resize', $window, handleWindowResize); 3761 event('scroll', $window, handleWindowScroll); 3762 3763 var div_1 = child(div); 3764 var button = child(div_1); 3765 var span = child(button); 3766 var node = child(span); 3767 3768 { 3769 var consequent = ($$anchor) => { 3770 IconCheck($$anchor, {}); 3771 }; 3772 3773 var alternate = ($$anchor) => { 3774 IconCopy($$anchor, {}); 3775 }; 3776 3777 if_block(node, ($$render) => { 3778 if (get(copied)) $$render(consequent); else $$render(alternate, false); 3779 }); 3780 } 3781 3782 reset(span); 3783 3784 var span_1 = sibling(span, 2); 3785 var text = child(span_1, true); 3786 3787 reset(span_1); 3788 reset(button); 3789 3790 var button_1 = sibling(button, 2); 3791 var node_1 = child(button_1); 3792 3793 { 3794 let $0 = derived_safe_equal(() => `caret-icon ${get(open) ? "rotate-180" : "rotate-0"}`); 3795 3796 IconCaret(node_1, { 3797 get classNames() { 3798 return get($0); 3799 } 3800 }); 3801 } 3802 3803 reset(button_1); 3804 reset(div_1); 3805 bind_this(div_1, ($$value) => set(triggerEl, $$value), () => get(triggerEl)); 3806 3807 var node_2 = sibling(div_1, 2); 3808 3809 { 3810 var consequent_1 = ($$anchor) => { 3811 var fragment_2 = root_4$1(); 3812 var div_2 = first_child(fragment_2); 3813 var div_3 = sibling(div_2, 2); 3814 var button_2 = child(div_3); 3815 var div_4 = child(button_2); 3816 var node_3 = child(div_4); 3817 3818 IconCopy(node_3, { classNames: 'menu-icon' }); 3819 reset(div_4); 3820 3821 var div_5 = sibling(div_4, 2); 3822 var div_6 = sibling(child(div_5), 2); 3823 var text_1 = child(div_6, true); 3824 3825 reset(div_6); 3826 reset(div_5); 3827 reset(button_2); 3828 3829 var button_3 = sibling(button_2, 2); 3830 var div_7 = child(button_3); 3831 var node_4 = child(div_7); 3832 3833 IconHuggingChat(node_4, { classNames: 'menu-icon' }); 3834 reset(div_7); 3835 3836 var div_8 = sibling(div_7, 2); 3837 var div_9 = child(div_8); 3838 var node_5 = sibling(child(div_9)); 3839 3840 IconArrowUpRight(node_5, { classNames: 'menu-icon-arrow' }); 3841 reset(div_9); 3842 3843 var div_10 = sibling(div_9, 2); 3844 var text_2 = child(div_10); 3845 3846 reset(div_10); 3847 reset(div_8); 3848 reset(button_3); 3849 reset(div_3); 3850 bind_this(div_3, ($$value) => set(menuEl, $$value), () => get(menuEl)); 3851 3852 template_effect(() => { 3853 set_style(div_3, get(menuStyle)); 3854 set_text(text_1, get(label)); 3855 set_text(text_2, `Ask Questions About The ${get(current_language_label) ?? ''} Docs`); 3856 }); 3857 3858 event('click', div_2, closeMenu); 3859 3860 event('click', button_2, () => { 3861 copyMarkdown(current_language()); 3862 closeMenu(); 3863 }); 3864 3865 event('click', button_3, () => { 3866 openHuggingChat(); 3867 closeMenu(); 3868 }); 3869 3870 append($$anchor, fragment_2); 3871 }; 3872 3873 if_block(node_2, ($$render) => { 3874 if (get(open)) $$render(consequent_1); 3875 }); 3876 } 3877 3878 reset(div); 3879 3880 template_effect(() => { 3881 set_text(text, get(copied) 3882 ? `Copied ${get(current_language_label)} Docs!` 3883 : "Copy Page"); 3884 3885 set_attribute(button_1, 'aria-expanded', get(open)); 3886 set_attribute(button_1, 'aria-label', get(open) ? "Close copy menu" : "Open copy menu"); 3887 }); 3888 3889 event('click', button, () => copyMarkdown(current_language()));
3890 event('click', button_1, toggleMenu); 3891 append($$anchor, div); 3892 3893 return pop($$exports); 3894} 3895 3896var root_4 = from_html(`<li><img alt="" class="svelte-1ujc8oz"/> </li>`); 3897 3898var root_5 = from_html( 3899 `<div><p id="num-recorded-api-calls" style="font-size: var(--text-lg); font-weight:bold; margin: 10px 0px;">ðª Recorded API Calls <span class="api-count svelte-1ujc8oz"> </span></p> <p> </p> <!> <p>Note: Some API calls only affect the UI, so when using the 3900 clients, the desired result may be achieved with only a subset of 3901 the recorded calls.</p></div> <p style="font-size: var(--text-lg); font-weight:bold; margin: 30px 0px 10px;">API Documentation</p>`, 3902 1 3903); 3904 3905var root_8 = from_html(`1. Install the <span style="text-transform:capitalize"> </span> client (<a target="_blank" class="svelte-1ujc8oz">docs</a>) if you don't already have it installed.`, 1); 3906var root_7 = from_html(`<p class="padded svelte-1ujc8oz"><!></p>`); 3907 3908var root_12 = from_html( 3909 `If this is a private Space, you may need to pass 3910 your Hugging Face token as well (<a class="underline svelte-1ujc8oz" target="_blank">read more</a>).`, 3911 1 3912); 3913 3914var root_13 = from_html(`<div class="loading-dot svelte-1ujc8oz"></div>
3914 <p class="self-baseline svelte-1ujc8oz">API Recorder</p>`, 1); 3915 3916var root_14 = from_html( 3917 `<br/> <br/>Making a 3918 prediction and getting a result requires <strong>2 requests</strong>: a <code class="svelte-1ujc8oz">POST</code> and a <code class="svelte-1ujc8oz">GET</code> request. The <code class="svelte-1ujc8oz">POST</code> request 3919 returns an <code class="svelte-1ujc8oz">EVENT_ID</code>, which is used in the second <code class="svelte-1ujc8oz">GET</code> request to fetch the results. In these 3920 snippets, we've used <code class="svelte-1ujc8oz">awk</code> and <code class="svelte-1ujc8oz">read</code> to 3921 parse the results, combining these two requests into one command 3922 for ease of use. <!> See <a target="_blank" class="svelte-1ujc8oz">curl docs</a>.`, 3923 1 3924); 3925 3926var root_11 = from_html( 3927 `<!> <p class="padded svelte-1ujc8oz">2. Find the API endpoint below corresponding to your desired 3928 function in the app. Copy the code snippet, replacing the 3929 placeholder values with your own input data. <!> Or use the <!> to automatically generate your API requests. <!></p>`, 3930 1 3931); 3932 3933var root_6 = from_html(`<!> <div><!></div> <div><!></div> <!>`, 1); 3934var root_17 = from_html(`<div class="endpoint-container svelte-1ujc8oz"><!> <!> <!></div>`); 3935var root_3 = from_html(`<div class="banner-wrap svelte-1ujc8oz"><!></div> <div class="docs-wrap svelte-1ujc8oz"><div class="client-doc svelte-1ujc8oz" style="display: flex; align-items: center; justify-content: space-between;"><p style="font-size: var(--text-lg);">Choose one of the following ways to interact with the API.</p> <!></div> <div class="endpoint svelte-1ujc8oz"><div class="snippets svelte-1ujc8oz"></div> <!> <div></div></div></div>`, 1); 3936 3937function ApiDocs($$anchor, $$props) { 3938 push($$props, false); 3939 3940 const sorted_dependencies = mutable_source(); 3941 const langs = mutable_source(); 3942 const selected_tools_array = mutable_source(); 3943 const selected_tools_without_prefix = mutable_source(); 3944 const mcp_server_url_streamable = mutable_source(); 3945 3946 /* eslint-disable */ 3947 let dependencies = prop($$props, 'dependencies', 12); 3948 3949 let root = prop($$props, 'root', 12); 3950 let app = prop($$props, 'app', 12); 3951 let space_id = prop($$props, 'space_id', 12); 3952 let root_node = prop($$props, 'root_node', 12); 3953 let username = prop($$props, 'username', 12); 3954 let last_api_call = prop($$props, 'last_api_call', 12, null); 3955 const js_docs = "https://www.gradio.app/guides/getting-started-with-the-js-client"; 3956 const py_docs = "https://www.gradio.app/guides/getting-started-with-the-python-client"; 3957 const bash_docs = "https://www.gradio.app/guides/querying-gradio-apps-with-curl"; 3958 const spaces_docs_suffix = "#connecting-to-a-hugging-face-space"; 3959 const mcp_docs = "https://www.gradio.app/guides/building-mcp-server-with-gradio"; 3960 let api_count = dependencies().filter((dependency) => dependency.api_visibility === "public").length; 3961 3962 if (root() === "") { 3963 root(location.protocol + "//" + location.host + location.pathname); 3964 } 3965 3966 if (!root().endsWith("/")) { 3967 root(root() + "/"); 3968 } 3969 3970 let api_calls = prop($$props, 'api_calls', 28, () => []); 3971 let current_language = mutable_source("python"); 3972 3973 function set_query_param(key, value) { 3974 const url = new URL(window.location.href); 3975 3976 url.searchParams.set(key, value); 3977 history.replaceState(null, "", url.toString()); 3978 } 3979 3980 function get_query_param(key) { 3981 const url = new URL(window.location.href); 3982 3983 return url.searchParams.get(key); 3984 } 3985 3986 function is_valid_language(lang) { 3987 return ["python", "javascript", "bash", "skill", "mcp"].includes(lang ?? ""); 3988 } 3989 3990 let is_running = false; 3991 let mcp_server_active = mutable_source(false); 3992 3993 async function get_info() { 3994 let response = await fetch(root().replace(/\/$/, "") + app().api_prefix + "/info"); 3995 let data = await response.json(); 3996 3997 return data; 3998 } 3999 4000 async function get_js_info() { 4001 let js_api_info = await app().view_api(); 4002 4003 return js_api_info; 4004 } 4005 4006 let info = mutable_source(); 4007 let js_info = mutable_source(); 4008 let analytics = mutable_source(); 4009 4010 get_info().then((data) => { 4011 set(info, data); 4012 }); 4013 4014 get_js_info().then((js_api_info) => { 4015 set(js_info, js_api_info); 4016 }); 4017 4018 async function get_summary() { 4019 let response = await fetch(root().replace(/\/$/, "") + "/monitoring/summary"); 4020 let data = await response.json(); 4021 4022 return data; 4023 } 4024 4025 get_summary().then((summary) => { 4026 set(analytics, summary.functions); 4027 }); 4028 4029 const dispatch = createEventDispatcher(); 4030 let tools = mutable_source([]); 4031 let headers = []; 4032 let mcp_json_stdio = mutable_source(); 4033 let file_data_present = mutable_source(false); 4034 let selected_tools = mutable_source(new Set()); 4035 let tool_prefix = space_id() ? space_id().split("/").pop() + "_" : ""; 4036 4037 function remove_tool_prefix(toolName) { 4038 if (tool_prefix && toolName.startsWith(tool_prefix)) { 4039 return toolName.slice(tool_prefix.length); 4040 } 4041 4042 return toolName; 4043 } 4044 4045 const upload_file_mcp_server = { 4046 command: "uvx", 4047 args: [ 4048 "--from", 4049 "gradio[mcp]", 4050 "gradio", 4051 "upload-mcp", 4052 root(), 4053 "<UPLOAD_DIRECTORY>" 4054 ] 4055 }; 4056 4057 async function fetch_mcp_tools() { 4058 try { 4059 let schema_url = `${root()}gradio_api/mcp/schema`;
4060 const response = await fetch(schema_url); 4061 const schema = await response.json(); 4062 4063 set(file_data_present, schema.map((tool) => tool.meta?.file_data_present).some((present) => present)); 4064 4065 set(tools, schema.map((tool) => ({ 4066 name: tool.name, 4067 description: tool.description || "", 4068 parameters: tool.inputSchema?.properties || {}, 4069 meta: tool.meta, 4070 expanded: false, 4071 endpoint_name: tool.endpoint_name 4072 }))); 4073 4074 set(selected_tools, new Set(get(tools).map((tool) => tool.name))); 4075 headers = schema.map((tool) => tool.meta?.headers || []).flat(); 4076 4077 if (headers.length > 0) { 4078 set(mcp_json_stdio, { 4079 mcpServers: { 4080 gradio: { 4081 command: "npx", 4082 args: [ 4083 "mcp-remote", 4084 get(mcp_server_url_streamable), 4085 "--transport", 4086 "streamable-http", 4087 ...headers.map((header) => ["--header", `${header}: <YOUR_HEADER_VALUE>`]).flat() 4088 ] 4089 } 4090 } 4091 }); 4092 } else { 4093 set(mcp_json_stdio, { 4094 mcpServers: { 4095 gradio: { 4096 command: "npx", 4097 args: [ 4098 "mcp-remote", 4099 get(mcp_server_url_streamable), 4100 "--transport", 4101 "streamable-http" 4102 ] 4103 } 4104 } 4105 }); 4106 4107 if (get(file_data_present)) { 4108 mutate(mcp_json_stdio, get(mcp_json_stdio).mcpServers.upload_files_to_gradio = upload_file_mcp_server); 4109 } 4110 } 4111 } catch(error) { 4112 console.error("Failed to fetch MCP tools:", error); 4113 set(tools, []); 4114 } 4115 } 4116 4117 let markdown_code_snippets = mutable_source({}); 4118 let config_snippets = mutable_source({}); 4119 4120 onMount(() => { 4121 const controller = new AbortController(); 4122 const signal = controller.signal; 4123 4124 document.body.style.overflow = "hidden"; 4125 4126 if ("parentIFrame" in window) { 4127 window.parentIFrame?.scrollTo(0, 0); 4128 } 4129 4130 const lang_param = get_query_param("lang"); 4131 4132 if (is_valid_language(lang_param)) { 4133 set(current_language, lang_param); 4134 } 4135 4136 const mcp_schema_url = `${root()}gradio_api/mcp/schema`; 4137 4138 fetch(mcp_schema_url, { signal }).then((response) => { 4139 set(mcp_server_active, response.ok); 4140 4141 if (get(mcp_server_active)) { 4142 fetch_mcp_tools(); 4143 4144 if (!is_valid_language(lang_param)) { 4145 set(current_language, "mcp"); 4146 } 4147 } else { 4148 if (!is_valid_language(lang_param)) { 4149 set(current_language, "python"); 4150 } 4151 } 4152 4153 controller.abort(); 4154 }).catch(() => { 4155 set(mcp_server_active, false); 4156 }); 4157 4158 return () => { 4159 document.body.style.overflow = "auto"; 4160 }; 4161 }); 4162 4163 legacy_pre_effect( 4164 () => ( 4165 deep_read_state(dependencies()), 4166 get(info), 4167 deep_read_state(last_api_call()) 4168 ), 4169 () => { 4170 set(sorted_dependencies, (() => { 4171 const valid = dependencies().filter((dep) => dep.api_visibility === "public" && get(info)?.named_endpoints?.["/" + dep.api_name]); 4172 4173 if (get(info) && last_api_call()) { 4174 const mostRecent = valid.find((dep) => dep.id === last_api_call().fn_index); 4175 const others = valid.filter((dep) => dep.id !== last_api_call().fn_index); 4176 4177 return mostRecent ? [mostRecent, ...others] : valid; 4178 } 4179 4180 return valid; 4181 })()); 4182 } 4183 ); 4184 4185 legacy_pre_effect( 4186 () => ( 4187 deep_read_state(space_id()), 4188 mcp 4189 ), 4190 () => { 4191 set(langs, [ 4192 ["python", "Python", python], 4193 ["javascript", "JavaScript", javascript], 4194 ["bash", "cURL", bash], 4195 ...space_id() ? [["skill", "Skill", skill]] : [], 4196 ["mcp", "MCP", mcp] 4197 ]); 4198 } 4199 ); 4200 4201 legacy_pre_effect(() => (get(selected_tools)), () => { 4202 set(selected_tools_array, Array.from(get(selected_tools))); 4203 }); 4204 4205 legacy_pre_effect(() => (get(selected_tools_array)), () => { 4206 set(selected_tools_without_prefix, get(selected_tools_array).map(remove_tool_prefix)); 4207 }); 4208 4209 legacy_pre_effect( 4210 () => ( 4211 get(selected_tools_array), 4212 get(tools), 4213 deep_read_state(root()), 4214 get(selected_tools_without_prefix) 4215 ), 4216 () => { 4217 set(mcp_server_url_streamable, get(selected_tools_array).length > 0 && get(selected_tools_array).length < get(tools).length 4218 ? `${root()}gradio_api/mcp/?tools=${get(selected_tools_without_prefix).join(",")}` 4219 : `${root()}gradio_api/mcp/`); 4220 } 4221 ); 4222 4223 legacy_pre_effect(() => (get(markdown_code_snippets)), () => { 4224 get(markdown_code_snippets); 4225 }); 4226 4227 legacy_pre_effect(() => (get(config_snippets)), () => { 4228 get(config_snippets); 4229 }); 4230 4231 legacy_pre_effect_reset(); 4232 4233 var $$exports = { 4234 get dependencies() {
4235 return dependencies(); 4236 }, 4237 4238 set dependencies($$value) { 4239 dependencies($$value); 4240 flushSync(); 4241 }, 4242 4243 get root() { 4244 return root(); 4245 }, 4246 4247 set root($$value) { 4248 root($$value); 4249 flushSync(); 4250 }, 4251 4252 get app() { 4253 return app(); 4254 }, 4255 4256 set app($$value) { 4257 app($$value); 4258 flushSync(); 4259 }, 4260 4261 get space_id() { 4262 return space_id(); 4263 }, 4264 4265 set space_id($$value) { 4266 space_id($$value); 4267 flushSync(); 4268 }, 4269 4270 get root_node() { 4271 return root_node(); 4272 }, 4273 4274 set root_node($$value) { 4275 root_node($$value); 4276 flushSync(); 4277 }, 4278 4279 get username() { 4280 return username(); 4281 }, 4282 4283 set username($$value) { 4284 username($$value); 4285 flushSync(); 4286 }, 4287 4288 get last_api_call() { 4289 return last_api_call(); 4290 }, 4291 4292 set last_api_call($$value) { 4293 last_api_call($$value); 4294 flushSync(); 4295 }, 4296 4297 get api_calls() { 4298 return api_calls(); 4299 }, 4300 4301 set api_calls($$value) { 4302 api_calls($$value); 4303 flushSync(); 4304 } 4305 }; 4306 4307 init(); 4308 4309 var fragment = comment(); 4310 var node = first_child(fragment); 4311 4312 { 4313 var consequent_10 = ($$anchor) => { 4314 var fragment_1 = comment(); 4315 var node_1 = first_child(fragment_1); 4316 4317 { 4318 var consequent_9 = ($$anchor) => { 4319 var fragment_2 = root_3(); 4320 var div = first_child(fragment_2); 4321 var node_2 = child(div); 4322 4323 { 4324 let $0 = derived_safe_equal(() => space_id() || root()); 4325 4326 ApiBanner(node_2, { 4327 get root() { 4328 return get($0); 4329 }, 4330 4331 get api_count() { 4332 return api_count; 4333 }, 4334 4335 get current_language() { 4336 return get(current_language); 4337 }, 4338 4339 $$events: { 4340 close($$arg) { 4341 bubble_event.call(this, $$props, $$arg); 4342 } 4343 } 4344 }); 4345 } 4346 4347 reset(div); 4348 4349 var div_1 = sibling(div, 2); 4350 var div_2 = child(div_1); 4351 var node_3 = sibling(child(div_2), 2); 4352 4353 CopyMarkdown(node_3, { 4354 get current_language() { 4355 return get(current_language); 4356 }, 4357 4358 get space_id() { 4359 return space_id(); 4360 }, 4361 4362 get root() { 4363 return root(); 4364 }, 4365 4366 get api_count() { 4367 return api_count; 4368 }, 4369 4370 get tools() { 4371 return get(tools); 4372 }, 4373 py_docs, 4374 js_docs, 4375 bash_docs, 4376 mcp_docs, 4377 spaces_docs_suffix, 4378 get mcp_server_active() { 4379 return get(mcp_server_active); 4380 }, 4381 4382 get mcp_server_url_streamable() { 4383 return get(mcp_server_url_streamable); 4384 }, 4385 4386 get config_snippets() { 4387 return get(config_snippets); 4388 }, 4389 4390 get markdown_code_snippets() { 4391 return get(markdown_code_snippets); 4392 }, 4393 4394 get dependencies() { 4395 return dependencies(); 4396 }, 4397 4398 get info() { 4399 return get(info); 4400 }, 4401 4402 get js_info() { 4403 return get(js_info); 4404 } 4405 }); 4406 4407 reset(div_2); 4408 4409 var div_3 = sibling(div_2, 2); 4410 var div_4 = child(div_3); 4411 4412 each(div_4, 5, () => get(langs), index, ($$anchor, $$item) => { 4413 var $$array = user_derived(() => to_array(get($$item), 3)); 4414 let language = () => get($$array)[0]; 4415 let display_name = () => get($$array)[1]; 4416 let img = () => get($$array)[2]; 4417 var li = root_4(); 4418 var img_1 = child(li); 4419 var text = sibling(img_1); 4420 4421 reset(li); 4422 4423 template_effect(() => { 4424 set_class( 4425 li, 4426 1, 4427 `snippet 4428 ${get(current_language) === language() ? 'current-lang' : 'inactive-lang'}`, 4429 'svelte-1ujc8oz' 4430 ); 4431 4432 set_attribute(img_1, 'src', img()); 4433 set_text(text, ` ${display_name() ?? ''}`); 4434 }); 4435 4436 event('click', li, () => { 4437 set(current_language, language()); 4438 set_query_param("lang", language()); 4439 }); 4440 4441 append($$anchor, li); 4442 }); 4443 4444 reset(div_4); 4445 4446 var node_4 = sibling(div_4, 2); 4447 4448 { 4449 var consequent = ($$anchor) => { 4450 var fragment_3 = root_5(); 4451 var div_5 = first_child(fragment_3); 4452 var p = child(div_5); 4453 var span = sibling(child(p)); 4454 var text_1 = child(span); 4455 4456 reset(span); 4457 reset(p); 4458 4459 var p_1 = sibling(p, 2); 4460 var text_2 = child(p_1); 4461 4462 reset(p_1); 4463 4464 var node_5 = sibling(p_1, 2); 4465 4466 { 4467 let $0 = derived_safe_equal(() => space_id() || root()); 4468 4469 RecordingSnippet(node_5, { 4470 get current_language() { 4471 return get(current_language); 4472 }, 4473 4474 get api_calls() { 4475 return api_calls(); 4476 }, 4477 4478 get dependencies() {
4479 return dependencies(); 4480 }, 4481 4482 get root() { 4483 return root(); 4484 }, 4485 4486 get api_prefix() { 4487 return (deep_read_state(app()), untrack(() => app().api_prefix)); 4488 }, 4489 4490 get short_root() { 4491 return get($0); 4492 }, 4493 4494 get username() { 4495 return username(); 4496 } 4497 }); 4498 } 4499 4500 next(2); 4501 reset(div_5); 4502 next(2); 4503 4504 template_effect(() => { 4505 set_text(text_1, `[${( 4506 deep_read_state(api_calls()), 4507 untrack(() => api_calls().length) 4508 ) ?? ''}]`); 4509 4510 set_text(text_2, `Here is the code snippet to replay the most recently recorded API 4511 calls using the ${get(current_language) ?? ''} 4512 client.`); 4513 }); 4514 4515 append($$anchor, fragment_3); 4516 }; 4517 4518 var alternate_1 = ($$anchor) => { 4519 var fragment_4 = root_6(); 4520 var node_6 = first_child(fragment_4); 4521 4522 { 4523 var consequent_3 = ($$anchor) => { 4524 var p_2 = root_7(); 4525 var node_7 = child(p_2); 4526 4527 { 4528 var consequent_1 = ($$anchor) => { 4529 var fragment_5 = root_8(); 4530 var span_1 = sibling(first_child(fragment_5)); 4531 var text_3 = child(span_1, true); 4532 4533 reset(span_1); 4534 4535 var a = sibling(span_1, 2); 4536 4537 next(); 4538 4539 template_effect(() => { 4540 set_text(text_3, get(current_language)); 4541 set_attribute(a, 'href', get(current_language) == "python" ? py_docs : js_docs); 4542 }); 4543 4544 append($$anchor, fragment_5); 4545 }; 4546 4547 var alternate = ($$anchor) => { 4548 var fragment_6 = comment(); 4549 var node_8 = first_child(fragment_6); 4550 4551 { 4552 var consequent_2 = ($$anchor) => { 4553 var text_4 = text('1. Confirm that you have cURL installed on your system.'); 4554 4555 append($$anchor, text_4); 4556 }; 4557 4558 if_block( 4559 node_8, 4560 ($$render) => { 4561 if (get(current_language) == "bash") $$render(consequent_2); 4562 }, 4563 true 4564 ); 4565 } 4566 4567 append($$anchor, fragment_6); 4568 }; 4569 4570 if_block(node_7, ($$render) => { 4571 if (get(current_language) == "python" || get(current_language) == "javascript") $$render(consequent_1); else $$render(alternate, false); 4572 }); 4573 } 4574 4575 reset(p_2); 4576 append($$anchor, p_2); 4577 }; 4578 4579 if_block(node_6, ($$render) => { 4580 if (get(current_language) !== "skill") $$render(consequent_3); 4581 }); 4582 } 4583 4584 var div_6 = sibling(node_6, 2); 4585 let classes; 4586 var node_9 = child(div_6); 4587 4588 SkillSnippet(node_9, { 4589 get space_id() { 4590 return space_id(); 4591 } 4592 }); 4593 4594 reset(div_6); 4595 4596 var div_7 = sibling(div_6, 2); 4597 let classes_1;
4598 var node_10 = child(div_7); 4599 4600 { 4601 let $0 = derived_safe_equal(() => ( 4602 get(tools), 4603 get(selected_tools), 4604 untrack(() => get(tools).filter((tool) => get(selected_tools).has(tool.name))) 4605 )); 4606 4607 MCPSnippet(node_10, { 4608 get mcp_server_active() { 4609 return get(mcp_server_active); 4610 }, 4611 4612 get mcp_server_url_streamable() { 4613 return get(mcp_server_url_streamable); 4614 }, 4615 4616 get tools() { 4617 return get($0); 4618 }, 4619 4620 get all_tools() { 4621 return get(tools); 4622 }, 4623 4624 get mcp_json_stdio() { 4625 return get(mcp_json_stdio); 4626 }, 4627 4628 get file_data_present() { 4629 return get(file_data_present); 4630 }, 4631 mcp_docs, 4632 get analytics() { 4633 return get(analytics); 4634 }, 4635 4636 get root() { 4637 return root(); 4638 }, 4639 4640 get selected_tools() { 4641 return get(selected_tools); 4642 }, 4643 4644 set selected_tools($$value) { 4645 set(selected_tools, $$value); 4646 }, 4647 4648 get config_snippets() { 4649 return get(config_snippets); 4650 }, 4651 4652 set config_snippets($$value) { 4653 set(config_snippets, $$value); 4654 }, 4655 $$legacy: true 4656 }); 4657 } 4658 4659 reset(div_7); 4660
4661 var node_11 = sibling(div_7, 2); 4662 4663 { 4664 var consequent_7 = ($$anchor) => { 4665 var fragment_7 = root_11(); 4666 var node_12 = first_child(fragment_7); 4667 4668 InstallSnippet(node_12, { 4669 get current_language() { 4670 return get(current_language); 4671 } 4672 }); 4673 4674 var p_3 = sibling(node_12, 2); 4675 var node_13 = sibling(child(p_3)); 4676 4677 { 4678 var consequent_4 = ($$anchor) => { 4679 var fragment_8 = root_12(); 4680 var a_1 = sibling(first_child(fragment_8)); 4681 4682 next(); 4683 4684 template_effect(() => set_attribute(a_1, 'href', get(current_language) == "python" 4685 ? py_docs + spaces_docs_suffix 4686 : get(current_language) == "javascript" ? js_docs + spaces_docs_suffix : bash_docs)); 4687 4688 append($$anchor, fragment_8); 4689 }; 4690 4691 if_block(node_13, ($$render) => { 4692 if (space_id()) $$render(consequent_4); 4693 }); 4694 } 4695 4696 var node_14 = sibling(node_13, 2); 4697 4698 Button(node_14, { 4699 size: 'sm', 4700 variant: 'secondary', 4701 $$events: { 4702 click: () => dispatch("close", { api_recorder_visible: true }) 4703 }, 4704 4705 children: ($$anchor, $$slotProps) => { 4706 var fragment_9 = root_13(); 4707 4708 next(2); 4709 append($$anchor, fragment_9); 4710 }, 4711 $$slots: { default: true } 4712 }); 4713
4714 var node_15 = sibling(node_14, 2); 4715 4716 { 4717 var consequent_6 = ($$anchor) => { 4718 var fragment_10 = root_14(); 4719 var node_16 = sibling(first_child(fragment_10), 20); 4720 4721 { 4722 var consequent_5 = ($$anchor) => { 4723 var text_5 = text('Note: connecting to an authenticated app requires an\n additional request.'); 4724 4725 append($$anchor, text_5); 4726 }; 4727 4728 if_block(node_16, ($$render) => { 4729 if (username() !== null) $$render(consequent_5); 4730 }); 4731 } 4732 4733 var a_2 = sibling(node_16, 2); 4734 4735 set_attribute(a_2, 'href', bash_docs); 4736 next(); 4737 append($$anchor, fragment_10); 4738 }; 4739 4740 if_block(node_15, ($$render) => { 4741 if (get(current_language) == "bash") $$render(consequent_6); 4742 }); 4743 } 4744 4745 reset(p_3); 4746 append($$anchor, fragment_7); 4747 }; 4748 4749 if_block(node_11, ($$render) => { 4750 if (get(current_language) !== "mcp" && get(current_language) !== "skill") $$render(consequent_7); 4751 }); 4752 } 4753 4754 template_effect(() => { 4755 classes = set_class(div_6, 1, 'svelte-1ujc8oz', null, classes, { hidden: get(current_language) !== "skill" }); 4756 classes_1 = set_class(div_7, 1, 'svelte-1ujc8oz', null, classes_1, { hidden: get(current_language) !== "mcp" }); 4757 }); 4758 4759 append($$anchor, fragment_4); 4760 }; 4761 4762 if_block(node_4, ($$render) => { 4763 if (( 4764 deep_read_state(api_calls()), 4765 untrack(() => api_calls().length) 4766 )) $$render(consequent); else $$render(alternate_1, false); 4767 }); 4768 } 4769 4770 var div_8 = sibling(node_4, 2);
4771 let classes_2; 4772 4773 each(div_8, 5, () => get(sorted_dependencies), index, ($$anchor, dependency) => { 4774 var fragment_11 = comment(); 4775 var node_17 = first_child(fragment_11); 4776 4777 { 4778 var consequent_8 = ($$anchor) => { 4779 var div_9 = root_17(); 4780 var node_18 = child(div_9); 4781 4782 CodeSnippet(node_18, { 4783 get dependency() { 4784 return get(dependency); 4785 }, 4786 4787 get current_language() { 4788 return get(current_language); 4789 }, 4790 4791 get api_description() { 4792 return ( 4793 get(info), 4794 get(dependency), 4795 untrack(() => get(info).named_endpoints["/" + get(dependency).api_name].description) 4796 ); 4797 }, 4798 4799 get analytics() { 4800 return get(analytics); 4801 }, 4802 4803 get last_api_call() { 4804 return last_api_call(); 4805 }, 4806 4807 get code_snippets() { 4808 return ( 4809 get(info), 4810 get(dependency), 4811 untrack(() => get(info).named_endpoints["/" + get(dependency).api_name].code_snippets) 4812 ); 4813 }, 4814 4815 get markdown_code_snippets() { 4816 return get(markdown_code_snippets); 4817 }, 4818 4819 set markdown_code_snippets($$value) { 4820 set(markdown_code_snippets, $$value); 4821 }, 4822 $$legacy: true 4823 }); 4824
4825 var node_19 = sibling(node_18, 2); 4826 4827 ParametersSnippet(node_19, { 4828 get endpoint_returns() { 4829 return ( 4830 get(info), 4831 get(dependency), 4832 untrack(() => get(info).named_endpoints["/" + get(dependency).api_name].parameters) 4833 ); 4834 }, 4835 4836 get js_returns() { 4837 return ( 4838 get(js_info), 4839 get(dependency), 4840 untrack(() => get(js_info).named_endpoints["/" + get(dependency).api_name].parameters) 4841 ); 4842 }, 4843 is_running, 4844 get current_language() { 4845 return get(current_language); 4846 } 4847 }); 4848 4849 var node_20 = sibling(node_19, 2); 4850 4851 ResponseSnippet(node_20, { 4852 get endpoint_returns() { 4853 return ( 4854 get(info), 4855 get(dependency), 4856 untrack(() => get(info).named_endpoints["/" + get(dependency).api_name].returns) 4857 ); 4858 }, 4859 4860 get js_returns() { 4861 return ( 4862 get(js_info), 4863 get(dependency), 4864 untrack(() => get(js_info).named_endpoints["/" + get(dependency).api_name].returns) 4865 ); 4866 }, 4867 is_running, 4868 get current_language() { 4869 return get(current_language); 4870 } 4871 }); 4872 4873 reset(div_9); 4874 append($$anchor, div_9); 4875 }; 4876 4877 if_block(node_17, ($$render) => { 4878 if (( 4879 get(info), 4880 get(dependency), 4881 untrack(() => get(info).named_endpoints["/" + get(dependency).api_name]) 4882 )) $$render(consequent_8); 4883 }); 4884 } 4885 4886 append($$anchor, fragment_11); 4887 }); 4888 4889 reset(div_8); 4890 reset(div_3); 4891 reset(div_1); 4892 4893 template_effect(() => classes_2 = set_class(div_8, 1, 'svelte-1ujc8oz', null, classes_2, { 4894 hidden: get(current_language) === "mcp" || get(current_language) === "skill" 4895 })); 4896 4897 append($$anchor, fragment_2); 4898 }; 4899 4900 var alternate_2 = ($$anchor) => { 4901 NoApi($$anchor, { 4902 get root() { 4903 return root(); 4904 }, 4905 4906 $$events: { 4907 close($$arg) { 4908 bubble_event.call(this, $$props, $$arg); 4909 } 4910 } 4911 }); 4912 }; 4913 4914 if_block(node_1, ($$render) => { 4915 if (api_count) $$render(consequent_9); else $$render(alternate_2, false); 4916 }); 4917 } 4918 4919 append($$anchor, fragment_1); 4920 }; 4921 4922 if_block(node, ($$render) => { 4923 if (get(info) && get(analytics)) $$render(consequent_10); 4924 }); 4925 } 4926 4927 append($$anchor, fragment); 4928 4929 return pop($$exports); 4930} 4931 4932export { ApiDocs as default }; 4933//# sourceMappingURL=ApiDocs-9hYmXNno.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.