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