1import { g as spread_props, i as if_block, r as rest_props, d as bind_this, h as clsx, b as set_class } from './i18n-CGlVUOvE.js'; 2import { M as push, ab as state, ac as proxy, N as first_child, a as append, $ as set, Z as get, O as pop, I as tick, a2 as user_derived, S as sibling, R as from_html, t as template_effect, Q as child, T as reset, a3 as comment } from './index-Bq2njFOY.js'; 3import { b as bubble_event } from './misc-D8a4ZbMA.js'; 4import { B as Block } from './Block-DNK-JdLJ.js'; 5import './MarkdownCode.svelte_svelte_type_style_lang-B29zDiob.js'; 6import { S as SelectSource } from './ScrollFade.svelte_svelte_type_style_lang-D0JPkGar.js'; 7import { G as Gradio } from './utils.svelte-Bi9ASwv9.js'; 8import { U as UploadText } from './UploadText-C6bbM_PO.js'; 9import { G as Gallery, h as handle_save } from './Gallery-D9uGL0FX.js'; 10import { S as Static } from './index-1GCmrSlD.js'; 11import './StreamingBar.svelte_svelte_type_style_lang-DWGn5tT_.js'; 12import { a as FileUpload } from './FileUpload-Cvp8_L6I.js'; 13/* empty css */ 14/* empty css */ 15/* empty css */ 16import { W as Webcam } from './Webcam-CIJ5MvIX.js'; 17import './Upload-xR3P-2U5.js'; 18/* empty css */ 19/* empty css */ 20export { default as BaseExample } from './Example-BstfUWdZ.js'; 21import './prism-python-NrKIQnfs.js'; 22import './snippet-BG7qkY_1.js'; 23import './window-BVsmErEt.js'; 24import './event-modifiers-DanhKw3_.js'; 25import './BlockLabel-VpI11pHf.js'; 26import './Empty-BrRNpJ3n.js'; 27import './ShareButton-CORLYhd9.js'; 28import './Clear-C8Tfa7QP.js'; 29import './Download-D5ZNT7uE.js'; 30import './Image-DfZjI5oa.js'; 31import './Play-CGGxKNeS.js'; 32import './IconButtonWrapper-DAsvkfJg.js'; 33import './FullscreenButton-C6RgeACK.js'; 34import './Maximize-2N5airbC.js'; 35import './ModifyUpload-BzhUWnkZ.js'; 36import './DownloadLink-D6EYxQxh.js'; 37import './Edit-5wNBI2yr.js'; 38import './Undo-4MCSCpCy.js'; 39import './Image-XuMqTTwB.js'; 40import './Video-e9Pn2mbW.js'; 41import './actions-CgRQ2lHA.js'; 42import './index-DnoGeqVF.js'; 43import './html-Bwif0JPw.js'; 44import './File-BiXBtg1a.js'; 45import './props-o1aFOJaB.js'; 46import './DropdownArrow-3lFHYtTD.js'; 47import './Square-kMgNk9Wy.js'; 48import './Spinner-CGjvf4Sm.js'; 49import './StreamingBar-YIqBWk77.js'; 50 51var root_2 = from_html(`<div><!></div> <!> <!>`, 1); 52var root_1 = from_html(`<!> <!>`, 1); 53 54function Index($$anchor, $$props) { 55 push($$props, true); 56 57 let upload_promise = state(void 0); 58 59 class GalleryGradio extends Gradio { 60 async get_data() { 61 if (get(upload_promise)) { 62 await get(upload_promise); 63 await tick(); 64 } 65 66 const data = await super.get_data(); 67 68 return data; 69 } 70 } 71 72 const props = rest_props($$props, ['$$slots', '$$events', '$$legacy']); 73 const gradio = new GalleryGradio(props, { selected_index: null, file_types: ["image", "video"] }); 74 let fullscreen = state(false); 75 76 function handle_delete(event) { 77 if (!gradio.props.value) return; 78 79 const { index } = event.detail; 80 81 gradio.dispatch("delete", event.detail); 82 gradio.props.value = gradio.props.value.filter((_, i) => i !== index); 83 gradio.dispatch("change", gradio.props.value); 84 } 85 86 async function process_upload_files(files) { 87 const processed_files = await Promise.all(files.map(async (x) => { 88 if (x.path?.toLowerCase().endsWith(".svg") && x.url) { 89 const response = await fetch(x.url); 90 const svgContent = await response.text(); 91 92 return { 93 ...x, 94 url: `data:image/svg+xml,${encodeURIComponent(svgContent)}` 95 }; 96 } 97 98 return x; 99 })); 100 101 return processed_files.map((x) => x.mime_type?.includes("video") 102 ? { video: x, caption: null } 103 : { image: x, caption: null }); 104 } 105 106 let upload_input; 107 let active_source = state(proxy(gradio.props.sources ? gradio.props.sources[0] : "upload")); 108 let no_value = user_derived(() => gradio.props.value === null ? true : gradio.props.value.length === 0); 109 110 let sources = user_derived(() => { 111 if (gradio.props.file_types?.includes("video") && gradio.props.sources.includes("webcam")) { 112 return gradio.props.sources.concat(["webcam-video"]); 113 } else { 114 return gradio.props.sources; 115 } 116 }); 117 118 async function paste_clipboard() { 119 navigator.clipboard.read().then(async (items) => { 120 let file = null; 121 122 for (let i = 0; i < items.length; i++) { 123 const type = items[i].types.find((t) => (gradio.props.file_types || ["image"]).some((ft) => t.startsWith(ft + "/"))); 124 125 if (type) { 126 const blob = await items[i].getType(type); 127 128 file = new File([blob], `clipboard.${type.replace("image/", "")}`); 129 130 break; 131 } 132 } 133 134 if (file) { 135 const f = await handle_save(file, (f) => gradio.shared.client.upload(f, gradio.shared.root), "clipboard_upload"); 136 const processed_files = await process_upload_files(f); 137 138 gradio.props.value?.push(...processed_files); 139 gradio.dispatch("change", gradio.props.value); 140 set(active_source, null); 141 } else {
142 gradio.dispatch("warning", "No image or video found in clipboard"); 143 } 144 }); 145 } 146 147 async function handle_select_source(source) { 148 switch (source) { 149 case "clipboard": 150 await paste_clipboard(); 151 break; 152 } 153 } 154 155 async function onsource_change(source) { 156 await tick(); 157 158 if (source === "clipboard") { 159 await paste_clipboard(); 160 } else { 161 set(active_source, source, true); 162 set(no_value, true); 163 } 164 } 165 166 { 167 let $0 = user_derived(() => gradio.props.height || undefined); 168 169 Block($$anchor, { 170 get visible() { 171 return gradio.shared.visible; 172 }, 173 variant: 'solid', 174 padding: false, 175 get elem_id() { 176 return gradio.shared.elem_id; 177 }, 178 179 get elem_classes() { 180 return gradio.shared.elem_classes; 181 }, 182 183 get container() { 184 return gradio.shared.container; 185 }, 186 187 get scale() { 188 return gradio.shared.scale; 189 }, 190 191 get min_width() { 192 return gradio.shared.min_width; 193 }, 194 allow_overflow: false, 195 get height() { 196 return get($0); 197 }, 198 199 get fullscreen() { 200 return get(fullscreen); 201 }, 202 203 set fullscreen($$value) { 204 set(fullscreen, $$value, true); 205 }, 206 207 children: ($$anchor, $$slotProps) => { 208 var fragment_1 = root_1(); 209 var node = first_child(fragment_1); 210 211 Static(node, spread_props( 212 { 213 get autoscroll() { 214 return gradio.shared.autoscroll; 215 }, 216 217 get i18n() { 218 return gradio.i18n; 219 } 220 }, 221 () => gradio.shared.loading_status, 222 { 223 on_clear_status: () => gradio.dispatch("clear_status", gradio.shared.loading_status) 224 } 225 )); 226
227 var node_1 = sibling(node, 2); 228 229 { 230 var consequent_3 = ($$anchor) => { 231 var fragment_2 = root_2(); 232 var div = first_child(fragment_2); 233 var node_2 = child(div); 234 235 bind_this( 236 FileUpload(node_2, { 237 value: null, 238 get root() { 239 return gradio.shared.root; 240 }, 241 242 get label() { 243 return gradio.shared.label; 244 }, 245 246 get max_file_size() { 247 return gradio.shared.max_file_size; 248 }, 249 file_count: "multiple", 250 get file_types() { 251 return gradio.props.file_types; 252 }, 253 254 get i18n() { 255 return gradio.i18n; 256 }, 257 upload: (...args) => gradio.shared.client.upload(...args), 258 stream_handler: (...args) => gradio.shared.client.stream(...args), 259 onupload: async (e) => { 260 const files = Array.isArray(e) ? e : [e]; 261 262 gradio.props.value = await process_upload_files(files); 263 set(active_source, null); 264 gradio.dispatch("upload", gradio.props.value); 265 gradio.dispatch("change", gradio.props.value); 266 }, 267 268 onerror: ({ detail }) => { 269 gradio.shared.loading_status = gradio.shared.loading_status || {}; 270 gradio.shared.loading_status.status = "error"; 271 gradio.dispatch("error", detail); 272 }, 273 274 get upload_promise() { 275 return get(upload_promise); 276 }, 277 278 set upload_promise($$value) { 279 set(upload_promise, $$value, true); 280 }, 281 282 children: ($$anchor, $$slotProps) => { 283 UploadText($$anchor, { 284 get i18n() { 285 return gradio.i18n; 286 }, 287 type: 'gallery' 288 }); 289 }, 290 $$slots: { default: true } 291 }), 292 ($$value) => upload_input = $$value, 293 () => upload_input 294 ); 295 296 reset(div); 297 298 var node_3 = sibling(div, 2); 299 300 { 301 var consequent = ($$anchor) => { 302 Webcam($$anchor, { 303 get root() { 304 return gradio.shared.root; 305 }, 306 value: null, 307 mirror_webcam: true, 308 streaming: false, 309 mode: 'image', 310 include_audio: false, 311 get i18n() { 312 return gradio.i18n; 313 }, 314 upload: (...args) => gradio.shared.client.upload(...args), 315 $$events: { 316 capture: async (e) => { 317 const f = await handle_save(e.detail, (f) => gradio.shared.client.upload(f, gradio.shared.root), "webcam_upload"); 318 const processed_files = await process_upload_files(f); 319 320 gradio.props.value?.push(...processed_files); 321 set(active_source, null); 322 gradio.dispatch("change", gradio.props.value); 323 }, 324 325 error($$arg) { 326 bubble_event.call(this, $$props, $$arg); 327 }, 328 329 drag($$arg) { 330 bubble_event.call(this, $$props, $$arg); 331 }, 332 333 close_stream($$arg) { 334 bubble_event.call(this, $$props, $$arg); 335 } 336 } 337 }); 338 }; 339 340 var alternate = ($$anchor) => { 341 var fragment_5 = comment(); 342 var node_4 = first_child(fragment_5); 343 344 { 345 var consequent_1 = ($$anchor) => { 346 Webcam($$anchor, { 347 get root() { 348 return gradio.shared.root; 349 }, 350 value: null, 351 mirror_webcam: true, 352 streaming: false, 353 mode: 'video', 354 include_audio: false, 355 get i18n() { 356 return gradio.i18n; 357 }, 358 upload: (...args) => gradio.shared.client.upload(...args), 359 $$events: { 360 capture: async (e) => { 361 const f = { ...e.detail }; 362 363 f.mime_type = "video/webm"; 364 365 const processed_files = await process_upload_files([f]); 366 367 gradio.props.value?.push(...processed_files); 368 set(active_source, null); 369 gradio.dispatch("change", gradio.props.value); 370 }, 371 372 error($$arg) { 373 bubble_event.call(this, $$props, $$arg); 374 }, 375 376 drag($$arg) { 377 bubble_event.call(this, $$props, $$arg); 378 }, 379 380 close_stream($$arg) { 381 bubble_event.call(this, $$props, $$arg); 382 } 383 } 384 }); 385 }; 386 387 if_block( 388 node_4, 389 ($$render) => { 390 if (get(active_source) === "webcam-video") $$render(consequent_1); 391 }, 392 true 393 ); 394 } 395 396 append($$anchor, fragment_5); 397 }; 398 399 if_block(node_3, ($$render) => { 400 if (get(active_source) === "webcam") $$render(consequent); else $$render(alternate, false); 401 }); 402 } 403 404 var node_5 = sibling(node_3, 2); 405 406 { 407 var consequent_2 = ($$anchor) => { 408 SelectSource($$anchor, { 409 get sources() { 410 return get(sources); 411 }, 412 handle_clear: () => gradio.dispatch("clear"), 413 handle_select: handle_select_source, 414 get active_source() { 415 return get(active_source); 416 }, 417 418 set active_source($$value) { 419 set(active_source, $$value, true); 420 } 421 }); 422 }; 423 424 if_block(node_5, ($$render) => { 425 if (get(sources).length > 1 || get(sources).includes("clipboard")) $$render(consequent_2); 426 }); 427 } 428 429 template_effect(($0) => set_class(div, 1, $0, 'svelte-vrqwbn'), [ 430 () => clsx(!gradio.props.value || get(active_source) && get(active_source).includes("webcam") ? "hidden-upload-input" : "upload-wrapper") 431 ]); 432 433 append($$anchor, fragment_2); 434 }; 435 436 var alternate_1 = ($$anchor) => { 437 { 438 let $0 = user_derived(() => gradio.props.buttons.some((btn) => typeof btn === "string" && btn === "share")); 439 let $1 = user_derived(() => gradio.props.buttons.some((btn) => typeof btn === "string" && btn === "download")); 440 let $2 = user_derived(() => gradio.props.buttons.some((btn) => typeof btn === "string" && btn === "fullscreen")); 441 442 Gallery($$anchor, { 443 onchange: () => gradio.dispatch("change"), 444 onclear: () => gradio.dispatch("change"), 445 onselect: (e) => gradio.dispatch("select", e), 446 onshare: (e) => gradio.dispatch("share", e.detail), 447 onerror: (e) => gradio.dispatch("error", e.detail), 448 onpreview_open: () => { 449 gradio.dispatch("preview_open"); 450 }, 451 onpreview_close: () => gradio.dispatch("preview_close"), 452 onfullscreen: ({ detail }) => { 453 set(fullscreen, detail, true); 454 }, 455 ondelete: handle_delete, 456 onupload: async (e) => { 457 const files = Array.isArray(e) ? e : [e]; 458 const new_value = await process_upload_files(files); 459 460 gradio.props.value = gradio.props.value ? [...gradio.props.value, ...new_value] : new_value; 461 gradio.dispatch("upload", new_value); 462 gradio.dispatch("change", gradio.props.value); 463 }, 464 465 get sources() { 466 return get(sources); 467 }, 468 onsource_change, 469 get label() { 470 return gradio.shared.label; 471 }, 472 473 get show_label() { 474 return gradio.shared.show_label; 475 }, 476 477 get columns() { 478 return gradio.props.columns; 479 }, 480 481 get rows() { 482 return gradio.props.rows; 483 }, 484 485 get height() { 486 return gradio.props.height; 487 }, 488 489 get preview() { 490 return gradio.props.preview; 491 }, 492 493 get object_fit() { 494 return gradio.props.object_fit; 495 }, 496 497 get interactive() { 498 return gradio.shared.interactive; 499 }, 500 501 get allow_preview() { 502 return gradio.props.allow_preview; 503 }, 504 505 get show_share_button() { 506 return get($0); 507 }, 508 509 get show_download_button() { 510 return get($1); 511 }, 512 513 get fit_columns() { 514 return gradio.props.fit_columns; 515 }, 516 517 get i18n() { 518 return gradio.i18n; 519 }, 520 _fetch: (...args) => gradio.shared.client.fetch(...args), 521 get show_fullscreen_button() { 522 return get($2); 523 }, 524 525 get buttons() { 526 return gradio.props.buttons; 527 }, 528 529 on_custom_button_click: (id) => { 530 gradio.dispatch("custom_button_click", { id }); 531 }, 532 533 get fullscreen() { 534 return get(fullscreen); 535 }, 536 537 get root() { 538 return gradio.shared.root; 539 }, 540 541 get file_types() { 542 return gradio.props.file_types; 543 }, 544 545 get max_file_size() { 546 return gradio.shared.max_file_size; 547 }, 548 upload: (...args) => gradio.shared.client.upload(...args), 549 stream_handler: (...args) => gradio.shared.client.stream(...args), 550 get selected_index() { 551 return gradio.props.selected_index; 552 }, 553 554 set selected_index($$value) { 555 gradio.props.selected_index = $$value; 556 }, 557 558 get value() { 559 return gradio.props.value; 560 }, 561 562 set value($$value) { 563 gradio.props.value = $$value; 564 } 565 }); 566 } 567 }; 568 569 if_block(node_1, ($$render) => { 570 if (gradio.shared.interactive && get(no_value)) $$render(consequent_3); else $$render(alternate_1, false); 571 }); 572 } 573 574 append($$anchor, fragment_1); 575 }, 576 $$slots: { default: true } 577 }); 578 } 579 580 pop(); 581} 582 583export { Gallery as BaseGallery, Index as default }; 584//# sourceMappingURL=Index-C8iEj0i6.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.