1import { p as prop, i as if_block, r as rest_props, g as spread_props } from './i18n-CGlVUOvE.js'; 2import { M as push, ad as user_effect, Z as get, N as first_child, $ as set, a as append, O as pop, a2 as user_derived, ab as state, S as sibling, R as from_html, Q as child, T as reset, a3 as comment, t as template_effect, X as set_text, ac as proxy, I as tick } from './index-Bq2njFOY.js'; 3import { k as key } from './key-CQEYzg1f.js'; 4import { s as snippet } from './snippet-BG7qkY_1.js'; 5import { U as Upload } from './Upload-xR3P-2U5.js'; 6import { V as Video, S as SelectSource } from './ScrollFade.svelte_svelte_type_style_lang-D0JPkGar.js'; 7import './MarkdownCode.svelte_svelte_type_style_lang-B29zDiob.js'; 8import { B as BlockLabel } from './BlockLabel-VpI11pHf.js'; 9/* empty css */ 10/* empty css */ 11import { W as Webcam } from './Webcam-CIJ5MvIX.js'; 12/* empty css */ 13import './StreamingBar.svelte_svelte_type_style_lang-DWGn5tT_.js'; 14/* empty css */ 15import { p as prettyBytes } from './Video-e9Pn2mbW.js'; 16export { l as loaded, a as playable } from './Video-e9Pn2mbW.js'; 17import { P as Player, V as VideoPreview } from './VideoPreview-D1Zp6agR.js'; 18export { default as BaseExample } from './Example-CwC21_Sq.js'; 19import { B as Block } from './Block-DNK-JdLJ.js'; 20import { G as Gradio } from './utils.svelte-Bi9ASwv9.js'; 21import { U as UploadText } from './UploadText-C6bbM_PO.js'; 22import { S as Static } from './index-1GCmrSlD.js'; 23import './actions-CgRQ2lHA.js'; 24import './prism-python-NrKIQnfs.js'; 25import './props-o1aFOJaB.js'; 26import './DropdownArrow-3lFHYtTD.js'; 27import './Square-kMgNk9Wy.js'; 28import './Spinner-CGjvf4Sm.js'; 29import './StreamingBar-YIqBWk77.js'; 30import './html-Bwif0JPw.js'; 31import './DownloadLink-D6EYxQxh.js'; 32import './Empty-BrRNpJ3n.js'; 33import './ShareButton-CORLYhd9.js'; 34import './Download-D5ZNT7uE.js'; 35import './IconButtonWrapper-DAsvkfJg.js'; 36import './Maximize-2N5airbC.js'; 37import './VolumeLevels-DLuAAZ7X.js'; 38import './Play-CGGxKNeS.js'; 39import './Undo-4MCSCpCy.js'; 40import './ModifyUpload-BzhUWnkZ.js'; 41import './Clear-C8Tfa7QP.js'; 42import './Edit-5wNBI2yr.js'; 43 44var root_2$1 = from_html(`<div class="upload-container svelte-ey25pz"><!></div>`); 45var root_12 = from_html(`<div class="file-name svelte-ey25pz"> </div> <div class="file-size svelte-ey25pz"> </div>`, 1); 46var root_1 = from_html(`<!> <div data-testid="video" class="video-container svelte-ey25pz"><!> <!></div>`, 1); 47 48function InteractiveVideo($$anchor, $$props) { 49 push($$props, true); 50 51 let value = prop($$props, 'value', 15, null), 52 subtitle = prop($$props, 'subtitle', 3, null), 53 sources = prop($$props, 'sources', 19, () => ["webcam", "upload"]), 54 label = prop($$props, 'label', 3, undefined), 55 show_download_button = prop($$props, 'show_download_button', 3, false), 56 show_label = prop($$props, 'show_label', 3, true), 57 initial_active_source = prop($$props, 'active_source', 3, "webcam"), 58 handle_reset_value = prop($$props, 'handle_reset_value', 3, () => {}), 59 max_file_size = prop($$props, 'max_file_size', 3, null), 60 uploading = prop($$props, 'uploading', 15), 61 upload_promise = prop($$props, 'upload_promise', 15), 62 playback_position = prop($$props, 'playback_position', 15); 63 prop($$props, 'buttons', 3, null); 64 prop($$props, 'on_custom_button_click', 3, null); 65 66 let has_change_history = state(false); 67 68 let active_source = user_derived(() => { 69 return initial_active_source() ?? "webcam"; 70 }); 71 72 function handle_load(detail) { 73 value(detail); 74 $$props.onchange?.(detail); 75 76 if (detail) { 77 $$props.onupload?.(detail); 78 } 79 } 80 81 function handle_clear() { 82 value(null); 83 $$props.onchange?.(null); 84 $$props.onclear?.(); 85 } 86 87 function handle_change(video) { 88 set(has_change_history, true); 89 $$props.onchange?.(video); 90 } 91 92 function handle_capture({ detail }) { 93 $$props.onchange?.(detail); 94 } 95 96 let dragging = state(false); 97 98 user_effect(() => { 99 $$props.ondrag?.(get(dragging)); 100 }); 101 102 var fragment = root_1(); 103 var node = first_child(fragment); 104 105 { 106 let $0 = user_derived(() => label() || "Video"); 107 108 BlockLabel(node, { 109 get show_label() { 110 return show_label(); 111 }, 112 113 get Icon() { 114 return Video; 115 }, 116 117 get label() { 118 return get($0); 119 } 120 }); 121 } 122 123 var div = sibling(node, 2);
124 var node_1 = child(div); 125 126 { 127 var consequent_3 = ($$anchor) => { 128 var div_1 = root_2$1(); 129 var node_2 = child(div_1); 130 131 { 132 var consequent_1 = ($$anchor) => { 133 { 134 let $0 = user_derived(() => $$props.i18n("video.drop_to_upload")); 135 136 Upload($$anchor, { 137 filetype: 'video/x-m4v,video/*', 138 onload: handle_load, 139 get max_file_size() { 140 return max_file_size(); 141 }, 142 onerror: (detail) => $$props.onerror?.(detail), 143 get root() { 144 return $$props.root; 145 }, 146 147 get upload() { 148 return $$props.upload; 149 }, 150 151 get stream_handler() { 152 return $$props.stream_handler; 153 }, 154 155 get aria_label() { 156 return get($0); 157 }, 158 159 get upload_promise() { 160 return upload_promise(); 161 }, 162 163 set upload_promise($$value) { 164 upload_promise($$value); 165 }, 166 167 get dragging() { 168 return get(dragging); 169 }, 170 171 set dragging($$value) { 172 set(dragging, $$value, true); 173 }, 174 175 get uploading() { 176 return uploading(); 177 }, 178 179 set uploading($$value) { 180 uploading($$value); 181 }, 182 183 children: ($$anchor, $$slotProps) => { 184 var fragment_2 = comment(); 185 var node_3 = first_child(fragment_2); 186 187 { 188 var consequent = ($$anchor) => { 189 var fragment_3 = comment(); 190 var node_4 = first_child(fragment_3); 191 192 snippet(node_4, () => $$props.children); 193 append($$anchor, fragment_3); 194 }; 195 196 if_block(node_3, ($$render) => { 197 if ($$props.children) $$render(consequent); 198 }); 199 } 200 201 append($$anchor, fragment_2); 202 }, 203 $$slots: { default: true } 204 }); 205 } 206 }; 207 208 var alternate = ($$anchor) => { 209 var fragment_4 = comment(); 210 var node_5 = first_child(fragment_4); 211 212 { 213 var consequent_2 = ($$anchor) => { 214 Webcam($$anchor, { 215 get root() { 216 return $$props.root; 217 }, 218 219 get mirror_webcam() { 220 return $$props.webcam_options.mirror; 221 }, 222 223 get webcam_constraints() { 224 return $$props.webcam_options.constraints; 225 }, 226 227 get include_audio() { 228 return $$props.include_audio; 229 }, 230 mode: 'video', 231 get i18n() { 232 return $$props.i18n; 233 }, 234 235 get upload() { 236 return $$props.upload; 237 }, 238 stream_every: 1, 239 $$events: { 240 error: ({ detail }) => $$props.onerror?.(detail), 241 capture: handle_capture, 242 start_recording: () => $$props.onstart_recording?.(), 243 stop_recording: () => $$props.onstop_recording?.() 244 } 245 }); 246 }; 247 248 if_block( 249 node_5, 250 ($$render) => { 251 if (get(active_source) === "webcam") $$render(consequent_2); 252 }, 253 true 254 ); 255 } 256 257 append($$anchor, fragment_4); 258 }; 259 260 if_block(node_2, ($$render) => { 261 if (get(active_source) === "upload") $$render(consequent_1); else $$render(alternate, false); 262 }); 263 } 264 265 reset(div_1); 266 append($$anchor, div_1); 267 }; 268 269 var alternate_2 = ($$anchor) => { 270 var fragment_6 = comment(); 271 var node_6 = first_child(fragment_6); 272 273 { 274 var consequent_4 = ($$anchor) => { 275 var fragment_7 = comment(); 276 var node_7 = first_child(fragment_7); 277 278 key(node_7, () => value()?.url, ($$anchor) => { 279 { 280 let $0 = user_derived(() => subtitle()?.url); 281 let $1 = user_derived(() => $$props.webcam_options.mirror && get(active_source) === "webcam"); 282 283 Player($$anchor, { 284 get upload() { 285 return $$props.upload; 286 }, 287 288 get root() { 289 return $$props.root; 290 }, 291 interactive: true, 292 get autoplay() { 293 return $$props.autoplay; 294 }, 295 296 get src() { 297 return value().url; 298 }, 299 300 get subtitle() { 301 return get($0); 302 }, 303 is_stream: false, 304 onplay: () => $$props.onplay?.(), 305 onpause: () => $$props.onpause?.(), 306 onstop: () => $$props.onstop?.(), 307 onend: () => $$props.onend?.(), 308 onerror: (error) => $$props.onerror?.(error), 309 get mirror() { 310 return get($1); 311 }, 312 313 get label() { 314 return label(); 315 }, 316 handle_change, 317 get handle_reset_value() { 318 return handle_reset_value(); 319 }, 320 321 get loop() { 322 return $$props.loop; 323 }, 324 325 get value() { 326 return value(); 327 }, 328 329 get i18n() { 330 return $$props.i18n; 331 }, 332 333 get show_download_button() { 334 return show_download_button(); 335 }, 336 handle_clear, 337 get has_change_history() { 338 return get(has_change_history); 339 }, 340 341 get playback_position() { 342 return playback_position(); 343 }, 344 345 set playback_position($$value) { 346 playback_position($$value); 347 } 348 }); 349 } 350 }); 351 352 append($$anchor, fragment_7); 353 }; 354 355 var alternate_1 = ($$anchor) => { 356 var fragment_9 = comment(); 357 var node_8 = first_child(fragment_9); 358 359 { 360 var consequent_5 = ($$anchor) => { 361 var fragment_10 = root_12(); 362 var div_2 = first_child(fragment_10); 363 var text = child(div_2, true); 364 365 reset(div_2); 366 367 var div_3 = sibling(div_2, 2); 368 var text_1 = child(div_3, true); 369 370 reset(div_3); 371 372 template_effect( 373 ($0) => {
374 set_text(text, value().orig_name || value().url); 375 set_text(text_1, $0); 376 }, 377 [() => prettyBytes(value().size)] 378 ); 379 380 append($$anchor, fragment_10); 381 }; 382 383 if_block( 384 node_8, 385 ($$render) => { 386 if (value().size) $$render(consequent_5); 387 }, 388 true 389 ); 390 } 391 392 append($$anchor, fragment_9); 393 }; 394 395 if_block( 396 node_6, 397 ($$render) => { 398 if (value()?.url) $$render(consequent_4); else $$render(alternate_1, false); 399 }, 400 true 401 ); 402 } 403 404 append($$anchor, fragment_6); 405 }; 406 407 if_block(node_1, ($$render) => { 408 if (value() === null || value()?.url === undefined) $$render(consequent_3); else $$render(alternate_2, false); 409 }); 410 } 411 412 var node_9 = sibling(node_1, 2); 413 414 SelectSource(node_9, { 415 get sources() { 416 return sources(); 417 }, 418 handle_clear, 419 get active_source() { 420 return get(active_source); 421 }, 422 423 set active_source($$value) { 424 set(active_source, $$value); 425 } 426 }); 427 428 reset(div); 429 append($$anchor, fragment); 430 pop(); 431} 432 433var root_2 = from_html(`<!> <!>`, 1); 434var root_4 = from_html(`<!> <!>`, 1); 435 436function Index($$anchor, $$props) { 437 push($$props, true); 438 439 const props = rest_props($$props, ['$$slots', '$$events', '$$legacy']); 440 let upload_promise = state(void 0); 441 442 class VideoGradio extends Gradio { 443 async get_data() { 444 if (get(upload_promise)) { 445 await get(upload_promise); 446 await tick(); 447 } 448 449 const data = await super.get_data(); 450 451 return data; 452 } 453 } 454 455 const gradio = new VideoGradio(props); 456 let old_value = state(proxy(gradio.props.value)); 457 let uploading = state(false); 458 let dragging = state(false); 459 let active_source = user_derived(() => gradio.props.sources ? gradio.props.sources[0] : undefined); 460 let initial_value = gradio.props.value; 461 462 user_effect(() => { 463 if (get(old_value) != gradio.props.value) { 464 set(old_value, gradio.props.value, true); 465 gradio.dispatch("change"); 466 } 467 }); 468 469 const handle_reset_value = () => { 470 if (initial_value === null || gradio.props.value === initial_value) { 471 return; 472 } 473 474 gradio.props.value = initial_value; 475 }; 476 477 function handle_change(detail) { 478 if (detail != null) { 479 gradio.props.value = detail; 480 } else { 481 gradio.props.value = null; 482 } 483 } 484 485 function handle_error(detail) { 486 const [level, status] = detail.includes("Invalid file type") ? ["warning", "complete"] : ["error", "error"]; 487 488 gradio.shared.loading_status.status = status; 489 gradio.shared.loading_status.message = detail; 490 gradio.dispatch(level, detail); 491 } 492 493 var fragment = comment(); 494 var node = first_child(fragment); 495 496 { 497 var consequent = ($$anchor) => { 498 { 499 let $0 = user_derived(() => gradio.props.value === null && get(active_source) === "upload" ? "dashed" : "solid"); 500 let $1 = user_derived(() => get(dragging) ? "focus" : "base"); 501 let $2 = user_derived(() => gradio.props.height || undefined); 502 503 Block($$anchor, { 504 get visible() { 505 return gradio.shared.visible; 506 }, 507 508 get variant() { 509 return get($0); 510 }, 511 512 get border_mode() { 513 return get($1); 514 }, 515 padding: false, 516 get elem_id() { 517 return gradio.shared.elem_id; 518 }, 519 520 get elem_classes() { 521 return gradio.shared.elem_classes; 522 }, 523 524 get height() { 525 return get($2); 526 }, 527 528 get width() { 529 return gradio.props.width; 530 }, 531 532 get container() { 533 return gradio.shared.container; 534 }, 535 536 get scale() { 537 return gradio.shared.scale; 538 }, 539 540 get min_width() { 541 return gradio.shared.min_width; 542 }, 543 allow_overflow: false, 544 children: ($$anchor, $$slotProps) => { 545 var fragment_2 = root_2();
546 var node_1 = first_child(fragment_2); 547 548 Static(node_1, spread_props( 549 { 550 get autoscroll() { 551 return gradio.shared.autoscroll; 552 }, 553 554 get i18n() { 555 return gradio.i18n; 556 } 557 }, 558 () => gradio.shared.loading_status, 559 { 560 on_clear_status: () => gradio.dispatch("clear_status", gradio.shared.loading_status) 561 } 562 )); 563 564 var node_2 = sibling(node_1, 2); 565 566 { 567 let $0 = user_derived(() => gradio.props.buttons ?? ["download", "share"]); 568 569 VideoPreview(node_2, { 570 get value() { 571 return gradio.props.value; 572 }, 573 574 get subtitle() { 575 return gradio.props.subtitles; 576 }, 577 578 get label() { 579 return gradio.shared.label; 580 }, 581 582 get show_label() { 583 return gradio.shared.show_label; 584 }, 585 586 get autoplay() { 587 return gradio.props.autoplay; 588 }, 589 590 get loop() { 591 return gradio.props.loop; 592 }, 593 594 get buttons() { 595 return get($0); 596 }, 597 598 on_custom_button_click: (id) => { 599 gradio.dispatch("custom_button_click", { id }); 600 }, 601 onplay: () => gradio.dispatch("play"), 602 onpause: () => gradio.dispatch("pause"), 603 onstop: () => gradio.dispatch("stop"), 604 onend: () => gradio.dispatch("end"), 605 onshare: (detail) => gradio.dispatch("share", detail), 606 onerror: (detail) => gradio.dispatch("error", detail), 607 get i18n() { 608 return gradio.i18n; 609 }, 610 upload: (...args) => gradio.shared.client.upload(...args), 611 get playback_position() { 612 return gradio.props.playback_position; 613 }, 614 615 set playback_position($$value) { 616 gradio.props.playback_position = $$value; 617 } 618 }); 619 } 620 621 append($$anchor, fragment_2); 622 }, 623 $$slots: { default: true } 624 }); 625 } 626 }; 627 628 var alternate = ($$anchor) => { 629 { 630 let $0 = user_derived(() => gradio.props.value === null && get(active_source) === "upload" ? "dashed" : "solid"); 631 let $1 = user_derived(() => get(dragging) ? "focus" : "base"); 632 let $2 = user_derived(() => gradio.props.height || undefined); 633 634 Block($$anchor, { 635 get visible() { 636 return gradio.shared.visible; 637 }, 638 639 get variant() { 640 return get($0); 641 }, 642 643 get border_mode() { 644 return get($1); 645 }, 646 padding: false, 647 get elem_id() { 648 return gradio.shared.elem_id; 649 }, 650 651 get elem_classes() { 652 return gradio.shared.elem_classes; 653 }, 654 655 get height() { 656 return get($2); 657 }, 658 659 get width() { 660 return gradio.props.width; 661 }, 662 663 get container() { 664 return gradio.shared.container; 665 }, 666 667 get scale() { 668 return gradio.shared.scale; 669 }, 670 671 get min_width() { 672 return gradio.shared.min_width; 673 }, 674 allow_overflow: false, 675 children: ($$anchor, $$slotProps) => { 676 var fragment_4 = root_4(); 677 var node_3 = first_child(fragment_4); 678 679 Static(node_3, spread_props( 680 { 681 get autoscroll() { 682 return gradio.shared.autoscroll; 683 }, 684 685 get i18n() { 686 return gradio.i18n; 687 } 688 }, 689 () => gradio.shared.loading_status, 690 { 691 on_clear_status: () => gradio.dispatch("clear_status", gradio.shared.loading_status) 692 } 693 )); 694 695 var node_4 = sibling(node_3, 2); 696 697 { 698 let $0 = user_derived(() => gradio.props.buttons ?? ["download", "share"]); 699 700 InteractiveVideo(node_4, { 701 get value() { 702 return gradio.props.value; 703 }, 704 705 get subtitle() { 706 return gradio.props.subtitles; 707 }, 708 onchange: handle_change, 709 ondrag: (detail) => set(dragging, detail, true), 710 onerror: handle_error, 711 get label() { 712 return gradio.shared.label; 713 }, 714 715 get show_label() { 716 return gradio.shared.show_label; 717 }, 718 719 get buttons() { 720 return get($0); 721 }, 722 723 on_custom_button_click: (id) => { 724 gradio.dispatch("custom_button_click", { id }); 725 }, 726 727 get sources() { 728 return gradio.props.sources; 729 }, 730 731 get active_source() { 732 return get(active_source); 733 }, 734 735 get webcam_options() { 736 return gradio.props.webcam_options; 737 }, 738 739 get include_audio() { 740 return gradio.props.include_audio; 741 }, 742 743 get autoplay() { 744 return gradio.props.autoplay; 745 }, 746 747 get root() { 748 return gradio.shared.root; 749 }, 750 751 get loop() { 752 return gradio.props.loop; 753 }, 754 handle_reset_value, 755 onclear: () => { 756 gradio.props.value = null; 757 gradio.dispatch("clear"); 758 gradio.dispatch("input"); 759 }, 760 onplay: () => gradio.dispatch("play"), 761 onpause: () => gradio.dispatch("pause"), 762 onupload: () => { 763 gradio.dispatch("upload"); 764 gradio.dispatch("input"); 765 }, 766 onstop: () => gradio.dispatch("stop"), 767 onend: () => gradio.dispatch("end"), 768 onstart_recording: () => gradio.dispatch("start_recording"), 769 onstop_recording: () => gradio.dispatch("stop_recording"), 770 get i18n() { 771 return gradio.i18n; 772 }, 773 774 get max_file_size() { 775 return gradio.shared.max_file_size; 776 }, 777 upload: (...args) => gradio.shared.client.upload(...args), 778 stream_handler: (...args) => gradio.shared.client.stream(...args), 779 get upload_promise() { 780 return get(upload_promise); 781 }, 782 783 set upload_promise($$value) { 784 set(upload_promise, $$value, true); 785 }, 786 787 get uploading() { 788 return get(uploading); 789 }, 790 791 set uploading($$value) { 792 set(uploading, $$value, true); 793 }, 794 795 get playback_position() { 796 return gradio.props.playback_position; 797 }, 798 799 set playback_position($$value) { 800 gradio.props.playback_position = $$value; 801 }, 802 803 children: ($$anchor, $$slotProps) => { 804 UploadText($$anchor, { 805 get i18n() { 806 return gradio.i18n; 807 }, 808 type: 'video' 809 }); 810 }, 811 $$slots: { default: true } 812 }); 813 } 814 815 append($$anchor, fragment_4); 816 }, 817 $$slots: { default: true } 818 }); 819 } 820 }; 821 822 if_block(node, ($$render) => { 823 if (!gradio.shared.interactive) $$render(consequent); else $$render(alternate, false); 824 }); 825 } 826 827 append($$anchor, fragment); 828 pop(); 829} 830 831export { InteractiveVideo as BaseInteractiveVideo, Player as BasePlayer, VideoPreview as BaseStaticVideo, Index as default, prettyBytes }; 832//# sourceMappingURL=index-VE26-3z-.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.