1import { B as BranchManager, p as prop, i as if_block, k as each, u as index, b as set_class, g as spread_props, f as set_style, h as clsx, r as rest_props } from './i18n-CGlVUOvE.js'; 2import { p as block, aB as is_promise, J as queue_micro_task, aC as internal_set, aD as Batch, aE as unset_context, aF as is_flushing_sync, P as flushSync, aG as source, aH as UNINITIALIZED, a7 as is_runes, a0 as mutable_source, aI as capture, h as hydrating, e as hydrate_next, aJ as HYDRATION_START_ELSE, s as set_hydrate_node, aK as skip_nodes, aq as set_hydrating, M as push, a3 as comment, N as first_child, a as append, O as pop, S as sibling, Z as get, ai as delegate, R as from_html, a2 as user_derived, U as event, Q as child, $ as set, t as template_effect, X as set_text, ab as state, T as reset } from './index-Bq2njFOY.js'; 3import { B as Block } from './Block-DNK-JdLJ.js'; 4import './MarkdownCode.svelte_svelte_type_style_lang-B29zDiob.js'; 5import { c as component } from './ScrollFade.svelte_svelte_type_style_lang-D0JPkGar.js'; 6import { G as Gradio } from './utils.svelte-Bi9ASwv9.js'; 7import { k as key } from './key-CQEYzg1f.js'; 8import './Textbox-BXTb2K73.js'; 9import './StreamingBar.svelte_svelte_type_style_lang-DWGn5tT_.js'; 10import Example from './Example-DYo_cEEb.js'; 11import './prism-python-NrKIQnfs.js'; 12import './snippet-BG7qkY_1.js'; 13import './actions-CgRQ2lHA.js'; 14import './input-CXpCw23l.js'; 15import './BlockTitle-Bcj082QO.js'; 16import './Info-CfqzbVCN.js'; 17import './MarkdownCode-BYKuypS7.js'; 18import './html-Bwif0JPw.js'; 19import './Check-BKMHx_DF.js'; 20import './Copy-BQlJe6-D.js'; 21import './Send-CFiHLThw.js'; 22import './Square-kMgNk9Wy.js'; 23import './IconButtonWrapper-DAsvkfJg.js'; 24import './size-CWi277d_.js'; 25/* empty css */ 26 27/** @import { Source, TemplateNode } from '#client' */ 28 29const PENDING = 0; 30const THEN = 1; 31 32/** @typedef {typeof PENDING | typeof THEN | typeof CATCH} AwaitState */ 33 34/** 35 * @template V 36 * @param {TemplateNode} node 37 * @param {(() => any)} get_input 38 * @param {null | ((anchor: Node) => void)} pending_fn 39 * @param {null | ((anchor: Node, value: Source<V>) => void)} then_fn 40 * @param {null | ((anchor: Node, error: unknown) => void)} catch_fn 41 * @returns {void} 42 */ 43function await_block(node, get_input, pending_fn, then_fn, catch_fn) { 44 if (hydrating) { 45 hydrate_next(); 46 } 47 48 var runes = is_runes(); 49 50 var v = /** @type {V} */ (UNINITIALIZED); 51 var value = runes ? source(v) : mutable_source(v, false, false); 52 var error = runes ? source(v) : mutable_source(v, false, false); 53 54 var branches = new BranchManager(node); 55 56 block(() => { 57 var input = get_input(); 58 var destroyed = false; 59 60 /** Whether or not there was a hydration mismatch. Needs to be a `let` or else it isn't treeshaken out */ 61 // @ts-ignore coercing `node` to a `Comment` causes TypeScript and Prettier to fight 62 let mismatch = hydrating && is_promise(input) === (node.data === HYDRATION_START_ELSE); 63 64 if (mismatch) { 65 // Hydration mismatch: remove everything inside the anchor and start fresh 66 set_hydrate_node(skip_nodes()); 67 set_hydrating(false); 68 } 69 70 if (is_promise(input)) { 71 var restore = capture(); 72 var resolved = false; 73 74 /** 75 * @param {() => void} fn 76 */ 77 const resolve = (fn) => { 78 if (destroyed) return; 79 80 resolved = true; 81 // We don't want to restore the previous batch here; {#await} blocks don't follow the async logic 82 // we have elsewhere, instead pending/resolve/fail states are each their own batch so to speak. 83 restore(false); 84 // Make sure we have a batch, since the branch manager expects one to exist 85 Batch.ensure(); 86 87 if (hydrating) {
88 // `restore()` could set `hydrating` to `true`, which we very much 89 // don't want â we want to restore everything _except_ this 90 set_hydrating(false); 91 } 92 93 try { 94 fn(); 95 } finally { 96 unset_context(); 97 98 // without this, the DOM does not update until two ticks after the promise 99 // resolves, which is unexpected behaviour (and somewhat irksome to test) 100 if (!is_flushing_sync) flushSync(); 101 } 102 }; 103 104 input.then( 105 (v) => { 106 resolve(() => { 107 internal_set(value, v); 108 branches.ensure(THEN, then_fn && ((target) => then_fn(target, value))); 109 }); 110 }, 111 (e) => { 112 resolve(() => { 113 internal_set(error, e); 114 branches.ensure(THEN, catch_fn && ((target) => catch_fn(target, error))); 115 116 if (!catch_fn) { 117 // Rethrow the error if no catch block exists 118 throw error.v; 119 } 120 }); 121 } 122 ); 123 124 if (hydrating) { 125 branches.ensure(PENDING, pending_fn); 126 } else { 127 // Wait a microtask before checking if we should show the pending state as 128 // the promise might have resolved by then 129 queue_micro_task(() => { 130 if (!resolved) { 131 resolve(() => { 132 branches.ensure(PENDING, pending_fn); 133 }); 134 } 135 }); 136 } 137 } else { 138 internal_set(value, input); 139 branches.ensure(THEN, then_fn && ((target) => then_fn(target, value))); 140 } 141 142 if (mismatch) { 143 // continue in hydration mode 144 set_hydrating(true); 145 } 146 147 return () => { 148 destroyed = true; 149 }; 150 }); 151} 152 153var root_5 = from_html(`<button class="gallery-item svelte-16f20a1"><!></button>`); 154var root_3 = from_html(`<div class="gallery svelte-16f20a1"></div>`); 155var root_13 = from_html(`<th class="svelte-16f20a1"> </th>`); 156var root_16 = from_html(`<td><!></td>`); 157var root_14 = from_html(`<tr class="tr-body svelte-16f20a1"></tr>`); 158var root_12 = from_html(`<div class="table-wrap svelte-16f20a1"><table tabindex="0" role="grid" class="svelte-16f20a1"><thead><tr class="tr-head svelte-16f20a1"></tr></thead><tbody></tbody></table></div>`); 159var root_20 = from_html(`<div>...</div>`); 160var root_21 = from_html(`<button> </button>`); 161var root_18 = from_html(`<div class="paginate svelte-16f20a1">Pages: <!></div>`); 162var root_2$1 = from_html(`<!> <!>`, 1); 163 164function Dataset($$anchor, $$props) { 165 push($$props, true); 166 167 let sample_labels = prop($$props, 'sample_labels', 3, null), 168 value = prop($$props, 'value', 15, null), 169 samples_per_page = prop($$props, 'samples_per_page', 3, 10), 170 layout = prop($$props, 'layout', 3, null); 171 172 // Although the `samples_dir` prop is not used in any of the core Gradio component, it is kept for backward compatibility 173 // with any custom components created with gradio<=4.20.0 174 let samples_dir = user_derived(() => $$props.proxy_url 175 ? `/proxy=${$$props.proxy_url}file=` 176 : `${$$props.root}/file=`); 177 178 let current_hover = state(-1); 179 let gallery = user_derived(() => ($$props.components.length < 2 || sample_labels() !== null) && layout() !== "table"); 180 181 let effective_samples = user_derived(() => { 182 if (sample_labels()) { 183 return sample_labels().map((e) => [e]); 184 } 185 186 return $$props.samples ?? []; 187 }); 188 189 // page resets to 0 whenever effective_samples changes, 190 // but can still be overwritten by user clicks 191 let page = user_derived(() => { 192 get(effective_samples); 193 194 return 0; 195 }); 196 197 let paginate = user_derived(() => get(effective_samples).length > samples_per_page()); 198 199 let selected_samples = user_derived(() => { 200 if (get(paginate)) { 201 return get(effective_samples).slice(get(page) * samples_per_page(), (get(page) + 1) * samples_per_page()); 202 } 203 204 return get(effective_samples).slice(); 205 }); 206 207 let page_count = user_derived(() => Math.ceil(get(effective_samples).length / samples_per_page())); 208 209 let visible_pages = user_derived(() => { 210 if (!get(paginate)) return []; 211 212 let pages = []; 213 214 [0, get(page), get(page_count) - 1].forEach((anchor) => { 215 for (let i = anchor - 2; i <= anchor + 2; i++) { 216 if (i >= 0 && i < get(page_count) && !pages.includes(i)) { 217 if (pages.length > 0 && i - pages[pages.length - 1] > 1) { 218 pages.push(-1); 219 } 220 221 pages.push(i); 222 } 223 } 224 }); 225 226 return pages; 227 }); 228 229 function handle_mouseenter(i) { 230 set(current_hover, i, true); 231 } 232 233 function handle_mouseleave() { 234 set(current_hover, -1); 235 } 236 237 let component_meta = []; 238 239 async function get_component_meta(selected_samples_json) { 240 const _selected_samples = JSON.parse(selected_samples_json); 241 242 // @ts-ignore 243 component_meta = await Promise.all(_selected_samples && _selected_samples.map(async (sample_row) => await Promise.all(sample_row.map(async (sample_cell, j) => { 244 return { 245 value: sample_cell, 246 component: $$props.load_component($$props.components[j], "example") 247 }; 248 })))); 249 } 250 251 // Need to stringify the samples otherwise get_component_meta will trigger infinitely 252 // Saw this when rendering examples in a gr.render block 253 let selected_samples_json = user_derived(() => JSON.stringify(get(selected_samples) || [])); 254 255 var fragment = comment(); 256 var node = first_child(fragment); 257 258 await_block(node, () => get_component_meta(get(selected_samples_json)), null, ($$anchor, _) => { 259 var fragment_1 = root_2$1();
260 var node_1 = first_child(fragment_1); 261 262 { 263 var consequent_3 = ($$anchor) => { 264 var div = root_3(); 265 266 each(div, 21, () => get(selected_samples), index, ($$anchor, sample_row, i) => { 267 var fragment_2 = comment(); 268 var node_2 = first_child(fragment_2); 269 270 { 271 var consequent_2 = ($$anchor) => { 272 var button = root_5(); 273 274 button.__click = () => { 275 value(i + get(page) * samples_per_page()); 276 $$props.onclick({ index: value(), value: get(sample_row) }); 277 $$props.onselect({ index: value(), value: get(sample_row) }); 278 }; 279 280 var node_3 = child(button); 281 282 { 283 var consequent = ($$anchor) => { 284 { 285 let $0 = user_derived(() => get(current_hover) === i); 286 287 Example($$anchor, { 288 get value() { 289 return get(sample_row)[0]; 290 }, 291 292 get selected() { 293 return get($0); 294 }, 295 type: 'gallery' 296 }); 297 } 298 }; 299 300 var alternate = ($$anchor) => { 301 var fragment_4 = comment(); 302 var node_4 = first_child(fragment_4); 303 304 { 305 var consequent_1 = ($$anchor) => { 306 var fragment_5 = comment(); 307 var node_5 = first_child(fragment_5); 308 309 await_block(node_5, () => component_meta[0][0].component, null, ($$anchor, component$1) => { 310 var fragment_6 = comment(); 311 var node_6 = first_child(fragment_6); 312 313 key(node_6, () => get(sample_row)[0], ($$anchor) => { 314 var fragment_7 = comment(); 315 var node_7 = first_child(fragment_7); 316 317 { 318 let $0 = user_derived(() => get(current_hover) === i); 319 320 component(node_7, () => get(component$1).default, ($$anchor, $$component) => { 321 $$component($$anchor, spread_props(() => $$props.component_props[0], { 322 get value() { 323 return get(sample_row)[0]; 324 }, 325 326 get samples_dir() { 327 return get(samples_dir); 328 }, 329 type: 'gallery', 330 get selected() { 331 return get($0); 332 }, 333 index: i, 334 get root() { 335 return $$props.root; 336 } 337 })); 338 }); 339 } 340 341 append($$anchor, fragment_7); 342 }); 343 344 append($$anchor, fragment_6); 345 }); 346 347 append($$anchor, fragment_5); 348 }; 349 350 if_block( 351 node_4, 352 ($$render) => { 353 if (component_meta.length) $$render(consequent_1); 354 }, 355 true 356 ); 357 } 358 359 append($$anchor, fragment_4); 360 }; 361 362 if_block(node_3, ($$render) => { 363 if (sample_labels()) $$render(consequent); else $$render(alternate, false); 364 }); 365 } 366 367 reset(button); 368 event('mouseenter', button, () => handle_mouseenter(i)); 369 event('mouseleave', button, () => handle_mouseleave()); 370 append($$anchor, button); 371 }; 372 373 if_block(node_2, ($$render) => { 374 if (get(sample_row)[0] != null) $$render(consequent_2); 375 }); 376 } 377 378 append($$anchor, fragment_2); 379 }); 380 381 reset(div); 382 append($$anchor, div); 383 }; 384 385 var alternate_1 = ($$anchor) => { 386 var fragment_8 = comment(); 387 var node_8 = first_child(fragment_8); 388 389 { 390 var consequent_5 = ($$anchor) => { 391 var div_1 = root_12(); 392 var table = child(div_1); 393 var thead = child(table); 394 var tr = child(thead); 395 396 each(tr, 21, () => $$props.headers, index, ($$anchor, header) => { 397 var th = root_13(); 398 var text = child(th, true); 399 400 reset(th); 401 template_effect(() => set_text(text, get(header))); 402 append($$anchor, th); 403 }); 404 405 reset(tr); 406 reset(thead); 407 408 var tbody = sibling(thead); 409 410 each(tbody, 21, () => component_meta, index, ($$anchor, sample_row, i) => { 411 var tr_1 = root_14(); 412 413 tr_1.__click = () => { 414 value(i + get(page) * samples_per_page()); 415 $$props.onclick({ index: value(), value: get(sample_row) }); 416 $$props.onselect({ index: value(), value: get(selected_samples)[i] }); 417 }; 418 419 each(tr_1, 21, () => get(sample_row), index, ($$anchor, $$item, j, $$array) => { 420 let value = () => get($$item).value;
421 let component$1 = () => get($$item).component; 422 const component_name = user_derived(() => $$props.components[j]); 423 var fragment_9 = comment(); 424 var node_9 = first_child(fragment_9); 425 426 { 427 var consequent_4 = ($$anchor) => { 428 var td = root_16(); 429 var node_10 = child(td); 430 431 await_block(node_10, component$1, null, ($$anchor, component$1) => { 432 var fragment_10 = comment(); 433 var node_11 = first_child(fragment_10); 434 435 { 436 let $0 = user_derived(() => get(current_hover) === i); 437 438 component(node_11, () => get(component$1).default, ($$anchor, $$component) => { 439 $$component($$anchor, spread_props(() => $$props.component_props[j], { 440 get value() { 441 return value(); 442 }, 443 444 get samples_dir() { 445 return get(samples_dir); 446 }, 447 type: 'table', 448 get selected() { 449 return get($0); 450 }, 451 index: i, 452 get root() { 453 return $$props.root; 454 } 455 })); 456 }); 457 } 458 459 append($$anchor, fragment_10); 460 }); 461 462 reset(td); 463 464 template_effect(() => { 465 set_style(td, `max-width: ${get(component_name) === 'textbox' ? '35ch' : 'auto'}`); 466 set_class(td, 1, clsx(get(component_name)), 'svelte-16f20a1'); 467 }); 468 469 append($$anchor, td); 470 }; 471 472 if_block(node_9, ($$render) => { 473 if (get(component_name) !== undefined) $$render(consequent_4); 474 }); 475 } 476 477 append($$anchor, fragment_9); 478 }); 479 480 reset(tr_1); 481 event('mouseenter', tr_1, () => handle_mouseenter(i)); 482 event('mouseleave', tr_1, () => handle_mouseleave()); 483 append($$anchor, tr_1); 484 }); 485 486 reset(tbody); 487 reset(table); 488 reset(div_1); 489 append($$anchor, div_1); 490 }; 491 492 if_block( 493 node_8, 494 ($$render) => { 495 if (get(selected_samples).length > 0) $$render(consequent_5); 496 }, 497 true 498 ); 499 } 500 501 append($$anchor, fragment_8); 502 }; 503 504 if_block(node_1, ($$render) => { 505 if (get(gallery)) $$render(consequent_3); else $$render(alternate_1, false); 506 }); 507 } 508 509 var node_12 = sibling(node_1, 2); 510 511 { 512 var consequent_7 = ($$anchor) => { 513 var div_2 = root_18();
514 var node_13 = sibling(child(div_2)); 515 516 each(node_13, 17, () => get(visible_pages), index, ($$anchor, visible_page) => { 517 var fragment_11 = comment(); 518 var node_14 = first_child(fragment_11); 519 520 { 521 var consequent_6 = ($$anchor) => { 522 var div_3 = root_20(); 523 524 append($$anchor, div_3); 525 }; 526 527 var alternate_2 = ($$anchor) => { 528 var button_1 = root_21(); 529 530 button_1.__click = () => set(page, get(visible_page)); 531 532 let classes; 533 var text_1 = child(button_1, true); 534 535 reset(button_1); 536 537 template_effect(() => { 538 classes = set_class(button_1, 1, 'svelte-16f20a1', null, classes, { 'current-page': get(page) === get(visible_page) }); 539 set_text(text_1, get(visible_page) + 1); 540 }); 541 542 append($$anchor, button_1); 543 }; 544 545 if_block(node_14, ($$render) => { 546 if (get(visible_page) === -1) $$render(consequent_6); else $$render(alternate_2, false); 547 }); 548 } 549 550 append($$anchor, fragment_11); 551 }); 552 553 reset(div_2); 554 append($$anchor, div_2); 555 }; 556 557 if_block(node_12, ($$render) => { 558 if (get(paginate)) $$render(consequent_7); 559 }); 560 } 561 562 append($$anchor, fragment_1); 563 }); 564 565 append($$anchor, fragment); 566 pop(); 567} 568 569delegate(['click']); 570 571var root_2 = from_html(`<div class="label svelte-bnxc4d"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32" class="svelte-bnxc4d"><path fill="currentColor" d="M10 6h18v2H10zm0 18h18v2H10zm0-9h18v2H10zm-6 0h2v2H4zm0-9h2v2H4zm0 18h2v2H4z"></path></svg> </div>`); 572var root_1 = from_html(`<!> <!>`, 1); 573 574function Index($$anchor, $$props) { 575 push($$props, true); 576 577 let props = rest_props($$props, ['$$slots', '$$events', '$$legacy']); 578 const gradio = new Gradio(props); 579 580 // Need to mark samples as state, otherwise get_component_meta constantly triggers 581 let samples = user_derived(() => gradio.props.samples ?? []); 582 583 Block($$anchor, { 584 get visible() { 585 return gradio.shared.visible; 586 }, 587 padding: false, 588 get elem_id() { 589 return gradio.shared.elem_id; 590 }, 591 592 get elem_classes() { 593 return gradio.shared.elem_classes; 594 }, 595 596 get scale() { 597 return gradio.shared.scale; 598 }, 599 600 get min_width() { 601 return gradio.shared.min_width; 602 }, 603 allow_overflow: false, 604 container: false, 605 children: ($$anchor, $$slotProps) => { 606 var fragment_1 = root_1(); 607 var node = first_child(fragment_1); 608 609 { 610 var consequent = ($$anchor) => { 611 var div = root_2(); 612 var text = sibling(child(div)); 613 614 reset(div); 615 template_effect(() => set_text(text, ` ${(gradio.shared.label || "Examples") ?? ''}`)); 616 append($$anchor, div); 617 }; 618 619 if_block(node, ($$render) => { 620 if (gradio.shared.show_label) $$render(consequent); 621 }); 622 } 623 624 var node_1 = sibling(node, 2); 625 626 Dataset(node_1, spread_props( 627 { 628 onclick: (d) => ( 629 gradio.props.value = d.index, 630 gradio.dispatch("click", gradio.props.value) 631 ), 632 onselect: (data) => gradio.dispatch("select", data), 633 get load_component() { 634 return gradio.shared.load_component; 635 }, 636 637 get samples() { 638 return get(samples); 639 } 640 }, 641 () => gradio.props 642 )); 643 644 append($$anchor, fragment_1); 645 }, 646 $$slots: { default: true } 647 }); 648 649 pop(); 650} 651 652export { Index as default }; 653//# sourceMappingURL=Index-_a-G1TDi.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.