1<!DOCTYPE html> 2<html lang="en-US" itemscope itemtype="http://schema.org/WebPage"> 3 4<head> 5 6 <meta charset="utf-8"> 7 8<title> 9 10 Contact | MagicPods 11 12</title> 13 14 15<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=5"> 16 17<meta name="theme-name" content="bigspring-hugo" /> 18 19 20 21 22 23 24 25 26<link rel="shortcut icon" href="https://magicpods.app/images/favicon.png" type="image/x-icon"> 27<link rel="icon" href="https://magicpods.app/images/favicon.png" type="image/x-icon"> 28<link rel="icon" type="image/png" sizes="48x48" href="https://magicpods.app/images/favicon.png"> 29<link rel="icon" type="image/png" sizes="96x96" href="https://magicpods.app/images/favicon.png"> 30<link rel="apple-touch-icon" sizes="144x144" href="https://magicpods.app/images/favicon.png"> 31 32 33 34 35 36 37<link rel="manifest" href="/manifest.webmanifest" /> 38<meta 39 name="msapplication-TileColor" 40 content="#0360DD" /> 41<meta 42 name="theme-color" 43 content="#fff" /> 44 45 46 47 48 49 50 51 52 <base href="https://magicpods.app/contact/" /> 53 54 55 56 57 58 59 60 61 62 63<title>Contact</title> 64 65 66 67 68 69 70 71 72 73 74 75 76 77<link rel="canonical" href="https://magicpods.app/contact/" itemprop="url" /> 78 79 80 81 82 83 <link rel="alternate" hreflang="en" href="https://magicpods.app/contact/" /> 84 85 <link rel="alternate" hreflang="ru" href="https://magicpods.app/ru/contact/" /> 86 87 <link rel="alternate" hreflang="x-default" href="https://magicpods.app/contact/" /> 88 89 90 91 92 93 <meta 94 name="keywords" 95 content="Bluetooth, Battery, AirPods, Beats, Sony, Airoha, Galaxy Buds, noise cancellation, Windows, Steam Deck" /> 96 97 98 99 100<meta 101 name="description" 102 content="Contact and information about MagicPods developer Aleksandr Maslov. Support, collaboration, social media." /> 103 104 105 106 <meta name="author" content="Aleksandr Maslov" /> 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 <meta name="twitter:card" content="summary_large_image" /> 128 <meta name="twitter:image" content="https://magicpods.app/images/og-image.png" /> 129 <meta property="og:image" content="https://magicpods.app/images/og-image.png" /> 130 131 132 133 134 135<meta property="og:title" content="Contact" /> 136<meta property="og:description" content="Contact and information about MagicPods developer Aleksandr Maslov. Support, collaboration, social media." /> 137<meta property="og:type" content="website" /> 138<meta property="og:url" content="https://magicpods.app/contact/" /> 139 140 141<meta name="twitter:title" content="Contact" /> 142<meta name="twitter:description" content="Contact and information about MagicPods developer Aleksandr Maslov. Support, collaboration, social media." /> 143 144 145 <meta name="twitter:site" content="@steam3d" /> 146 147 148 <meta name="twitter:creator" content="@steam3d" /> 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176<meta http-equiv="x-dns-prefetch-control" content="on" /> 177<link rel="preconnect" href="//ajax.googleapis.com" /> 178<link 179 rel="preconnect" 180 href="https://fonts.gstatic.com" 181 crossorigin="anonymous" /> 182<link rel="preconnect" href="https://use.fontawesome.com" crossorigin /> 183<link rel="preconnect" href="//cdnjs.cloudflare.com" /> 184<link rel="preconnect" href="//www.googletagmanager.com" /> 185<link rel="preconnect" href="//www.google-analytics.com" /> 186<link rel="dns-prefetch" href="https://fonts.gstatic.com" /> 187<link rel="dns-prefetch" href="https://use.fontawesome.com" /> 188<link rel="dns-prefetch" href="//ajax.googleapis.com" /> 189<link rel="dns-prefetch" href="//cdnjs.cloudflare.com" /> 190<link rel="dns-prefetch" href="//www.googletagmanager.com" /> 191<link rel="dns-prefetch" href="//www.google-analytics.com" /> 192<link rel="dns-prefetch" href="//fonts.googleapis.com" /> 193<link rel="dns-prefetch" href="//connect.facebook.net" /> 194<link rel="dns-prefetch" href="//platform.linkedin.com" /> 195<link rel="dns-prefetch" href="//platform.twitter.com" /> 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228<link rel="stylesheet" href="/css/style.css" /> 229 230 231 232</head> 233 234<body> 235 236 237 238 239 240 241 242 243 244 245 246<header class="navigation"> 247 <div class="container"> 248 249 <nav class="navbar navbar-expand-lg navbar-light"> 250 251 <a class="navbar-brand" href="/"> 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 <img 280 fetchpriority="high" 281 decoding="async" 282 src="https://magicpods.app/images/logo.png" 283 alt="MagicPods" 284 class="img img-light" 285 height="auto" 286 width="156" /> 287 <img 288 fetchpriority="high" 289 decoding="async" 290 src="https://magicpods.app/images/logo-w.png" 291 alt="MagicPods" 292 class="img img-dark" 293 height="auto" 294 width="156" /> 295 296 297 298 299 </a> 300 301 <div class="d-flex align-items-center"> 302 303 304 <select class="me-3 border-0 d-inline-block d-lg-none" onchange="location = this.value;"> 305 306 307 308 309 310 311 312 313 <option id="en" value="/contact/" selected>EN 314 </option> 315 316 317 318 319 320 321 322 323 324 325 326 327 328 <option id="ru" value="/ru/contact/">RU</option> 329 330 331 332 333 </select> 334 335 336 <button aria-label="navbar toggler" class="navbar-toggler border-0 h4 mb-0" type="button" data-bs-toggle="collapse" aria-expanded="false" data-bs-target="#navigation"> 337 <i class="fas fa-bars"></i> 338 <i class="fa-solid fa-xmark"></i> 339 </button> 340 341 342 </div> 343 344 <div class="collapse navbar-collapse text-center" id="navigation"> 345 <ul class="navbar-nav mx-auto"> 346 347 348 349 350 351 352 353 <li class="nav-item "> 354 <a class="nav-link" 355 href="/buy">Purchase</a> 356 </li> 357 358 359 360 361 362 363 <li class="nav-item "> 364 <a class="nav-link" target="_blank" rel="noopener" 365 href="https://help.magicpods.app">Help</a> 366 </li> 367 368 369 370 371 372 373 <li class="nav-item dropdown "> 374 <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 375 More 376 </a> 377 <ul class="dropdown-menu"> 378 379 380 381 <li> 382 <a class="dropdown-item " target="_blank" rel="noopener" 383 href="https://weblate.magicpods.app/engage/magicpods-windows/">Translate</a> 384 </li> 385 386 387 388 <li> 389 <a class="dropdown-item " 390 href="/magicaap">MagicAAP driver</a> 391 </li> 392 393 394 395 <li> 396 <a class="dropdown-item " 397 href="/headphones">Supported headphones</a> 398 </li> 399 400 401 402 <li> 403 <a class="dropdown-item " 404 href="/add-headphones">Help add headphones</a> 405 </li> 406 407 408 409 <li> 410 <a class="dropdown-item " 411 href="/faq">FAQ</a> 412 </li> 413 414 415 416 <li> 417 <a class="dropdown-item " 418 href="/blog">Blog and news</a> 419 </li> 420 421 </ul> 422 </li> 423 424 425 426 427 428 429 <li class="nav-item dropdown dropdown-lg "> 430 <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 431 Apps 432 </a> 433 <ul class="dropdown-menu"> 434 435 436 437 <li> 438 <a class="dropdown-item " 439 href="/steamdeck"><img class='dropdown-icon' style='width:24px;height:24px;top:9px' src='/images/apps/magicpods.png'>MagicPods<small class='dropdown-subtitle'>Plugin for Steam Deck</small></a> 440 </li> 441 442 443 444 <li> 445 <a class="dropdown-item " target="_blank" rel="noopener" 446 href="https://github.com/steam3d/magicblackDecky"><img class='dropdown-icon' style='width:24px;height:24px;top:9px' src='/images/apps/magicblack.png'>MagicBlack<small class='dropdown-subtitle'>Simple plugin to turn off Steam Deck screen</small></a> 447 </li> 448 449 450 451 <li> 452 <a class="dropdown-item " target="_blank" rel="noopener" 453 href="https://apps.microsoft.com/store/detail/9N78GWBTW7L5"><img class='dropdown-icon' style='width:24px;height:24px;top:9px' src='/images/apps/magicselect.png'>MagicSelect<small class='dropdown-subtitle'>Select and copy text from any images</small></a> 454 </li> 455 456 457 458 <li> 459 <a class="dropdown-item " target="_blank" rel="noopener" 460 href="https://apps.microsoft.com/store/detail/9NGB2P0TSMBF"><img class='dropdown-icon' style='width:24px;height:24px;top:9px' src='/images/apps/magictranslate.png'>MagicTranslate<small class='dropdown-subtitle'>Translate text with one hotkey</small></a> 461 </li> 462 463 464 465 <li> 466 <a class="dropdown-item " target="_blank" rel="noopener" 467 href="https://play.google.com/store/apps/details?id=yet.another.dino"><img class='dropdown-icon' style='width:24px;height:24px;top:9px' src='/images/apps/yad.png'>Yet Another dino<small class='dropdown-subtitle'>Run, jump, and dodge in a dangerous adventure</small></a> 468 </li> 469 470 471 472 <li> 473 <a class="dropdown-item " target="_blank" rel="noopener" 474 href="https://play.google.com/store/apps/details?id=com.watchfacestudio.twistwatchface"><img class='dropdown-icon' style='width:24px;height:24px;top:9px' src='/images/apps/watchface.png'>Twist<small class='dropdown-subtitle'>Watchface for Android Wear</small></a> 475 </li> 476 477 478 479 <li> 480 <a class="dropdown-item " target="_blank" rel="noopener" 481 href="https://play.google.com/store/apps/details?id=com.watchfacestudio.smartminimalismwatchface"><img class='dropdown-icon' style='width:24px;height:24px;top:9px' src='/images/apps/watchface.png'>Smart minimalism<small class='dropdown-subtitle'>Watchface for Android Wear</small></a> 482 </li> 483 484 </ul> 485 </li> 486 487 488 489 490 491 492 <li class="nav-item "> 493 <a class="nav-link" target="_blank" rel="noopener" 494 href="https://discord.com/invite/UyY4PY768V">Discord</a> 495 </li> 496 497 498 499 500 501 502 <li class="nav-item "> 503 <a class="nav-link" 504 href="/contact">Contact</a> 505 </li> 506 507 508 </ul> 509 510 511 512 <select class="me-1 border-0 d-none d-lg-inline-block" id="select-language" onchange="location = this.value;"> 513 514 515 516 517 518 519 520 521 <option id="en" value="/contact/" selected>EN 522 </option> 523 524 525 526 527 528 529 530 531 532 533 534 535 536 <option id="ru" value="/ru/contact/">RU</option> 537 538 539 540 541 </select> 542 543 544 545 546 547 </div> 548 </nav> 549 </div> 550</header> 551 552 553 554 555 556 557 <main> 558 559 560<section class="section pb-0"> 561 <div class="container text-center"> 562 <div class="container"> 563 <div class="row"> 564 <div class="col-lg-6 mx-auto"> 565 566 <h1 class="h2 mb-3">Contact</h1> 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 </div> 582 </div> 583 </div> 584 </div> 585</section> 586 587<section class="section"> 588 <div class="container"> 589 <div class="row gy-5"> 590 <div class="col-lg-6"> 591 <div class="content"> 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 <img 616 title="" 617 loading="lazy" 618 decoding="async" 619 src="https://magicpods.app/images/about.webp" 620 alt="" 621 class="img custom-image " 622 width="" 623 height="" /> 624 625 626 627 628 629 630 631 632
632<script> 633 window.addEventListener("load", (e) => { 634 const lightbox = GLightbox(); 635 }); 636 </script>
636 637 638 639<h4 id="hello-i-am-aleksandr-maslov--the-developer-of-magicpods">Hello, I am Aleksandr Maslov — the developer of MagicPods</h4> 640<p>Since 2019, I have been actively designing and developing MagicPods, starting with a small application to view the battery level of AirPods. Since then, it has grown into a full-fledged multilingual application for Windows 10 and 11, featuring its own MagicAAP driver and a port for SteamDeck, supporting a variety of features and headphones from different manufacturers.</p> 641<p><strong>📧 <a href="mailto:[email protected]" 642 643 644 645 646 647 648>[email protected]</a></strong></p> 649</div> 650 </div> 651 <div class="col-lg-6"> 652 <div class="contact-form"> 653 654 <div id="result" class="result-container"> 655 <div id="loading" class="result-container-center"> 656 <img src="/images/hourglass_not_done_3d.png" class="result-image mb-2"> 657 </div> 658 <div id="success" class="result-container-center"> 659 <img src="/images/e-mail_3d.png" class="result-image mb-2"> 660 <p class="result-text mb-0"><strong>Thank you for your message!</strong></p> 661 <p class="result-text mb-2">I will respond to you shortly</p> 662 </div> 663 664 <div id="fail" class="result-container-center"> 665 <img src="/images/construction_3d.png" class="result-image mb-2"> 666 <p class="result-text mb-2"><strong>Something went wrong!</strong></p> 667 <button id="retry" class="btn btn-sm btn-primary mb-0">Try again</button> 668 </div> 669 </div> 670 671 <form id="form" method="POST" class="row g-4" action="https://api.web3forms.com/submit"> 672 <input type="hidden" name="access_key" value="b2304e10-796f-42ba-993d-843068b7f8d3" /> 673 <input type="hidden" name="subject" value="Contact" /> 674 <input type="checkbox" name="botcheck" class="hidden" style="display: none;"> 675 <div class="col-lg-12"> 676 <label class="mb-1" for="email">Email Address <span class="text-danger">*</span></label> 677 <input id="email" class="form-control shadow-none" type="email" name="email_address" placeholder="Email Address" required> 678 </div> 679 <div class="col-lg-12"> 680 <label class="mb-1" for="text">Message <span class="text-danger">*</span></label> 681 <textarea id="text" class="form-control shadow-none" name="message" rows="4" placeholder="Message" required></textarea> 682 </div> 683 <div class="col-lg-12"> 684 <div id="captcha" class="h-captcha captcha mb-0" data-lang="en" data-captcha="true" error-message="Please fill out captcha field"></div> 685 <button class="btn btn-primary btn-sm mt-2" type="submit">Send</button> 686 </div> 687 </form> 688 689 </div> 690 </div> 691 </div> 692 </div> 693</section> 694 695<style> 696 .result-container { 697 display: none; 698 position: absolute; 699 width: 100%; 700 height: 100%; 701 padding: 1.5em; 702 703 background-color: white; 704 border-radius: 3px; 705 z-index: 1000; 706 text-align: center; 707 font-size: inherit; 708 } 709 710 .result-container-center { 711 margin: 0; 712 position: absolute; 713 top: 50%; 714 left: 0; 715 transform: translate(0, -50%); 716 width: 100%; 717 padding: 1.5em; 718 display: none; 719 } 720 721 .result-container-center.show { 722 display: block; 723 } 724 725 .result-container.show { 726 display: block; 727 } 728 729 .result-image { 730 width: 96px; 731 height: 96px; 732 } 733 734 .captcha > * { 735 margin-bottom: 0px; 736 } 737 738 .contact-form { 739 position: relative; 740 } 741 742 .custom-image{ 743 margin-top: -64px !important; 744 margin-bottom: 0px !important; 745 } 746</style> 747
748<script> 749 document.addEventListener('DOMContentLoaded', function () { 750 const form = document.getElementById('form'); 751 const retry = document.getElementById('retry'); 752 const resultContainer = document.getElementById('result'); 753 const success = document.getElementById('success'); 754 const fail = document.getElementById('fail'); 755 const loading = document.getElementById('loading'); 756 form.reset(); 757 758 retry.addEventListener('click', function () { 759 window.location.reload(); 760 }); 761 762 form.addEventListener('submit', function (e) { 763 e.preventDefault(); 764 765 const hCaptcha = form.querySelector('textarea[name=h-captcha-response]').value; 766 if (!hCaptcha) { 767 alert(document.getElementById('captcha').getAttribute('error-message')); 768 return 769 } 770 771 const formData = new FormData(form); 772 const object = Object.fromEntries(formData); 773 const json = JSON.stringify(object); 774 775 resultContainer.classList.add('show'); 776 loading.classList.add('show'); 777 778 fetch('https://api.web3forms.com/submit', { 779 method: 'POST', 780 headers: { 781 'Content-Type': 'application/json', 782 'Accept': 'application/json' 783 }, 784 body: json 785 }) 786 .then(async (response) => { 787 let json = await response.json(); 788 if (response.status == 200) { 789 console.log(json.message); 790 loading.classList.remove('show'); 791 success.classList.add('show'); 792 } else { 793 console.log(response); 794 loading.classList.remove('show'); 795 fail.classList.add('show'); 796 } 797 }) 798 .catch(error => { 799 loading.classList.remove('show'); 800 fail.classList.add('show'); 801 console.log(error); 802 }) 803 }); 804 }); 805</script>
805 806
807<script src="https://web3forms.com/client/script.js" async defer></script>
807 808 809 </main> 810 811 812 813 <footer class="bg-light section pb-0"> 814 <div class="container"> 815 <div class="row justify-content-center"> 816 <div class="col-xl-11"> 817 <div class="section pt-0"> 818 <div class="row gy-4"> 819 <div class="col-lg-3 col-sm-6"> 820 821 <div class="h5 mb-4">Project</div> 822 <ul class="list-unstyled footer-list"> 823 824 <li><a href="/faq" title="FAQ">FAQ</a></li> 825 826 <li><a href="/privacy" title="Privacy policy">Privacy policy</a></li> 827 828 <li><a href="https://help.magicpods.app/changelog/" title="Changelog">Changelog</a></li> 829 830 </ul> 831 832 </div> 833 <div class="col-lg-3 col-sm-6"> 834 835 <div class="h5 mb-4">Support</div> 836 <ul class="list-unstyled footer-list"> 837 838 <li><a href="/buy" title="Purchase">Purchase</a></li> 839 840 <li><a href="https://help.magicpods.app/" title="Help">Help</a></li> 841 842 <li><a href="https://weblate.magicpods.app/engage/magicpods-windows/" title="Translate">Translate</a></li> 843 844 <li><a href="https://help.magicpods.app/report-issue/" title="Report issue">Report issue</a></li> 845 846 <li><a href="/donate" title="Donate">Donate</a></li> 847 848 <li><a href="/contact" title="Contact">Contact</a></li> 849 850 </ul> 851 852 </div> 853 <div class="col-lg-3 col-sm-6"> 854 855 <div class="h5 mb-4">Apps</div> 856 <ul class="list-unstyled footer-list"> 857 858 <li><a href="https://play.google.com/store/apps/details?id=com.watchfacestudio.twistwatchface" title="Twist">Twist</a></li> 859 860 <li><a href="https://www.microsoft.com/store/apps/9N78GWBTW7L5" title="MagicSelect">MagicSelect</a></li> 861 862 <li><a href="https://www.microsoft.com/store/apps/9NGB2P0TSMBF" title="MagicTranslate">MagicTranslate</a></li> 863 864 <li><a href="https://play.google.com/store/apps/details?id=yet.another.dino" title="Yet Another Dino">Yet Another Dino</a></li> 865 866 <li><a href="https://play.google.com/store/apps/details?id=com.watchfacestudio.smartminimalismwatchface" title="Smart minimalism">Smart minimalism</a></li> 867 868 <li><a href="/steamdeck" title="MagicPods for Steam Deck">MagicPods for Steam Deck</a></li> 869 870 <li><a href="https://github.com/steam3d/magicblackDecky" title="MagicBlack for Steam Deck">MagicBlack for Steam Deck</a></li> 871 872 </ul> 873 874 </div> 875 <div class="col-lg-3 col-sm-6"> 876 <a class="d-block h5 mb-3" href="https://magicpods.app/"> 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 <img 905 fetchpriority="high" 906 decoding="async" 907 src="https://magicpods.app/images/logo.png" 908 alt="MagicPods" 909 class="img img-light" 910 height="auto" 911 width="156" /> 912 <img 913 fetchpriority="high" 914 decoding="async" 915 src="https://magicpods.app/images/logo-w.png" 916 alt="MagicPods" 917 class="img img-dark" 918 height="auto" 919 width="156" /> 920 921 922 923 924 </a> 925 <p class="mb-4">Contacts and social media</p> 926 927 <ul class="list-inline social-icons"> 928 929 <li class="list-inline-item"><a href="mailto:[email protected]" title="Mail"><i 930 class="fa-solid fa-envelope"></i></a></li> 931 932 <li class="list-inline-item"><a href="https://discord.com/invite/UyY4PY768V" title="Discord"><i 933 class="fab fa-discord"></i></a></li> 934 935 <li class="list-inline-item"><a href="https://github.com/steam3d/" title="GitHub"><i 936 class="fab fa-github"></i></a></li> 937 938 <li class="list-inline-item"><a href="https://www.linkedin.com/in/steam3d/" title="Linkedin"><i 939 class="fab fa-linkedin"></i></a></li> 940 941 <li class="list-inline-item"><a href="https://t.me/magicpods" title="Telegram"><i 942 class="fab fa-telegram"></i></a></li> 943 944 <li class="list-inline-item"><a href="https://www.reddit.com/r/magicpods/" title="Reddit"><i 945 class="fab fa-reddit"></i></a></li> 946 947 <li class="list-inline-item"><a href="https://www.behance.net/steam3d" title="Behance"><i 948 class="fab fa-behance"></i></a></li> 949 950 </ul> 951 952 </div> 953 </div> 954 </div> 955 956 957 </div> 958 </div> 959 </div> 960</footer> 961 962 963 964 965 966 967 968 969
970<script crossorigin="anonymous" defer integrity="sha512-ax0wAJuPg6CSws9vJ4lswjWvk2zwkcJ8pNDt0Qr0cEeqTy1iX13iYLr1e4gUgACd9hW1fqH1uZJBFOzVdXhUsw==" type="application/javascript">(() => { 971 var __create = Object.create; 972 var __defProp = Object.defineProperty; 973 var __getOwnPropDesc = Object.getOwnPropertyDescriptor; 974 var __getOwnPropNames = Object.getOwnPropertyNames; 975 var __getProtoOf = Object.getPrototypeOf; 976 var __hasOwnProp = Object.prototype.hasOwnProperty; 977 var __commonJS = (cb, mod) => function __require() { 978 try { 979 return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; 980 } catch (e) { 981 throw mod = 0, e; 982 } 983 }; 984 var __copyProps = (to, from, except, desc) => { 985 if (from && typeof from === "object" || typeof from === "function") { 986 for (let key of __getOwnPropNames(from)) 987 if (!__hasOwnProp.call(to, key) && key !== except) 988 __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); 989 } 990 return to; 991 }; 992 var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( 993 // If the importer is in node compatibility mode or this is not an ESM 994 // file that has been converted to a CommonJS file using a Babel- 995 // compatible transform (i.e. "__esModule" has not been set), then set 996 // "default" to the CommonJS "module.exports" for node compatibility. 997 isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, 998 mod 999 )); 1000 1001 // ns-hugo-imp:/home/ubuntu/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/gohugoio/hugo-mod-jslibs-dist/popperjs/[email protected]/package/dist/cjs/popper.js 1002 var require_popper = __commonJS({ 1003 "ns-hugo-imp:/home/ubuntu/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/gohugoio/hugo-mod-jslibs-dist/popperjs/[email protected]/package/dist/cjs/popper.js"(exports) { 1004 "use strict"; 1005 Object.defineProperty(exports, "__esModule", { value: true }); 1006 function getWindow(node) { 1007 if (node == null) { 1008 return window; 1009 } 1010 if (node.toString() !== "[object Window]") { 1011 var ownerDocument = node.ownerDocument; 1012 return ownerDocument ? ownerDocument.defaultView || window : window; 1013 } 1014 return node; 1015 } 1016 function isElement2(node) { 1017 var OwnElement = getWindow(node).Element; 1018 return node instanceof OwnElement || node instanceof Element; 1019 } 1020 function isHTMLElement(node) { 1021 var OwnElement = getWindow(node).HTMLElement; 1022 return node instanceof OwnElement || node instanceof HTMLElement; 1023 } 1024 function isShadowRoot(node) { 1025 if (typeof ShadowRoot === "undefined") { 1026 return false; 1027 } 1028 var OwnElement = getWindow(node).ShadowRoot; 1029 return node instanceof OwnElement || node instanceof ShadowRoot; 1030 } 1031 var max = Math.max; 1032 var min = Math.min; 1033 var round = Math.round; 1034 function getBoundingClientRect(element, includeScale) { 1035 if (includeScale === void 0) { 1036 includeScale = false; 1037 } 1038 var rect = element.getBoundingClientRect(); 1039 var scaleX = 1; 1040 var scaleY = 1; 1041 if (isHTMLElement(element) && includeScale) { 1042 var offsetHeight = element.offsetHeight; 1043 var offsetWidth = element.offsetWidth; 1044 if (offsetWidth > 0) { 1045 scaleX = round(rect.width) / offsetWidth || 1; 1046 } 1047 if (offsetHeight > 0) { 1048 scaleY = round(rect.height) / offsetHeight || 1; 1049 } 1050 } 1051 return { 1052 width: rect.width / scaleX, 1053 height: rect.height / scaleY, 1054 top: rect.top / scaleY, 1055 right: rect.right / scaleX, 1056 bottom: rect.bottom / scaleY, 1057 left: rect.left / scaleX, 1058 x: rect.left / scaleX, 1059 y: rect.top / scaleY 1060 }; 1061 } 1062 function getWindowScroll(node) { 1063 var win = getWindow(node); 1064 var scrollLeft = win.pageXOffset; 1065 var scrollTop = win.pageYOffset; 1066 return { 1067 scrollLeft, 1068 scrollTop 1069 }; 1070 } 1071 function getHTMLElementScroll(element) { 1072 return { 1073 scrollLeft: element.scrollLeft, 1074 scrollTop: element.scrollTop 1075 }; 1076 } 1077 function getNodeScroll(node) {
vendor: 4,754 bytes, lines 1078-1193
1078 if (node === getWindow(node) || !isHTMLElement(node)) { 1079 return getWindowScroll(node); 1080 } else { 1081 return getHTMLElementScroll(node); 1082 } 1083 } 1084 function getNodeName(element) { 1085 return element ? (element.nodeName || "").toLowerCase() : null; 1086 } 1087 function getDocumentElement(element) { 1088 return ((isElement2(element) ? element.ownerDocument : ( 1089 // $FlowFixMe[prop-missing] 1090 element.document 1091 )) || window.document).documentElement; 1092 } 1093 function getWindowScrollBarX(element) { 1094 return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft; 1095 } 1096 function getComputedStyle2(element) { 1097 return getWindow(element).getComputedStyle(element); 1098 } 1099 function isScrollParent(element) { 1100 var _getComputedStyle = getComputedStyle2(element), overflow = _getComputedStyle.overflow, overflowX = _getComputedStyle.overflowX, overflowY = _getComputedStyle.overflowY; 1101 return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX); 1102 } 1103 function isElementScaled(element) { 1104 var rect = element.getBoundingClientRect(); 1105 var scaleX = round(rect.width) / element.offsetWidth || 1; 1106 var scaleY = round(rect.height) / element.offsetHeight || 1; 1107 return scaleX !== 1 || scaleY !== 1; 1108 } 1109 function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) { 1110 if (isFixed === void 0) { 1111 isFixed = false; 1112 } 1113 var isOffsetParentAnElement = isHTMLElement(offsetParent); 1114 var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent); 1115 var documentElement = getDocumentElement(offsetParent); 1116 var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled); 1117 var scroll = { 1118 scrollLeft: 0, 1119 scrollTop: 0 1120 }; 1121 var offsets = { 1122 x: 0, 1123 y: 0 1124 }; 1125 if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { 1126 if (getNodeName(offsetParent) !== "body" || // https://github.com/popperjs/popper-core/issues/1078 1127 isScrollParent(documentElement)) { 1128 scroll = getNodeScroll(offsetParent); 1129 } 1130 if (isHTMLElement(offsetParent)) { 1131 offsets = getBoundingClientRect(offsetParent, true); 1132 offsets.x += offsetParent.clientLeft; 1133 offsets.y += offsetParent.clientTop; 1134 } else if (documentElement) { 1135 offsets.x = getWindowScrollBarX(documentElement); 1136 } 1137 } 1138 return { 1139 x: rect.left + scroll.scrollLeft - offsets.x, 1140 y: rect.top + scroll.scrollTop - offsets.y, 1141 width: rect.width, 1142 height: rect.height 1143 }; 1144 } 1145 function getLayoutRect(element) { 1146 var clientRect = getBoundingClientRect(element); 1147 var width = element.offsetWidth; 1148 var height = element.offsetHeight; 1149 if (Math.abs(clientRect.width - width) <= 1) { 1150 width = clientRect.width; 1151 } 1152 if (Math.abs(clientRect.height - height) <= 1) { 1153 height = clientRect.height; 1154 } 1155 return { 1156 x: element.offsetLeft, 1157 y: element.offsetTop, 1158 width, 1159 height 1160 }; 1161 } 1162 function getParentNode(element) { 1163 if (getNodeName(element) === "html") { 1164 return element; 1165 } 1166 return ( 1167 // this is a quicker (but less type safe) way to save quite some bytes from the bundle 1168 // $FlowFixMe[incompatible-return] 1169 // $FlowFixMe[prop-missing] 1170 element.assignedSlot || // step into the shadow DOM of the parent of a slotted node 1171 element.parentNode || // DOM Element detected 1172 (isShadowRoot(element) ? element.host : null) || // ShadowRoot detected 1173 // $FlowFixMe[incompatible-call]: HTMLElement is a Node 1174 getDocumentElement(element) 1175 ); 1176 } 1177 function getScrollParent(node) { 1178 if (["html", "body", "#document"].indexOf(getNodeName(node)) >= 0) { 1179 return node.ownerDocument.body; 1180 } 1181 if (isHTMLElement(node) && isScrollParent(node)) { 1182 return node; 1183 } 1184 return getScrollParent(getParentNode(node)); 1185 } 1186 function listScrollParents(element, list) { 1187 var _element$ownerDocumen; 1188 if (list === void 0) { 1189 list = []; 1190 } 1191 var scrollParent = getScrollParent(element); 1192 var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body); 1193 var win = getWindow(scrollParent);
vendor: 4,320 bytes, lines 1194-1289
1194 var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent; 1195 var updatedList = list.concat(target); 1196 return isBody ? updatedList : ( 1197 // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here 1198 updatedList.concat(listScrollParents(getParentNode(target))) 1199 ); 1200 } 1201 function isTableElement(element) { 1202 return ["table", "td", "th"].indexOf(getNodeName(element)) >= 0; 1203 } 1204 function getTrueOffsetParent(element) { 1205 if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837 1206 getComputedStyle2(element).position === "fixed") { 1207 return null; 1208 } 1209 return element.offsetParent; 1210 } 1211 function getContainingBlock(element) { 1212 var isFirefox = navigator.userAgent.toLowerCase().indexOf("firefox") !== -1; 1213 var isIE = navigator.userAgent.indexOf("Trident") !== -1; 1214 if (isIE && isHTMLElement(element)) { 1215 var elementCss = getComputedStyle2(element); 1216 if (elementCss.position === "fixed") { 1217 return null; 1218 } 1219 } 1220 var currentNode = getParentNode(element); 1221 while (isHTMLElement(currentNode) && ["html", "body"].indexOf(getNodeName(currentNode)) < 0) { 1222 var css = getComputedStyle2(currentNode); 1223 if (css.transform !== "none" || css.perspective !== "none" || css.contain === "paint" || ["transform", "perspective"].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === "filter" || isFirefox && css.filter && css.filter !== "none") { 1224 return currentNode; 1225 } else { 1226 currentNode = currentNode.parentNode; 1227 } 1228 } 1229 return null; 1230 } 1231 function getOffsetParent(element) { 1232 var window2 = getWindow(element); 1233 var offsetParent = getTrueOffsetParent(element); 1234 while (offsetParent && isTableElement(offsetParent) && getComputedStyle2(offsetParent).position === "static") { 1235 offsetParent = getTrueOffsetParent(offsetParent); 1236 } 1237 if (offsetParent && (getNodeName(offsetParent) === "html" || getNodeName(offsetParent) === "body" && getComputedStyle2(offsetParent).position === "static")) { 1238 return window2; 1239 } 1240 return offsetParent || getContainingBlock(element) || window2; 1241 } 1242 var top = "top"; 1243 var bottom = "bottom"; 1244 var right = "right"; 1245 var left = "left"; 1246 var auto = "auto"; 1247 var basePlacements = [top, bottom, right, left]; 1248 var start = "start"; 1249 var end = "end"; 1250 var clippingParents = "clippingParents"; 1251 var viewport = "viewport"; 1252 var popper = "popper"; 1253 var reference = "reference"; 1254 var variationPlacements = /* @__PURE__ */ basePlacements.reduce(function(acc, placement) { 1255 return acc.concat([placement + "-" + start, placement + "-" + end]); 1256 }, []); 1257 var placements = /* @__PURE__ */ [].concat(basePlacements, [auto]).reduce(function(acc, placement) { 1258 return acc.concat([placement, placement + "-" + start, placement + "-" + end]); 1259 }, []); 1260 var beforeRead = "beforeRead"; 1261 var read = "read"; 1262 var afterRead = "afterRead"; 1263 var beforeMain = "beforeMain"; 1264 var main = "main"; 1265 var afterMain = "afterMain"; 1266 var beforeWrite = "beforeWrite"; 1267 var write = "write"; 1268 var afterWrite = "afterWrite"; 1269 var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite]; 1270 function order(modifiers) { 1271 var map = /* @__PURE__ */ new Map(); 1272 var visited = /* @__PURE__ */ new Set(); 1273 var result = []; 1274 modifiers.forEach(function(modifier) { 1275 map.set(modifier.name, modifier); 1276 }); 1277 function sort(modifier) { 1278 visited.add(modifier.name); 1279 var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []); 1280 requires.forEach(function(dep) { 1281 if (!visited.has(dep)) { 1282 var depModifier = map.get(dep); 1283 if (depModifier) { 1284 sort(depModifier); 1285 } 1286 } 1287 }); 1288 result.push(modifier); 1289 }
vendor: 5,852 bytes, lines 1290-1422
1290 modifiers.forEach(function(modifier) { 1291 if (!visited.has(modifier.name)) { 1292 sort(modifier); 1293 } 1294 }); 1295 return result; 1296 } 1297 function orderModifiers(modifiers) { 1298 var orderedModifiers = order(modifiers); 1299 return modifierPhases.reduce(function(acc, phase) { 1300 return acc.concat(orderedModifiers.filter(function(modifier) { 1301 return modifier.phase === phase; 1302 })); 1303 }, []); 1304 } 1305 function debounce(fn) { 1306 var pending; 1307 return function() { 1308 if (!pending) { 1309 pending = new Promise(function(resolve) { 1310 Promise.resolve().then(function() { 1311 pending = void 0; 1312 resolve(fn()); 1313 }); 1314 }); 1315 } 1316 return pending; 1317 }; 1318 } 1319 function format(str) { 1320 for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { 1321 args[_key - 1] = arguments[_key]; 1322 } 1323 return [].concat(args).reduce(function(p, c) { 1324 return p.replace(/%s/, c); 1325 }, str); 1326 } 1327 var INVALID_MODIFIER_ERROR = 'Popper: modifier "%s" provided an invalid %s property, expected %s but got %s'; 1328 var MISSING_DEPENDENCY_ERROR = 'Popper: modifier "%s" requires "%s", but "%s" modifier is not available'; 1329 var VALID_PROPERTIES = ["name", "enabled", "phase", "fn", "effect", "requires", "options"]; 1330 function validateModifiers(modifiers) { 1331 modifiers.forEach(function(modifier) { 1332 [].concat(Object.keys(modifier), VALID_PROPERTIES).filter(function(value, index, self) { 1333 return self.indexOf(value) === index; 1334 }).forEach(function(key) { 1335 switch (key) { 1336 case "name": 1337 if (typeof modifier.name !== "string") { 1338 console.error(format(INVALID_MODIFIER_ERROR, String(modifier.name), '"name"', '"string"', '"' + String(modifier.name) + '"')); 1339 } 1340 break; 1341 case "enabled": 1342 if (typeof modifier.enabled !== "boolean") { 1343 console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"enabled"', '"boolean"', '"' + String(modifier.enabled) + '"')); 1344 } 1345 break; 1346 case "phase": 1347 if (modifierPhases.indexOf(modifier.phase) < 0) { 1348 console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"phase"', "either " + modifierPhases.join(", "), '"' + String(modifier.phase) + '"')); 1349 } 1350 break; 1351 case "fn": 1352 if (typeof modifier.fn !== "function") { 1353 console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"fn"', '"function"', '"' + String(modifier.fn) + '"')); 1354 } 1355 break; 1356 case "effect": 1357 if (modifier.effect != null && typeof modifier.effect !== "function") { 1358 console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"effect"', '"function"', '"' + String(modifier.fn) + '"')); 1359 } 1360 break; 1361 case "requires": 1362 if (modifier.requires != null && !Array.isArray(modifier.requires)) { 1363 console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requires"', '"array"', '"' + String(modifier.requires) + '"')); 1364 } 1365 break; 1366 case "requiresIfExists": 1367 if (!Array.isArray(modifier.requiresIfExists)) { 1368 console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requiresIfExists"', '"array"', '"' + String(modifier.requiresIfExists) + '"')); 1369 } 1370 break; 1371 case "options": 1372 case "data": 1373 break; 1374 default: 1375 console.error('PopperJS: an invalid property has been provided to the "' + modifier.name + '" modifier, valid properties are ' + VALID_PROPERTIES.map(function(s) { 1376 return '"' + s + '"'; 1377 }).join(", ") + '; but "' + key + '" was provided.'); 1378 } 1379 modifier.requires && modifier.requires.forEach(function(requirement) { 1380 if (modifiers.find(function(mod) { 1381 return mod.name === requirement; 1382 }) == null) { 1383 console.error(format(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement)); 1384 } 1385 }); 1386 }); 1387 }); 1388 } 1389 function uniqueBy(arr, fn) { 1390 var identifiers = /* @__PURE__ */ new Set(); 1391 return arr.filter(function(item) { 1392 var identifier = fn(item); 1393 if (!identifiers.has(identifier)) { 1394 identifiers.add(identifier); 1395 return true; 1396 } 1397 }); 1398 } 1399 function getBasePlacement(placement) { 1400 return placement.split("-")[0]; 1401 } 1402 function mergeByName(modifiers) { 1403 var merged = modifiers.reduce(function(merged2, current) { 1404 var existing = merged2[current.name]; 1405 merged2[current.name] = existing ? Object.assign({}, existing, current, { 1406 options: Object.assign({}, existing.options, current.options), 1407 data: Object.assign({}, existing.data, current.data) 1408 }) : current; 1409 return merged2; 1410 }, {}); 1411 return Object.keys(merged).map(function(key) { 1412 return merged[key]; 1413 }); 1414 } 1415 function getViewportRect(element) { 1416 var win = getWindow(element); 1417 var html = getDocumentElement(element); 1418 var visualViewport = win.visualViewport; 1419 var width = html.clientWidth; 1420 var height = html.clientHeight; 1421 var x = 0; 1422 var y = 0;
vendor: 11,597 bytes, lines 1423-1672
1423 if (visualViewport) { 1424 width = visualViewport.width; 1425 height = visualViewport.height; 1426 if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) { 1427 x = visualViewport.offsetLeft; 1428 y = visualViewport.offsetTop; 1429 } 1430 } 1431 return { 1432 width, 1433 height, 1434 x: x + getWindowScrollBarX(element), 1435 y 1436 }; 1437 } 1438 function getDocumentRect(element) { 1439 var _element$ownerDocumen; 1440 var html = getDocumentElement(element); 1441 var winScroll = getWindowScroll(element); 1442 var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body; 1443 var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0); 1444 var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0); 1445 var x = -winScroll.scrollLeft + getWindowScrollBarX(element); 1446 var y = -winScroll.scrollTop; 1447 if (getComputedStyle2(body || html).direction === "rtl") { 1448 x += max(html.clientWidth, body ? body.clientWidth : 0) - width; 1449 } 1450 return { 1451 width, 1452 height, 1453 x, 1454 y 1455 }; 1456 } 1457 function contains(parent, child) { 1458 var rootNode = child.getRootNode && child.getRootNode(); 1459 if (parent.contains(child)) { 1460 return true; 1461 } else if (rootNode && isShadowRoot(rootNode)) { 1462 var next = child; 1463 do { 1464 if (next && parent.isSameNode(next)) { 1465 return true; 1466 } 1467 next = next.parentNode || next.host; 1468 } while (next); 1469 } 1470 return false; 1471 } 1472 function rectToClientRect(rect) { 1473 return Object.assign({}, rect, { 1474 left: rect.x, 1475 top: rect.y, 1476 right: rect.x + rect.width, 1477 bottom: rect.y + rect.height 1478 }); 1479 } 1480 function getInnerBoundingClientRect(element) { 1481 var rect = getBoundingClientRect(element); 1482 rect.top = rect.top + element.clientTop; 1483 rect.left = rect.left + element.clientLeft; 1484 rect.bottom = rect.top + element.clientHeight; 1485 rect.right = rect.left + element.clientWidth; 1486 rect.width = element.clientWidth; 1487 rect.height = element.clientHeight; 1488 rect.x = rect.left; 1489 rect.y = rect.top; 1490 return rect; 1491 } 1492 function getClientRectFromMixedType(element, clippingParent) { 1493 return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isElement2(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element))); 1494 } 1495 function getClippingParents(element) { 1496 var clippingParents2 = listScrollParents(getParentNode(element)); 1497 var canEscapeClipping = ["absolute", "fixed"].indexOf(getComputedStyle2(element).position) >= 0; 1498 var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element; 1499 if (!isElement2(clipperElement)) { 1500 return []; 1501 } 1502 return clippingParents2.filter(function(clippingParent) { 1503 return isElement2(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== "body" && (canEscapeClipping ? getComputedStyle2(clippingParent).position !== "static" : true); 1504 }); 1505 } 1506 function getClippingRect(element, boundary, rootBoundary) { 1507 var mainClippingParents = boundary === "clippingParents" ? getClippingParents(element) : [].concat(boundary); 1508 var clippingParents2 = [].concat(mainClippingParents, [rootBoundary]); 1509 var firstClippingParent = clippingParents2[0]; 1510 var clippingRect = clippingParents2.reduce(function(accRect, clippingParent) { 1511 var rect = getClientRectFromMixedType(element, clippingParent); 1512 accRect.top = max(rect.top, accRect.top); 1513 accRect.right = min(rect.right, accRect.right); 1514 accRect.bottom = min(rect.bottom, accRect.bottom); 1515 accRect.left = max(rect.left, accRect.left); 1516 return accRect; 1517 }, getClientRectFromMixedType(element, firstClippingParent)); 1518 clippingRect.width = clippingRect.right - clippingRect.left; 1519 clippingRect.height = clippingRect.bottom - clippingRect.top; 1520 clippingRect.x = clippingRect.left; 1521 clippingRect.y = clippingRect.top; 1522 return clippingRect; 1523 } 1524 function getVariation(placement) { 1525 return placement.split("-")[1]; 1526 } 1527 function getMainAxisFromPlacement(placement) { 1528 return ["top", "bottom"].indexOf(placement) >= 0 ? "x" : "y"; 1529 } 1530 function computeOffsets(_ref) { 1531 var reference2 = _ref.reference, element = _ref.element, placement = _ref.placement; 1532 var basePlacement = placement ? getBasePlacement(placement) : null; 1533 var variation = placement ? getVariation(placement) : null; 1534 var commonX = reference2.x + reference2.width / 2 - element.width / 2; 1535 var commonY = reference2.y + reference2.height / 2 - element.height / 2; 1536 var offsets; 1537 switch (basePlacement) { 1538 case top: 1539 offsets = { 1540 x: commonX, 1541 y: reference2.y - element.height 1542 }; 1543 break; 1544 case bottom: 1545 offsets = { 1546 x: commonX, 1547 y: reference2.y + reference2.height 1548 }; 1549 break; 1550 case right: 1551 offsets = { 1552 x: reference2.x + reference2.width, 1553 y: commonY 1554 }; 1555 break; 1556 case left: 1557 offsets = { 1558 x: reference2.x - element.width, 1559 y: commonY 1560 }; 1561 break; 1562 default: 1563 offsets = { 1564 x: reference2.x, 1565 y: reference2.y 1566 }; 1567 } 1568 var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null; 1569 if (mainAxis != null) { 1570 var len = mainAxis === "y" ? "height" : "width"; 1571 switch (variation) { 1572 case start: 1573 offsets[mainAxis] = offsets[mainAxis] - (reference2[len] / 2 - element[len] / 2); 1574 break; 1575 case end: 1576 offsets[mainAxis] = offsets[mainAxis] + (reference2[len] / 2 - element[len] / 2); 1577 break; 1578 } 1579 } 1580 return offsets; 1581 } 1582 function getFreshSideObject() { 1583 return { 1584 top: 0, 1585 right: 0, 1586 bottom: 0, 1587 left: 0 1588 }; 1589 } 1590 function mergePaddingObject(paddingObject) { 1591 return Object.assign({}, getFreshSideObject(), paddingObject); 1592 } 1593 function expandToHashMap(value, keys) { 1594 return keys.reduce(function(hashMap, key) { 1595 hashMap[key] = value; 1596 return hashMap; 1597 }, {}); 1598 } 1599 function detectOverflow(state, options) { 1600 if (options === void 0) { 1601 options = {}; 1602 } 1603 var _options = options, _options$placement = _options.placement, placement = _options$placement === void 0 ? state.placement : _options$placement, _options$boundary = _options.boundary, boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, _options$rootBoundary = _options.rootBoundary, rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, _options$elementConte = _options.elementContext, elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, _options$altBoundary = _options.altBoundary, altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, _options$padding = _options.padding, padding = _options$padding === void 0 ? 0 : _options$padding; 1604 var paddingObject = mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements)); 1605 var altContext = elementContext === popper ? reference : popper; 1606 var popperRect = state.rects.popper; 1607 var element = state.elements[altBoundary ? altContext : elementContext]; 1608 var clippingClientRect = getClippingRect(isElement2(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary); 1609 var referenceClientRect = getBoundingClientRect(state.elements.reference); 1610 var popperOffsets2 = computeOffsets({ 1611 reference: referenceClientRect, 1612 element: popperRect, 1613 strategy: "absolute", 1614 placement 1615 }); 1616 var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets2)); 1617 var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; 1618 var overflowOffsets = { 1619 top: clippingClientRect.top - elementClientRect.top + paddingObject.top, 1620 bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom, 1621 left: clippingClientRect.left - elementClientRect.left + paddingObject.left, 1622 right: elementClientRect.right - clippingClientRect.right + paddingObject.right 1623 }; 1624 var offsetData = state.modifiersData.offset; 1625 if (elementContext === popper && offsetData) { 1626 var offset2 = offsetData[placement]; 1627 Object.keys(overflowOffsets).forEach(function(key) { 1628 var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1; 1629 var axis = [top, bottom].indexOf(key) >= 0 ? "y" : "x"; 1630 overflowOffsets[key] += offset2[axis] * multiply; 1631 }); 1632 } 1633 return overflowOffsets; 1634 } 1635 var INVALID_ELEMENT_ERROR = "Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element."; 1636 var INFINITE_LOOP_ERROR = "Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash."; 1637 var DEFAULT_OPTIONS = { 1638 placement: "bottom", 1639 modifiers: [], 1640 strategy: "absolute" 1641 }; 1642 function areValidElements() { 1643 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { 1644 args[_key] = arguments[_key]; 1645 } 1646 return !args.some(function(element) { 1647 return !(element && typeof element.getBoundingClientRect === "function"); 1648 }); 1649 } 1650 function popperGenerator(generatorOptions) { 1651 if (generatorOptions === void 0) { 1652 generatorOptions = {}; 1653 } 1654 var _generatorOptions = generatorOptions, _generatorOptions$def = _generatorOptions.defaultModifiers, defaultModifiers2 = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, _generatorOptions$def2 = _generatorOptions.defaultOptions, defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2; 1655 return function createPopper3(reference2, popper2, options) { 1656 if (options === void 0) { 1657 options = defaultOptions; 1658 } 1659 var state = { 1660 placement: "bottom", 1661 orderedModifiers: [], 1662 options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions), 1663 modifiersData: {}, 1664 elements: { 1665 reference: reference2, 1666 popper: popper2 1667 }, 1668 attributes: {}, 1669 styles: {} 1670 }; 1671 var effectCleanupFns = []; 1672 var isDestroyed = false;
vendor: 4,183 bytes, lines 1673-1747
1673 var instance = { 1674 state, 1675 setOptions: function setOptions(setOptionsAction) { 1676 var options2 = typeof setOptionsAction === "function" ? setOptionsAction(state.options) : setOptionsAction; 1677 cleanupModifierEffects(); 1678 state.options = Object.assign({}, defaultOptions, state.options, options2); 1679 state.scrollParents = { 1680 reference: isElement2(reference2) ? listScrollParents(reference2) : reference2.contextElement ? listScrollParents(reference2.contextElement) : [], 1681 popper: listScrollParents(popper2) 1682 }; 1683 var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers2, state.options.modifiers))); 1684 state.orderedModifiers = orderedModifiers.filter(function(m) { 1685 return m.enabled; 1686 }); 1687 if (true) { 1688 var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function(_ref) { 1689 var name = _ref.name; 1690 return name; 1691 }); 1692 validateModifiers(modifiers); 1693 if (getBasePlacement(state.options.placement) === auto) { 1694 var flipModifier = state.orderedModifiers.find(function(_ref2) { 1695 var name = _ref2.name; 1696 return name === "flip"; 1697 }); 1698 if (!flipModifier) { 1699 console.error(['Popper: "auto" placements require the "flip" modifier be', "present and enabled to work."].join(" ")); 1700 } 1701 } 1702 var _getComputedStyle = getComputedStyle2(popper2), marginTop = _getComputedStyle.marginTop, marginRight = _getComputedStyle.marginRight, marginBottom = _getComputedStyle.marginBottom, marginLeft = _getComputedStyle.marginLeft; 1703 if ([marginTop, marginRight, marginBottom, marginLeft].some(function(margin) { 1704 return parseFloat(margin); 1705 })) { 1706 console.warn(['Popper: CSS "margin" styles cannot be used to apply padding', "between the popper and its reference element or boundary.", "To replicate margin, use the `offset` modifier, as well as", "the `padding` option in the `preventOverflow` and `flip`", "modifiers."].join(" ")); 1707 } 1708 } 1709 runModifierEffects(); 1710 return instance.update(); 1711 }, 1712 // Sync update – it will always be executed, even if not necessary. This 1713 // is useful for low frequency updates where sync behavior simplifies the 1714 // logic. 1715 // For high frequency updates (e.g. `resize` and `scroll` events), always 1716 // prefer the async Popper#update method 1717 forceUpdate: function forceUpdate() { 1718 if (isDestroyed) { 1719 return; 1720 } 1721 var _state$elements = state.elements, reference3 = _state$elements.reference, popper3 = _state$elements.popper; 1722 if (!areValidElements(reference3, popper3)) { 1723 if (true) { 1724 console.error(INVALID_ELEMENT_ERROR); 1725 } 1726 return; 1727 } 1728 state.rects = { 1729 reference: getCompositeRect(reference3, getOffsetParent(popper3), state.options.strategy === "fixed"), 1730 popper: getLayoutRect(popper3) 1731 }; 1732 state.reset = false; 1733 state.placement = state.options.placement; 1734 state.orderedModifiers.forEach(function(modifier) { 1735 return state.modifiersData[modifier.name] = Object.assign({}, modifier.data); 1736 }); 1737 var __debug_loops__ = 0; 1738 for (var index = 0; index < state.orderedModifiers.length; index++) { 1739 if (true) { 1740 __debug_loops__ += 1; 1741 if (__debug_loops__ > 100) { 1742 console.error(INFINITE_LOOP_ERROR); 1743 break; 1744 } 1745 } 1746 if (state.reset === true) { 1747 state.reset = false;
vendor: 5,583 bytes, lines 1748-1890
1748 index = -1; 1749 continue; 1750 } 1751 var _state$orderedModifie = state.orderedModifiers[index], fn = _state$orderedModifie.fn, _state$orderedModifie2 = _state$orderedModifie.options, _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, name = _state$orderedModifie.name; 1752 if (typeof fn === "function") { 1753 state = fn({ 1754 state, 1755 options: _options, 1756 name, 1757 instance 1758 }) || state; 1759 } 1760 } 1761 }, 1762 // Async and optimistically optimized update – it will not be executed if 1763 // not necessary (debounced to run at most once-per-tick) 1764 update: debounce(function() { 1765 return new Promise(function(resolve) { 1766 instance.forceUpdate(); 1767 resolve(state); 1768 }); 1769 }), 1770 destroy: function destroy() { 1771 cleanupModifierEffects(); 1772 isDestroyed = true; 1773 } 1774 }; 1775 if (!areValidElements(reference2, popper2)) { 1776 if (true) { 1777 console.error(INVALID_ELEMENT_ERROR); 1778 } 1779 return instance; 1780 } 1781 instance.setOptions(options).then(function(state2) { 1782 if (!isDestroyed && options.onFirstUpdate) { 1783 options.onFirstUpdate(state2); 1784 } 1785 }); 1786 function runModifierEffects() { 1787 state.orderedModifiers.forEach(function(_ref3) { 1788 var name = _ref3.name, _ref3$options = _ref3.options, options2 = _ref3$options === void 0 ? {} : _ref3$options, effect2 = _ref3.effect; 1789 if (typeof effect2 === "function") { 1790 var cleanupFn = effect2({ 1791 state, 1792 name, 1793 instance, 1794 options: options2 1795 }); 1796 var noopFn = function noopFn2() { 1797 }; 1798 effectCleanupFns.push(cleanupFn || noopFn); 1799 } 1800 }); 1801 } 1802 function cleanupModifierEffects() { 1803 effectCleanupFns.forEach(function(fn) { 1804 return fn(); 1805 }); 1806 effectCleanupFns = []; 1807 } 1808 return instance; 1809 }; 1810 } 1811 var passive = { 1812 passive: true 1813 }; 1814 function effect$2(_ref) { 1815 var state = _ref.state, instance = _ref.instance, options = _ref.options; 1816 var _options$scroll = options.scroll, scroll = _options$scroll === void 0 ? true : _options$scroll, _options$resize = options.resize, resize = _options$resize === void 0 ? true : _options$resize; 1817 var window2 = getWindow(state.elements.popper); 1818 var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper); 1819 if (scroll) { 1820 scrollParents.forEach(function(scrollParent) { 1821 scrollParent.addEventListener("scroll", instance.update, passive); 1822 }); 1823 } 1824 if (resize) { 1825 window2.addEventListener("resize", instance.update, passive); 1826 } 1827 return function() { 1828 if (scroll) { 1829 scrollParents.forEach(function(scrollParent) { 1830 scrollParent.removeEventListener("scroll", instance.update, passive); 1831 }); 1832 } 1833 if (resize) { 1834 window2.removeEventListener("resize", instance.update, passive); 1835 } 1836 }; 1837 } 1838 var eventListeners = { 1839 name: "eventListeners", 1840 enabled: true, 1841 phase: "write", 1842 fn: function fn() { 1843 }, 1844 effect: effect$2, 1845 data: {} 1846 }; 1847 function popperOffsets(_ref) { 1848 var state = _ref.state, name = _ref.name; 1849 state.modifiersData[name] = computeOffsets({ 1850 reference: state.rects.reference, 1851 element: state.rects.popper, 1852 strategy: "absolute", 1853 placement: state.placement 1854 }); 1855 } 1856 var popperOffsets$1 = { 1857 name: "popperOffsets", 1858 enabled: true, 1859 phase: "read", 1860 fn: popperOffsets, 1861 data: {} 1862 }; 1863 var unsetSides = { 1864 top: "auto", 1865 right: "auto", 1866 bottom: "auto", 1867 left: "auto" 1868 }; 1869 function roundOffsetsByDPR(_ref) { 1870 var x = _ref.x, y = _ref.y; 1871 var win = window; 1872 var dpr = win.devicePixelRatio || 1; 1873 return { 1874 x: round(x * dpr) / dpr || 0, 1875 y: round(y * dpr) / dpr || 0 1876 }; 1877 } 1878 function mapToStyles(_ref2) { 1879 var _Object$assign2; 1880 var popper2 = _ref2.popper, popperRect = _ref2.popperRect, placement = _ref2.placement, variation = _ref2.variation, offsets = _ref2.offsets, position = _ref2.position, gpuAcceleration = _ref2.gpuAcceleration, adaptive = _ref2.adaptive, roundOffsets = _ref2.roundOffsets, isFixed = _ref2.isFixed; 1881 var _ref3 = roundOffsets === true ? roundOffsetsByDPR(offsets) : typeof roundOffsets === "function" ? roundOffsets(offsets) : offsets, _ref3$x = _ref3.x, x = _ref3$x === void 0 ? 0 : _ref3$x, _ref3$y = _ref3.y, y = _ref3$y === void 0 ? 0 : _ref3$y; 1882 var hasX = offsets.hasOwnProperty("x"); 1883 var hasY = offsets.hasOwnProperty("y"); 1884 var sideX = left; 1885 var sideY = top; 1886 var win = window; 1887 if (adaptive) { 1888 var offsetParent = getOffsetParent(popper2); 1889 var heightProp = "clientHeight"; 1890 var widthProp = "clientWidth";
1891 if (offsetParent === getWindow(popper2)) { 1892 offsetParent = getDocumentElement(popper2); 1893 if (getComputedStyle2(offsetParent).position !== "static" && position === "absolute") { 1894 heightProp = "scrollHeight"; 1895 widthProp = "scrollWidth"; 1896 } 1897 } 1898 offsetParent = offsetParent; 1899 if (placement === top || (placement === left || placement === right) && variation === end) { 1900 sideY = bottom; 1901 var offsetY = isFixed && win.visualViewport ? win.visualViewport.height : ( 1902 // $FlowFixMe[prop-missing] 1903 offsetParent[heightProp] 1904 ); 1905 y -= offsetY - popperRect.height; 1906 y *= gpuAcceleration ? 1 : -1; 1907 } 1908 if (placement === left || (placement === top || placement === bottom) && variation === end) { 1909 sideX = right; 1910 var offsetX = isFixed && win.visualViewport ? win.visualViewport.width : ( 1911 // $FlowFixMe[prop-missing] 1912 offsetParent[widthProp] 1913 ); 1914 x -= offsetX - popperRect.width; 1915 x *= gpuAcceleration ? 1 : -1; 1916 } 1917 } 1918 var commonStyles = Object.assign({ 1919 position 1920 }, adaptive && unsetSides); 1921 if (gpuAcceleration) { 1922 var _Object$assign; 1923 return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? "0" : "", _Object$assign[sideX] = hasX ? "0" : "", _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign)); 1924 } 1925 return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : "", _Object$assign2[sideX] = hasX ? x + "px" : "", _Object$assign2.transform = "", _Object$assign2)); 1926 } 1927 function computeStyles(_ref4) { 1928 var state = _ref4.state, options = _ref4.options; 1929 var _options$gpuAccelerat = options.gpuAcceleration, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, _options$adaptive = options.adaptive, adaptive = _options$adaptive === void 0 ? true : _options$adaptive, _options$roundOffsets = options.roundOffsets, roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets; 1930 if (true) { 1931 var transitionProperty = getComputedStyle2(state.elements.popper).transitionProperty || ""; 1932 if (adaptive && ["transform", "top", "right", "bottom", "left"].some(function(property) { 1933 return transitionProperty.indexOf(property) >= 0; 1934 })) { 1935 console.warn(["Popper: Detected CSS transitions on at least one of the following", 'CSS properties: "transform", "top", "right", "bottom", "left".', "\n\n", 'Disable the "computeStyles" modifier\'s `adaptive` option to allow', "for smooth transitions, or remove these properties from the CSS", "transition declaration on the popper element if only transitioning", "opacity or background-color for example.", "\n\n", "We recommend using the popper element as a wrapper around an inner", "element that can have any CSS property transitioned for animations."].join(" ")); 1936 } 1937 } 1938 var commonStyles = { 1939 placement: getBasePlacement(state.placement), 1940 variation: getVariation(state.placement), 1941 popper: state.elements.popper, 1942 popperRect: state.rects.popper, 1943 gpuAcceleration, 1944 isFixed: state.options.strategy === "fixed" 1945 }; 1946 if (state.modifiersData.popperOffsets != null) { 1947 state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, { 1948 offsets: state.modifiersData.popperOffsets, 1949 position: state.options.strategy, 1950 adaptive, 1951 roundOffsets 1952 }))); 1953 } 1954 if (state.modifiersData.arrow != null) { 1955 state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, { 1956 offsets: state.modifiersData.arrow, 1957 position: "absolute", 1958 adaptive: false, 1959 roundOffsets 1960 }))); 1961 } 1962 state.attributes.popper = Object.assign({}, state.attributes.popper, { 1963 "data-popper-placement": state.placement 1964 }); 1965 } 1966 var computeStyles$1 = { 1967 name: "computeStyles", 1968 enabled: true, 1969 phase: "beforeWrite", 1970 fn: computeStyles, 1971 data: {} 1972 }; 1973 function applyStyles(_ref) { 1974 var state = _ref.state;
vendor: 9,568 bytes, lines 1975-2188
1975 Object.keys(state.elements).forEach(function(name) { 1976 var style = state.styles[name] || {}; 1977 var attributes = state.attributes[name] || {}; 1978 var element = state.elements[name]; 1979 if (!isHTMLElement(element) || !getNodeName(element)) { 1980 return; 1981 } 1982 Object.assign(element.style, style); 1983 Object.keys(attributes).forEach(function(name2) { 1984 var value = attributes[name2]; 1985 if (value === false) { 1986 element.removeAttribute(name2); 1987 } else { 1988 element.setAttribute(name2, value === true ? "" : value); 1989 } 1990 }); 1991 }); 1992 } 1993 function effect$1(_ref2) { 1994 var state = _ref2.state; 1995 var initialStyles = { 1996 popper: { 1997 position: state.options.strategy, 1998 left: "0", 1999 top: "0", 2000 margin: "0" 2001 }, 2002 arrow: { 2003 position: "absolute" 2004 }, 2005 reference: {} 2006 }; 2007 Object.assign(state.elements.popper.style, initialStyles.popper); 2008 state.styles = initialStyles; 2009 if (state.elements.arrow) { 2010 Object.assign(state.elements.arrow.style, initialStyles.arrow); 2011 } 2012 return function() { 2013 Object.keys(state.elements).forEach(function(name) { 2014 var element = state.elements[name]; 2015 var attributes = state.attributes[name] || {}; 2016 var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); 2017 var style = styleProperties.reduce(function(style2, property) { 2018 style2[property] = ""; 2019 return style2; 2020 }, {}); 2021 if (!isHTMLElement(element) || !getNodeName(element)) { 2022 return; 2023 } 2024 Object.assign(element.style, style); 2025 Object.keys(attributes).forEach(function(attribute) { 2026 element.removeAttribute(attribute); 2027 }); 2028 }); 2029 }; 2030 } 2031 var applyStyles$1 = { 2032 name: "applyStyles", 2033 enabled: true, 2034 phase: "write", 2035 fn: applyStyles, 2036 effect: effect$1, 2037 requires: ["computeStyles"] 2038 }; 2039 function distanceAndSkiddingToXY(placement, rects, offset2) { 2040 var basePlacement = getBasePlacement(placement); 2041 var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1; 2042 var _ref = typeof offset2 === "function" ? offset2(Object.assign({}, rects, { 2043 placement 2044 })) : offset2, skidding = _ref[0], distance = _ref[1]; 2045 skidding = skidding || 0; 2046 distance = (distance || 0) * invertDistance; 2047 return [left, right].indexOf(basePlacement) >= 0 ? { 2048 x: distance, 2049 y: skidding 2050 } : { 2051 x: skidding, 2052 y: distance 2053 }; 2054 } 2055 function offset(_ref2) { 2056 var state = _ref2.state, options = _ref2.options, name = _ref2.name; 2057 var _options$offset = options.offset, offset2 = _options$offset === void 0 ? [0, 0] : _options$offset; 2058 var data = placements.reduce(function(acc, placement) { 2059 acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset2); 2060 return acc; 2061 }, {}); 2062 var _data$state$placement = data[state.placement], x = _data$state$placement.x, y = _data$state$placement.y; 2063 if (state.modifiersData.popperOffsets != null) { 2064 state.modifiersData.popperOffsets.x += x; 2065 state.modifiersData.popperOffsets.y += y; 2066 } 2067 state.modifiersData[name] = data; 2068 } 2069 var offset$1 = { 2070 name: "offset", 2071 enabled: true, 2072 phase: "main", 2073 requires: ["popperOffsets"], 2074 fn: offset 2075 }; 2076 var hash$1 = { 2077 left: "right", 2078 right: "left", 2079 bottom: "top", 2080 top: "bottom" 2081 }; 2082 function getOppositePlacement(placement) { 2083 return placement.replace(/left|right|bottom|top/g, function(matched) { 2084 return hash$1[matched]; 2085 }); 2086 } 2087 var hash = { 2088 start: "end", 2089 end: "start" 2090 }; 2091 function getOppositeVariationPlacement(placement) { 2092 return placement.replace(/start|end/g, function(matched) { 2093 return hash[matched]; 2094 }); 2095 } 2096 function computeAutoPlacement(state, options) { 2097 if (options === void 0) { 2098 options = {}; 2099 } 2100 var _options = options, placement = _options.placement, boundary = _options.boundary, rootBoundary = _options.rootBoundary, padding = _options.padding, flipVariations = _options.flipVariations, _options$allowedAutoP = _options.allowedAutoPlacements, allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP; 2101 var variation = getVariation(placement); 2102 var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function(placement2) { 2103 return getVariation(placement2) === variation; 2104 }) : basePlacements; 2105 var allowedPlacements = placements$1.filter(function(placement2) { 2106 return allowedAutoPlacements.indexOf(placement2) >= 0; 2107 }); 2108 if (allowedPlacements.length === 0) { 2109 allowedPlacements = placements$1; 2110 if (true) { 2111 console.error(["Popper: The `allowedAutoPlacements` option did not allow any", "placements. Ensure the `placement` option matches the variation", "of the allowed placements.", 'For example, "auto" cannot be used to allow "bottom-start".', 'Use "auto-start" instead.'].join(" ")); 2112 } 2113 } 2114 var overflows = allowedPlacements.reduce(function(acc, placement2) { 2115 acc[placement2] = detectOverflow(state, { 2116 placement: placement2, 2117 boundary, 2118 rootBoundary, 2119 padding 2120 })[getBasePlacement(placement2)]; 2121 return acc; 2122 }, {}); 2123 return Object.keys(overflows).sort(function(a, b) { 2124 return overflows[a] - overflows[b]; 2125 }); 2126 } 2127 function getExpandedFallbackPlacements(placement) { 2128 if (getBasePlacement(placement) === auto) { 2129 return []; 2130 } 2131 var oppositePlacement = getOppositePlacement(placement); 2132 return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)]; 2133 } 2134 function flip(_ref) { 2135 var state = _ref.state, options = _ref.options, name = _ref.name; 2136 if (state.modifiersData[name]._skip) { 2137 return; 2138 } 2139 var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, specifiedFallbackPlacements = options.fallbackPlacements, padding = options.padding, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, _options$flipVariatio = options.flipVariations, flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, allowedAutoPlacements = options.allowedAutoPlacements; 2140 var preferredPlacement = state.options.placement; 2141 var basePlacement = getBasePlacement(preferredPlacement); 2142 var isBasePlacement = basePlacement === preferredPlacement; 2143 var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement)); 2144 var placements2 = [preferredPlacement].concat(fallbackPlacements).reduce(function(acc, placement2) { 2145 return acc.concat(getBasePlacement(placement2) === auto ? computeAutoPlacement(state, { 2146 placement: placement2, 2147 boundary, 2148 rootBoundary, 2149 padding, 2150 flipVariations, 2151 allowedAutoPlacements 2152 }) : placement2); 2153 }, []); 2154 var referenceRect = state.rects.reference; 2155 var popperRect = state.rects.popper; 2156 var checksMap = /* @__PURE__ */ new Map(); 2157 var makeFallbackChecks = true; 2158 var firstFittingPlacement = placements2[0]; 2159 for (var i = 0; i < placements2.length; i++) { 2160 var placement = placements2[i]; 2161 var _basePlacement = getBasePlacement(placement); 2162 var isStartVariation = getVariation(placement) === start; 2163 var isVertical = [top, bottom].indexOf(_basePlacement) >= 0; 2164 var len = isVertical ? "width" : "height"; 2165 var overflow = detectOverflow(state, { 2166 placement, 2167 boundary, 2168 rootBoundary, 2169 altBoundary, 2170 padding 2171 }); 2172 var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top; 2173 if (referenceRect[len] > popperRect[len]) { 2174 mainVariationSide = getOppositePlacement(mainVariationSide); 2175 } 2176 var altVariationSide = getOppositePlacement(mainVariationSide); 2177 var checks = []; 2178 if (checkMainAxis) { 2179 checks.push(overflow[_basePlacement] <= 0); 2180 } 2181 if (checkAltAxis) { 2182 checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0); 2183 } 2184 if (checks.every(function(check) { 2185 return check; 2186 })) { 2187 firstFittingPlacement = placement; 2188 makeFallbackChecks = false;
vendor: 9,128 bytes, lines 2189-2359
2189 break; 2190 } 2191 checksMap.set(placement, checks); 2192 } 2193 if (makeFallbackChecks) { 2194 var numberOfChecks = flipVariations ? 3 : 1; 2195 var _loop = function _loop2(_i2) { 2196 var fittingPlacement = placements2.find(function(placement2) { 2197 var checks2 = checksMap.get(placement2); 2198 if (checks2) { 2199 return checks2.slice(0, _i2).every(function(check) { 2200 return check; 2201 }); 2202 } 2203 }); 2204 if (fittingPlacement) { 2205 firstFittingPlacement = fittingPlacement; 2206 return "break"; 2207 } 2208 }; 2209 for (var _i = numberOfChecks; _i > 0; _i--) { 2210 var _ret = _loop(_i); 2211 if (_ret === "break") break; 2212 } 2213 } 2214 if (state.placement !== firstFittingPlacement) { 2215 state.modifiersData[name]._skip = true; 2216 state.placement = firstFittingPlacement; 2217 state.reset = true; 2218 } 2219 } 2220 var flip$1 = { 2221 name: "flip", 2222 enabled: true, 2223 phase: "main", 2224 fn: flip, 2225 requiresIfExists: ["offset"], 2226 data: { 2227 _skip: false 2228 } 2229 }; 2230 function getAltAxis(axis) { 2231 return axis === "x" ? "y" : "x"; 2232 } 2233 function within(min$1, value, max$1) { 2234 return max(min$1, min(value, max$1)); 2235 } 2236 function withinMaxClamp(min2, value, max2) { 2237 var v = within(min2, value, max2); 2238 return v > max2 ? max2 : v; 2239 } 2240 function preventOverflow(_ref) { 2241 var state = _ref.state, options = _ref.options, name = _ref.name; 2242 var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, padding = options.padding, _options$tether = options.tether, tether = _options$tether === void 0 ? true : _options$tether, _options$tetherOffset = options.tetherOffset, tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset; 2243 var overflow = detectOverflow(state, { 2244 boundary, 2245 rootBoundary, 2246 padding, 2247 altBoundary 2248 }); 2249 var basePlacement = getBasePlacement(state.placement); 2250 var variation = getVariation(state.placement); 2251 var isBasePlacement = !variation; 2252 var mainAxis = getMainAxisFromPlacement(basePlacement); 2253 var altAxis = getAltAxis(mainAxis); 2254 var popperOffsets2 = state.modifiersData.popperOffsets; 2255 var referenceRect = state.rects.reference; 2256 var popperRect = state.rects.popper; 2257 var tetherOffsetValue = typeof tetherOffset === "function" ? tetherOffset(Object.assign({}, state.rects, { 2258 placement: state.placement 2259 })) : tetherOffset; 2260 var normalizedTetherOffsetValue = typeof tetherOffsetValue === "number" ? { 2261 mainAxis: tetherOffsetValue, 2262 altAxis: tetherOffsetValue 2263 } : Object.assign({ 2264 mainAxis: 0, 2265 altAxis: 0 2266 }, tetherOffsetValue); 2267 var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null; 2268 var data = { 2269 x: 0, 2270 y: 0 2271 }; 2272 if (!popperOffsets2) { 2273 return; 2274 } 2275 if (checkMainAxis) { 2276 var _offsetModifierState$; 2277 var mainSide = mainAxis === "y" ? top : left; 2278 var altSide = mainAxis === "y" ? bottom : right; 2279 var len = mainAxis === "y" ? "height" : "width"; 2280 var offset2 = popperOffsets2[mainAxis]; 2281 var min$1 = offset2 + overflow[mainSide]; 2282 var max$1 = offset2 - overflow[altSide]; 2283 var additive = tether ? -popperRect[len] / 2 : 0; 2284 var minLen = variation === start ? referenceRect[len] : popperRect[len]; 2285 var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; 2286 var arrowElement = state.elements.arrow; 2287 var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : { 2288 width: 0, 2289 height: 0 2290 }; 2291 var arrowPaddingObject = state.modifiersData["arrow#persistent"] ? state.modifiersData["arrow#persistent"].padding : getFreshSideObject(); 2292 var arrowPaddingMin = arrowPaddingObject[mainSide]; 2293 var arrowPaddingMax = arrowPaddingObject[altSide]; 2294 var arrowLen = within(0, referenceRect[len], arrowRect[len]); 2295 var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis; 2296 var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis; 2297 var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow); 2298 var clientOffset = arrowOffsetParent ? mainAxis === "y" ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0; 2299 var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0; 2300 var tetherMin = offset2 + minOffset - offsetModifierValue - clientOffset; 2301 var tetherMax = offset2 + maxOffset - offsetModifierValue; 2302 var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset2, tether ? max(max$1, tetherMax) : max$1); 2303 popperOffsets2[mainAxis] = preventedOffset; 2304 data[mainAxis] = preventedOffset - offset2; 2305 } 2306 if (checkAltAxis) { 2307 var _offsetModifierState$2; 2308 var _mainSide = mainAxis === "x" ? top : left; 2309 var _altSide = mainAxis === "x" ? bottom : right; 2310 var _offset = popperOffsets2[altAxis]; 2311 var _len = altAxis === "y" ? "height" : "width"; 2312 var _min = _offset + overflow[_mainSide]; 2313 var _max = _offset - overflow[_altSide]; 2314 var isOriginSide = [top, left].indexOf(basePlacement) !== -1; 2315 var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0; 2316 var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis; 2317 var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max; 2318 var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max); 2319 popperOffsets2[altAxis] = _preventedOffset; 2320 data[altAxis] = _preventedOffset - _offset; 2321 } 2322 state.modifiersData[name] = data; 2323 } 2324 var preventOverflow$1 = { 2325 name: "preventOverflow", 2326 enabled: true, 2327 phase: "main", 2328 fn: preventOverflow, 2329 requiresIfExists: ["offset"] 2330 }; 2331 var toPaddingObject = function toPaddingObject2(padding, state) { 2332 padding = typeof padding === "function" ? padding(Object.assign({}, state.rects, { 2333 placement: state.placement 2334 })) : padding; 2335 return mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements)); 2336 }; 2337 function arrow(_ref) { 2338 var _state$modifiersData$; 2339 var state = _ref.state, name = _ref.name, options = _ref.options; 2340 var arrowElement = state.elements.arrow; 2341 var popperOffsets2 = state.modifiersData.popperOffsets; 2342 var basePlacement = getBasePlacement(state.placement); 2343 var axis = getMainAxisFromPlacement(basePlacement); 2344 var isVertical = [left, right].indexOf(basePlacement) >= 0; 2345 var len = isVertical ? "height" : "width"; 2346 if (!arrowElement || !popperOffsets2) { 2347 return; 2348 } 2349 var paddingObject = toPaddingObject(options.padding, state); 2350 var arrowRect = getLayoutRect(arrowElement); 2351 var minProp = axis === "y" ? top : left; 2352 var maxProp = axis === "y" ? bottom : right; 2353 var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets2[axis] - state.rects.popper[len]; 2354 var startDiff = popperOffsets2[axis] - state.rects.reference[axis]; 2355 var arrowOffsetParent = getOffsetParent(arrowElement); 2356 var clientSize = arrowOffsetParent ? axis === "y" ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0; 2357 var centerToReference = endDiff / 2 - startDiff / 2; 2358 var min2 = paddingObject[minProp]; 2359 var max2 = clientSize - arrowRect[len] - paddingObject[maxPro
vendor: 5,000 bytes, lines 2359-2480
2359p]; 2360 var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference; 2361 var offset2 = within(min2, center, max2); 2362 var axisProp = axis; 2363 state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset2, _state$modifiersData$.centerOffset = offset2 - center, _state$modifiersData$); 2364 } 2365 function effect(_ref2) { 2366 var state = _ref2.state, options = _ref2.options; 2367 var _options$element = options.element, arrowElement = _options$element === void 0 ? "[data-popper-arrow]" : _options$element; 2368 if (arrowElement == null) { 2369 return; 2370 } 2371 if (typeof arrowElement === "string") { 2372 arrowElement = state.elements.popper.querySelector(arrowElement); 2373 if (!arrowElement) { 2374 return; 2375 } 2376 } 2377 if (true) { 2378 if (!isHTMLElement(arrowElement)) { 2379 console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).', "To use an SVG arrow, wrap it in an HTMLElement that will be used as", "the arrow."].join(" ")); 2380 } 2381 } 2382 if (!contains(state.elements.popper, arrowElement)) { 2383 if (true) { 2384 console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper', "element."].join(" ")); 2385 } 2386 return; 2387 } 2388 state.elements.arrow = arrowElement; 2389 } 2390 var arrow$1 = { 2391 name: "arrow", 2392 enabled: true, 2393 phase: "main", 2394 fn: arrow, 2395 effect, 2396 requires: ["popperOffsets"], 2397 requiresIfExists: ["preventOverflow"] 2398 }; 2399 function getSideOffsets(overflow, rect, preventedOffsets) { 2400 if (preventedOffsets === void 0) { 2401 preventedOffsets = { 2402 x: 0, 2403 y: 0 2404 }; 2405 } 2406 return { 2407 top: overflow.top - rect.height - preventedOffsets.y, 2408 right: overflow.right - rect.width + preventedOffsets.x, 2409 bottom: overflow.bottom - rect.height + preventedOffsets.y, 2410 left: overflow.left - rect.width - preventedOffsets.x 2411 }; 2412 } 2413 function isAnySideFullyClipped(overflow) { 2414 return [top, right, bottom, left].some(function(side) { 2415 return overflow[side] >= 0; 2416 }); 2417 } 2418 function hide(_ref) { 2419 var state = _ref.state, name = _ref.name; 2420 var referenceRect = state.rects.reference; 2421 var popperRect = state.rects.popper; 2422 var preventedOffsets = state.modifiersData.preventOverflow; 2423 var referenceOverflow = detectOverflow(state, { 2424 elementContext: "reference" 2425 }); 2426 var popperAltOverflow = detectOverflow(state, { 2427 altBoundary: true 2428 }); 2429 var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect); 2430 var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets); 2431 var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets); 2432 var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets); 2433 state.modifiersData[name] = { 2434 referenceClippingOffsets, 2435 popperEscapeOffsets, 2436 isReferenceHidden, 2437 hasPopperEscaped 2438 }; 2439 state.attributes.popper = Object.assign({}, state.attributes.popper, { 2440 "data-popper-reference-hidden": isReferenceHidden, 2441 "data-popper-escaped": hasPopperEscaped 2442 }); 2443 } 2444 var hide$1 = { 2445 name: "hide", 2446 enabled: true, 2447 phase: "main", 2448 requiresIfExists: ["preventOverflow"], 2449 fn: hide 2450 }; 2451 var defaultModifiers$1 = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1]; 2452 var createPopper$1 = /* @__PURE__ */ popperGenerator({ 2453 defaultModifiers: defaultModifiers$1 2454 }); 2455 var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1]; 2456 var createPopper2 = /* @__PURE__ */ popperGenerator({ 2457 defaultModifiers 2458 }); 2459 exports.applyStyles = applyStyles$1; 2460 exports.arrow = arrow$1; 2461 exports.computeStyles = computeStyles$1; 2462 exports.createPopper = createPopper2; 2463 exports.createPopperLite = createPopper$1; 2464 exports.defaultModifiers = defaultModifiers; 2465 exports.detectOverflow = detectOverflow; 2466 exports.eventListeners = eventListeners; 2467 exports.flip = flip$1; 2468 exports.hide = hide$1; 2469 exports.offset = offset$1; 2470 exports.popperGenerator = popperGenerator; 2471 exports.popperOffsets = popperOffsets$1; 2472 exports.preventOverflow = preventOverflow$1; 2473 } 2474 }); 2475 2476 // ns-hugo-imp:/home/ubuntu/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/[email protected]+incompatible/js/src/dom/data.js 2477 var elementMap = /* @__PURE__ */ new Map(); 2478 var data_default = { 2479 set(element, key, instance) { 2480 if (!elementMap.has(element)) {
2481 elementMap.set(element, /* @__PURE__ */ new Map()); 2482 } 2483 const instanceMap = elementMap.get(element); 2484 if (!instanceMap.has(key) && instanceMap.size !== 0) { 2485 console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`); 2486 return; 2487 } 2488 instanceMap.set(key, instance); 2489 }, 2490 get(element, key) { 2491 if (elementMap.has(element)) { 2492 return elementMap.get(element).get(key) || null; 2493 } 2494 return null; 2495 }, 2496 remove(element, key) { 2497 if (!elementMap.has(element)) { 2498 return; 2499 } 2500 const instanceMap = elementMap.get(element); 2501 instanceMap.delete(key); 2502 if (instanceMap.size === 0) { 2503 elementMap.delete(element); 2504 } 2505 } 2506 }; 2507 2508 // ns-hugo-imp:/home/ubuntu/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/[email protected]+incompatible/js/src/util/index.js 2509 var MILLISECONDS_MULTIPLIER = 1e3; 2510 var TRANSITION_END = "transitionend"; 2511 var parseSelector = (selector) => { 2512 if (selector && window.CSS && window.CSS.escape) { 2513 selector = selector.replace(/#([^\s"#']+)/g, (match, id) => `#${CSS.escape(id)}`); 2514 } 2515 return selector; 2516 }; 2517 var toType = (object) => { 2518 if (object === null || object === void 0) { 2519 return `${object}`; 2520 } 2521 return Object.prototype.toString.call(object).match(/\s([a-z]+)/i)[1].toLowerCase(); 2522 }; 2523 var getTransitionDurationFromElement = (element) => { 2524 if (!element) { 2525 return 0; 2526 } 2527 let { transitionDuration, transitionDelay } = window.getComputedStyle(element); 2528 const floatTransitionDuration = Number.parseFloat(transitionDuration); 2529 const floatTransitionDelay = Number.parseFloat(transitionDelay); 2530 if (!floatTransitionDuration && !floatTransitionDelay) { 2531 return 0; 2532 } 2533 transitionDuration = transitionDuration.split(",")[0]; 2534 transitionDelay = transitionDelay.split(",")[0]; 2535 return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER; 2536 }; 2537 var triggerTransitionEnd = (element) => { 2538 element.dispatchEvent(new Event(TRANSITION_END)); 2539 }; 2540 var isElement = (object) => { 2541 if (!object || typeof object !== "object") { 2542 return false; 2543 } 2544 if (typeof object.jquery !== "undefined") { 2545 object = object[0]; 2546 } 2547 return typeof object.nodeType !== "undefined"; 2548 }; 2549 var getElement = (object) => { 2550 if (isElement(object)) { 2551 return object.jquery ? object[0] : object; 2552 } 2553 if (typeof object === "string" && object.length > 0) { 2554 return document.querySelector(parseSelector(object)); 2555 } 2556 return null; 2557 }; 2558 var isVisible = (element) => { 2559 if (!isElement(element) || element.getClientRects().length === 0) { 2560 return false; 2561 } 2562 const elementIsVisible = getComputedStyle(element).getPropertyValue("visibility") === "visible"; 2563 const closedDetails = element.closest("details:not([open])"); 2564 if (!closedDetails) { 2565 return elementIsVisible; 2566 } 2567 if (closedDetails !== element) { 2568 const summary = element.closest("summary"); 2569 if (summary && summary.parentNode !== closedDetails) { 2570 return false; 2571 } 2572 if (summary === null) { 2573 return false; 2574 } 2575 } 2576 return elementIsVisible; 2577 }; 2578 var isDisabled = (element) => { 2579 if (!element || element.nodeType !== Node.ELEMENT_NODE) { 2580 return true; 2581 } 2582 if (element.classList.contains("disabled")) { 2583 return true; 2584 } 2585 if (typeof element.disabled !== "undefined") { 2586 return element.disabled; 2587 } 2588 return element.hasAttribute("disabled") && element.getAttribute("disabled") !== "false"; 2589 }; 2590 var noop = () => { 2591 }; 2592 var reflow = (element) => { 2593 element.offsetHeight; 2594 }; 2595 var getjQuery = () => { 2596 if (window.jQuery && !document.body.hasAttribute("data-bs-no-jquery")) { 2597 return window.jQuery; 2598 } 2599 return null; 2600 }; 2601 var DOMContentLoadedCallbacks = []; 2602 var onDOMContentLoaded = (callback) => { 2603 if (document.readyState === "loading") { 2604 if (!DOMContentLoadedCallbacks.length) { 2605 document.addEventListener("DOMContentLoaded", () => { 2606 for (const callback2 of DOMContentLoadedCallbacks) { 2607 callback2(); 2608 } 2609 }); 2610 } 2611 DOMContentLoadedCallbacks.push(callback); 2612 } else { 2613 callback(); 2614 } 2615 }; 2616 var isRTL = () => document.documentElement.dir === "rtl"; 2617 var defineJQueryPlugin = (plugin) => { 2618 onDOMContentLoaded(() => { 2619 const $ = getjQuery(); 2620 if ($) { 2621 const name = plugin.NAME; 2622 const JQUERY_NO_CONFLICT = $.fn[name]; 2623 $.fn[name] = plugin.jQueryInterface; 2624 $.fn[name].Constructor = plugin; 2625 $.fn[name].noConflict = () => { 2626 $.fn[name] = JQUERY_NO_CONFLICT; 2627 return plugin.jQueryInterface; 2628 }; 2629 } 2630 }); 2631 }; 2632 var execute = (possibleCallback, args = [], defaultValue = possibleCallback) => { 2633 return typeof possibleCallback === "function" ? possibleCallback(...args) : defaultValue; 2634 }; 2635 var executeAfterTransition = (callback, transitionElement, waitForTransition = true) => { 2636 if (!waitForTransition) { 2637 execute(callback); 2638 return; 2639 } 2640 const durationPadding = 5; 2641 const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;
vendor: 13,102 bytes, lines 2642-3022
2642 let called = false; 2643 const handler = ({ target }) => { 2644 if (target !== transitionElement) { 2645 return; 2646 } 2647 called = true; 2648 transitionElement.removeEventListener(TRANSITION_END, handler); 2649 execute(callback); 2650 }; 2651 transitionElement.addEventListener(TRANSITION_END, handler); 2652 setTimeout(() => { 2653 if (!called) { 2654 triggerTransitionEnd(transitionElement); 2655 } 2656 }, emulatedDuration); 2657 }; 2658 var getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => { 2659 const listLength = list.length; 2660 let index = list.indexOf(activeElement); 2661 if (index === -1) { 2662 return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]; 2663 } 2664 index += shouldGetNext ? 1 : -1; 2665 if (isCycleAllowed) { 2666 index = (index + listLength) % listLength; 2667 } 2668 return list[Math.max(0, Math.min(index, listLength - 1))]; 2669 }; 2670 2671 // ns-hugo-imp:/home/ubuntu/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/[email protected]+incompatible/js/src/dom/event-handler.js 2672 var namespaceRegex = /[^.]*(?=\..*)\.|.*/; 2673 var stripNameRegex = /\..*/; 2674 var stripUidRegex = /::\d+$/; 2675 var eventRegistry = {}; 2676 var uidEvent = 1; 2677 var customEvents = { 2678 mouseenter: "mouseover", 2679 mouseleave: "mouseout" 2680 }; 2681 var nativeEvents = /* @__PURE__ */ new Set([ 2682 "click", 2683 "dblclick", 2684 "mouseup", 2685 "mousedown", 2686 "contextmenu", 2687 "mousewheel", 2688 "DOMMouseScroll", 2689 "mouseover", 2690 "mouseout", 2691 "mousemove", 2692 "selectstart", 2693 "selectend", 2694 "keydown", 2695 "keypress", 2696 "keyup", 2697 "orientationchange", 2698 "touchstart", 2699 "touchmove", 2700 "touchend", 2701 "touchcancel", 2702 "pointerdown", 2703 "pointermove", 2704 "pointerup", 2705 "pointerleave", 2706 "pointercancel", 2707 "gesturestart", 2708 "gesturechange", 2709 "gestureend", 2710 "focus", 2711 "blur", 2712 "change", 2713 "reset", 2714 "select", 2715 "submit", 2716 "focusin", 2717 "focusout", 2718 "load", 2719 "unload", 2720 "beforeunload", 2721 "resize", 2722 "move", 2723 "DOMContentLoaded", 2724 "readystatechange", 2725 "error", 2726 "abort", 2727 "scroll" 2728 ]); 2729 function makeEventUid(element, uid) { 2730 return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++; 2731 } 2732 function getElementEvents(element) { 2733 const uid = makeEventUid(element); 2734 element.uidEvent = uid; 2735 eventRegistry[uid] = eventRegistry[uid] || {}; 2736 return eventRegistry[uid]; 2737 } 2738 function bootstrapHandler(element, fn) { 2739 return function handler(event) { 2740 hydrateObj(event, { delegateTarget: element }); 2741 if (handler.oneOff) { 2742 EventHandler.off(element, event.type, fn); 2743 } 2744 return fn.apply(element, [event]); 2745 }; 2746 } 2747 function bootstrapDelegationHandler(element, selector, fn) { 2748 return function handler(event) { 2749 const domElements = element.querySelectorAll(selector); 2750 for (let { target } = event; target && target !== this; target = target.parentNode) { 2751 for (const domElement of domElements) { 2752 if (domElement !== target) { 2753 continue; 2754 } 2755 hydrateObj(event, { delegateTarget: target }); 2756 if (handler.oneOff) { 2757 EventHandler.off(element, event.type, selector, fn); 2758 } 2759 return fn.apply(target, [event]); 2760 } 2761 } 2762 }; 2763 } 2764 function findHandler(events, callable, delegationSelector = null) { 2765 return Object.values(events).find((event) => event.callable === callable && event.delegationSelector === delegationSelector); 2766 } 2767 function normalizeParameters(originalTypeEvent, handler, delegationFunction) { 2768 const isDelegated = typeof handler === "string"; 2769 const callable = isDelegated ? delegationFunction : handler || delegationFunction; 2770 let typeEvent = getTypeEvent(originalTypeEvent); 2771 if (!nativeEvents.has(typeEvent)) { 2772 typeEvent = originalTypeEvent; 2773 } 2774 return [isDelegated, callable, typeEvent]; 2775 } 2776 function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) { 2777 if (typeof originalTypeEvent !== "string" || !element) { 2778 return; 2779 } 2780 let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); 2781 if (originalTypeEvent in customEvents) { 2782 const wrapFunction = (fn2) => { 2783 return function(event) { 2784 if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) { 2785 return fn2.call(this, event); 2786 } 2787 }; 2788 }; 2789 callable = wrapFunction(callable); 2790 } 2791 const events = getElementEvents(element); 2792 const handlers = events[typeEvent] || (events[typeEvent] = {}); 2793 const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null); 2794 if (previousFunction) { 2795 previousFunction.oneOff = previousFunction.oneOff && oneOff; 2796 return; 2797 } 2798 const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, "")); 2799 const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable); 2800 fn.delegationSelector = isDelegated ? handler : null; 2801 fn.callable = callable; 2802 fn.oneOff = oneOff; 2803 fn.uidEvent = uid; 2804 handlers[uid] = fn; 2805 element.addEventListener(typeEvent, fn, isDelegated); 2806 } 2807 function removeHandler(element, events, typeEvent, handler, delegationSelector) { 2808 const fn = findHandler(events[typeEvent], handler, delegationSelector); 2809 if (!fn) { 2810 return; 2811 } 2812 element.removeEventListener(typeEvent, fn, Boolean(delegationSelector)); 2813 delete events[typeEvent][fn.uidEvent]; 2814 } 2815 function removeNamespacedHandlers(element, events, typeEvent, namespace) { 2816 const storeElementEvent = events[typeEvent] || {}; 2817 for (const [handlerKey, event] of Object.entries(storeElementEvent)) { 2818 if (handlerKey.includes(namespace)) { 2819 removeHandler(element, events, typeEvent, event.callable, event.delegationSelector); 2820 } 2821 } 2822 } 2823 function getTypeEvent(event) { 2824 event = event.replace(stripNameRegex, ""); 2825 return customEvents[event] || event; 2826 } 2827 var EventHandler = { 2828 on(element, event, handler, delegationFunction) { 2829 addHandler(element, event, handler, delegationFunction, false); 2830 }, 2831 one(element, event, handler, delegationFunction) { 2832 addHandler(element, event, handler, delegationFunction, true); 2833 }, 2834 off(element, originalTypeEvent, handler, delegationFunction) { 2835 if (typeof originalTypeEvent !== "string" || !element) { 2836 return; 2837 } 2838 const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); 2839 const inNamespace = typeEvent !== originalTypeEvent; 2840 const events = getElementEvents(element); 2841 const storeElementEvent = events[typeEvent] || {}; 2842 const isNamespace = originalTypeEvent.startsWith("."); 2843 if (typeof callable !== "undefined") { 2844 if (!Object.keys(storeElementEvent).length) { 2845 return; 2846 } 2847 removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null); 2848 return; 2849 } 2850 if (isNamespace) { 2851 for (const elementEvent of Object.keys(events)) { 2852 removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1)); 2853 } 2854 } 2855 for (const [keyHandlers, event] of Object.entries(storeElementEvent)) { 2856 const handlerKey = keyHandlers.replace(stripUidRegex, ""); 2857 if (!inNamespace || originalTypeEvent.includes(handlerKey)) { 2858 removeHandler(element, events, typeEvent, event.callable, event.delegationSelector); 2859 } 2860 } 2861 }, 2862 trigger(element, event, args) { 2863 if (typeof event !== "string" || !element) { 2864 return null; 2865 } 2866 const $ = getjQuery(); 2867 const typeEvent = getTypeEvent(event); 2868 const inNamespace = event !== typeEvent; 2869 let jQueryEvent = null; 2870 let bubbles = true; 2871 let nativeDispatch = true; 2872 let defaultPrevented = false; 2873 if (inNamespace && $) { 2874 jQueryEvent = $.Event(event, args); 2875 $(element).trigger(jQueryEvent); 2876 bubbles = !jQueryEvent.isPropagationStopped(); 2877 nativeDispatch = !jQueryEvent.isImmediatePropagationStopped(); 2878 defaultPrevented = jQueryEvent.isDefaultPrevented(); 2879 } 2880 const evt = hydrateObj(new Event(event, { bubbles, cancelable: true }), args); 2881 if (defaultPrevented) { 2882 evt.preventDefault(); 2883 } 2884 if (nativeDispatch) { 2885 element.dispatchEvent(evt); 2886 } 2887 if (evt.defaultPrevented && jQueryEvent) { 2888 jQueryEvent.preventDefault(); 2889 } 2890 return evt; 2891 } 2892 }; 2893 function hydrateObj(obj, meta = {}) { 2894 for (const [key, value] of Object.entries(meta)) { 2895 try { 2896 obj[key] = value; 2897 } catch (e) { 2898 Object.defineProperty(obj, key, { 2899 configurable: true, 2900 get() { 2901 return value; 2902 } 2903 }); 2904 } 2905 } 2906 return obj; 2907 } 2908 var event_handler_default = EventHandler; 2909 2910 // ns-hugo-imp:/home/ubuntu/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/[email protected]+incompatible/js/src/dom/manipulator.js 2911 function normalizeData(value) { 2912 if (value === "true") { 2913 return true; 2914 } 2915 if (value === "false") { 2916 return false; 2917 } 2918 if (value === Number(value).toString()) { 2919 return Number(value); 2920 } 2921 if (value === "" || value === "null") { 2922 return null; 2923 } 2924 if (typeof value !== "string") { 2925 return value; 2926 } 2927 try { 2928 return JSON.parse(decodeURIComponent(value)); 2929 } catch (e) { 2930 return value; 2931 } 2932 } 2933 function normalizeDataKey(key) { 2934 return key.replace(/[A-Z]/g, (chr) => `-${chr.toLowerCase()}`); 2935 } 2936 var Manipulator = { 2937 setDataAttribute(element, key, value) { 2938 element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value); 2939 }, 2940 removeDataAttribute(element, key) { 2941 element.removeAttribute(`data-bs-${normalizeDataKey(key)}`); 2942 }, 2943 getDataAttributes(element) { 2944 if (!element) { 2945 return {}; 2946 } 2947 const attributes = {}; 2948 const bsKeys = Object.keys(element.dataset).filter((key) => key.startsWith("bs") && !key.startsWith("bsConfig")); 2949 for (const key of bsKeys) { 2950 let pureKey = key.replace(/^bs/, ""); 2951 pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length); 2952 attributes[pureKey] = normalizeData(element.dataset[key]); 2953 } 2954 return attributes; 2955 }, 2956 getDataAttribute(element, key) { 2957 return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`)); 2958 } 2959 }; 2960 var manipulator_default = Manipulator; 2961 2962 // ns-hugo-imp:/home/ubuntu/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/[email protected]+incompatible/js/src/util/config.js 2963 var Config = class { 2964 // Getters 2965 static get Default() { 2966 return {}; 2967 } 2968 static get DefaultType() { 2969 return {}; 2970 } 2971 static get NAME() { 2972 throw new Error('You have to implement the static method "NAME", for each component!'); 2973 } 2974 _getConfig(config) { 2975 config = this._mergeConfigObj(config); 2976 config = this._configAfterMerge(config); 2977 this._typeCheckConfig(config); 2978 return config; 2979 } 2980 _configAfterMerge(config) { 2981 return config; 2982 } 2983 _mergeConfigObj(config, element) { 2984 const jsonConfig = isElement(element) ? manipulator_default.getDataAttribute(element, "config") : {}; 2985 return { 2986 ...this.constructor.Default, 2987 ...typeof jsonConfig === "object" ? jsonConfig : {}, 2988 ...isElement(element) ? manipulator_default.getDataAttributes(element) : {}, 2989 ...typeof config === "object" ? config : {} 2990 }; 2991 } 2992 _typeCheckConfig(config, configTypes = this.constructor.DefaultType) { 2993 for (const [property, expectedTypes] of Object.entries(configTypes)) { 2994 const value = config[property]; 2995 const valueType = isElement(value) ? "element" : toType(value); 2996 if (!new RegExp(expectedTypes).test(valueType)) { 2997 throw new TypeError( 2998 `${this.constructor.NAME.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".` 2999 ); 3000 } 3001 } 3002 } 3003 }; 3004 var config_default = Config; 3005 3006 // ns-hugo-imp:/home/ubuntu/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/[email protected]+incompatible/js/src/base-component.js 3007 var VERSION = "5.3.2"; 3008 var BaseComponent = class extends config_default { 3009 constructor(element, config) { 3010 super(); 3011 element = getElement(element); 3012 if (!element) { 3013 return; 3014 } 3015 this._element = element; 3016 this._config = this._getConfig(config); 3017 data_default.set(this._element, this.constructor.DATA_KEY, this); 3018 } 3019 // Public 3020 dispose() { 3021 data_default.remove(this._element, this.constructor.DATA_KEY); 3022 event_handler_default.off(this._element, this.constructor.EVENT_KEY);
3023 for (const propertyName of Object.getOwnPropertyNames(this)) { 3024 this[propertyName] = null; 3025 } 3026 } 3027 _queueCallback(callback, element, isAnimated = true) { 3028 executeAfterTransition(callback, element, isAnimated); 3029 } 3030 _getConfig(config) { 3031 config = this._mergeConfigObj(config, this._element); 3032 config = this._configAfterMerge(config); 3033 this._typeCheckConfig(config); 3034 return config; 3035 } 3036 // Static 3037 static getInstance(element) { 3038 return data_default.get(getElement(element), this.DATA_KEY); 3039 } 3040 static getOrCreateInstance(element, config = {}) { 3041 return this.getInstance(element) || new this(element, typeof config === "object" ? config : null); 3042 } 3043 static get VERSION() { 3044 return VERSION; 3045 } 3046 static get DATA_KEY() { 3047 return `bs.${this.NAME}`; 3048 } 3049 static get EVENT_KEY() { 3050 return `.${this.DATA_KEY}`; 3051 } 3052 static eventName(name) { 3053 return `${name}${this.EVENT_KEY}`; 3054 } 3055 }; 3056 var base_component_default = BaseComponent; 3057 3058 // ns-hugo-imp:/home/ubuntu/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/[email protected]+incompatible/js/src/dom/selector-engine.js 3059 var getSelector = (element) => { 3060 let selector = element.getAttribute("data-bs-target"); 3061 if (!selector || selector === "#") { 3062 let hrefAttribute = element.getAttribute("href"); 3063 if (!hrefAttribute || !hrefAttribute.includes("#") && !hrefAttribute.startsWith(".")) { 3064 return null; 3065 } 3066 if (hrefAttribute.includes("#") && !hrefAttribute.startsWith("#")) { 3067 hrefAttribute = `#${hrefAttribute.split("#")[1]}`; 3068 } 3069 selector = hrefAttribute && hrefAttribute !== "#" ? parseSelector(hrefAttribute.trim()) : null; 3070 } 3071 return selector; 3072 }; 3073 var SelectorEngine = { 3074 find(selector, element = document.documentElement) { 3075 return [].concat(...Element.prototype.querySelectorAll.call(element, selector)); 3076 }, 3077 findOne(selector, element = document.documentElement) { 3078 return Element.prototype.querySelector.call(element, selector); 3079 }, 3080 children(element, selector) { 3081 return [].concat(...element.children).filter((child) => child.matches(selector)); 3082 }, 3083 parents(element, selector) { 3084 const parents = []; 3085 let ancestor = element.parentNode.closest(selector); 3086 while (ancestor) { 3087 parents.push(ancestor); 3088 ancestor = ancestor.parentNode.closest(selector); 3089 } 3090 return parents; 3091 }, 3092 prev(element, selector) { 3093 let previous = element.previousElementSibling; 3094 while (previous) { 3095 if (previous.matches(selector)) { 3096 return [previous]; 3097 } 3098 previous = previous.previousElementSibling; 3099 } 3100 return []; 3101 }, 3102 // TODO: this is now unused; remove later along with prev() 3103 next(element, selector) { 3104 let next = element.nextElementSibling; 3105 while (next) { 3106 if (next.matches(selector)) { 3107 return [next]; 3108 } 3109 next = next.nextElementSibling; 3110 } 3111 return []; 3112 }, 3113 focusableChildren(element) { 3114 const focusables = [ 3115 "a", 3116 "button", 3117 "input", 3118 "textarea", 3119 "select", 3120 "details", 3121 "[tabindex]", 3122 '[contenteditable="true"]' 3123 ].map((selector) => `${selector}:not([tabindex^="-"])`).join(","); 3124 return this.find(focusables, element).filter((el) => !isDisabled(el) && isVisible(el)); 3125 }, 3126 getSelectorFromElement(element) { 3127 const selector = getSelector(element); 3128 if (selector) { 3129 return SelectorEngine.findOne(selector) ? selector : null; 3130 } 3131 return null; 3132 }, 3133 getElementFromSelector(element) { 3134 const selector = getSelector(element); 3135 return selector ? SelectorEngine.findOne(selector) : null; 3136 }, 3137 getMultipleElementsFromSelector(element) { 3138 const selector = getSelector(element); 3139 return selector ? SelectorEngine.find(selector) : []; 3140 } 3141 }; 3142 var selector_engine_default = SelectorEngine; 3143 3144 // ns-hugo-imp:/home/ubuntu/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/[email protected]+incompatible/js/src/collapse.js 3145 var NAME = "collapse"; 3146 var DATA_KEY = "bs.collapse"; 3147 var EVENT_KEY = `.${DATA_KEY}`; 3148 var DATA_API_KEY = ".data-api"; 3149 var EVENT_SHOW = `show${EVENT_KEY}`; 3150 var EVENT_SHOWN = `shown${EVENT_KEY}`; 3151 var EVENT_HIDE = `hide${EVENT_KEY}`; 3152 var EVENT_HIDDEN = `hidden${EVENT_KEY}`; 3153 var EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`; 3154 var CLASS_NAME_SHOW = "show"; 3155 var CLASS_NAME_COLLAPSE = "collapse"; 3156 var CLASS_NAME_COLLAPSING = "collapsing"; 3157 var CLASS_NAME_COLLAPSED = "collapsed"; 3158 var CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`; 3159 var CLASS_NAME_HORIZONTAL = "collapse-horizontal"; 3160 var WIDTH = "width"; 3161 var HEIGHT = "height"; 3162 var SELECTOR_ACTIVES = ".collapse.show, .collapse.collapsing"; 3163 var SELECTOR_DATA_TOGGLE = '[data-bs-toggle="collapse"]'; 3164 var Default = { 3165 parent: null, 3166 toggle: true 3167 }; 3168 var DefaultType = { 3169 parent: "(null|element)", 3170 toggle: "boolean" 3171 }; 3172 var Collapse = class _Collapse extends base_component_default { 3173 constructor(element, config) { 3174 super(element, config); 3175 this._isTransitioning = false;
vendor: 5,359 bytes, lines 3176-3317
3176 this._triggerArray = []; 3177 const toggleList = selector_engine_default.find(SELECTOR_DATA_TOGGLE); 3178 for (const elem of toggleList) { 3179 const selector = selector_engine_default.getSelectorFromElement(elem); 3180 const filterElement = selector_engine_default.find(selector).filter((foundElement) => foundElement === this._element); 3181 if (selector !== null && filterElement.length) { 3182 this._triggerArray.push(elem); 3183 } 3184 } 3185 this._initializeChildren(); 3186 if (!this._config.parent) { 3187 this._addAriaAndCollapsedClass(this._triggerArray, this._isShown()); 3188 } 3189 if (this._config.toggle) { 3190 this.toggle(); 3191 } 3192 } 3193 // Getters 3194 static get Default() { 3195 return Default; 3196 } 3197 static get DefaultType() { 3198 return DefaultType; 3199 } 3200 static get NAME() { 3201 return NAME; 3202 } 3203 // Public 3204 toggle() { 3205 if (this._isShown()) { 3206 this.hide(); 3207 } else { 3208 this.show(); 3209 } 3210 } 3211 show() { 3212 if (this._isTransitioning || this._isShown()) { 3213 return; 3214 } 3215 let activeChildren = []; 3216 if (this._config.parent) { 3217 activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter((element) => element !== this._element).map((element) => _Collapse.getOrCreateInstance(element, { toggle: false })); 3218 } 3219 if (activeChildren.length && activeChildren[0]._isTransitioning) { 3220 return; 3221 } 3222 const startEvent = event_handler_default.trigger(this._element, EVENT_SHOW); 3223 if (startEvent.defaultPrevented) { 3224 return; 3225 } 3226 for (const activeInstance of activeChildren) { 3227 activeInstance.hide(); 3228 } 3229 const dimension = this._getDimension(); 3230 this._element.classList.remove(CLASS_NAME_COLLAPSE); 3231 this._element.classList.add(CLASS_NAME_COLLAPSING); 3232 this._element.style[dimension] = 0; 3233 this._addAriaAndCollapsedClass(this._triggerArray, true); 3234 this._isTransitioning = true; 3235 const complete = () => { 3236 this._isTransitioning = false; 3237 this._element.classList.remove(CLASS_NAME_COLLAPSING); 3238 this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW); 3239 this._element.style[dimension] = ""; 3240 event_handler_default.trigger(this._element, EVENT_SHOWN); 3241 }; 3242 const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); 3243 const scrollSize = `scroll${capitalizedDimension}`; 3244 this._queueCallback(complete, this._element, true); 3245 this._element.style[dimension] = `${this._element[scrollSize]}px`; 3246 } 3247 hide() { 3248 if (this._isTransitioning || !this._isShown()) { 3249 return; 3250 } 3251 const startEvent = event_handler_default.trigger(this._element, EVENT_HIDE); 3252 if (startEvent.defaultPrevented) { 3253 return; 3254 } 3255 const dimension = this._getDimension(); 3256 this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`; 3257 reflow(this._element); 3258 this._element.classList.add(CLASS_NAME_COLLAPSING); 3259 this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW); 3260 for (const trigger of this._triggerArray) { 3261 const element = selector_engine_default.getElementFromSelector(trigger); 3262 if (element && !this._isShown(element)) { 3263 this._addAriaAndCollapsedClass([trigger], false); 3264 } 3265 } 3266 this._isTransitioning = true; 3267 const complete = () => { 3268 this._isTransitioning = false; 3269 this._element.classList.remove(CLASS_NAME_COLLAPSING); 3270 this._element.classList.add(CLASS_NAME_COLLAPSE); 3271 event_handler_default.trigger(this._element, EVENT_HIDDEN); 3272 }; 3273 this._element.style[dimension] = ""; 3274 this._queueCallback(complete, this._element, true); 3275 } 3276 _isShown(element = this._element) { 3277 return element.classList.contains(CLASS_NAME_SHOW); 3278 } 3279 // Private 3280 _configAfterMerge(config) { 3281 config.toggle = Boolean(config.toggle); 3282 config.parent = getElement(config.parent); 3283 return config; 3284 } 3285 _getDimension() { 3286 return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT; 3287 } 3288 _initializeChildren() { 3289 if (!this._config.parent) { 3290 return; 3291 } 3292 const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE); 3293 for (const element of children) { 3294 const selected = selector_engine_default.getElementFromSelector(element); 3295 if (selected) { 3296 this._addAriaAndCollapsedClass([element], this._isShown(selected)); 3297 } 3298 } 3299 } 3300 _getFirstLevelChildren(selector) { 3301 const children = selector_engine_default.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent); 3302 return selector_engine_default.find(selector, this._config.parent).filter((element) => !children.includes(element)); 3303 } 3304 _addAriaAndCollapsedClass(triggerArray, isOpen) { 3305 if (!triggerArray.length) { 3306 return; 3307 } 3308 for (const element of triggerArray) { 3309 element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen); 3310 element.setAttribute("aria-expanded", isOpen); 3311 } 3312 } 3313 // Static 3314 static jQueryInterface(config) { 3315 const _config = {}; 3316 if (typeof config === "string" && /show|hide/.test(config)) { 3317 _config.toggle = false;
3318 } 3319 return this.each(function() { 3320 const data = _Collapse.getOrCreateInstance(this, _config); 3321 if (typeof config === "string") { 3322 if (typeof data[config] === "undefined") { 3323 throw new TypeError(`No method named "${config}"`); 3324 } 3325 data[config](); 3326 } 3327 }); 3328 } 3329 }; 3330 event_handler_default.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function(event) { 3331 if (event.target.tagName === "A" || event.delegateTarget && event.delegateTarget.tagName === "A") { 3332 event.preventDefault(); 3333 } 3334 for (const element of selector_engine_default.getMultipleElementsFromSelector(this)) { 3335 Collapse.getOrCreateInstance(element, { toggle: false }).toggle(); 3336 } 3337 }); 3338 defineJQueryPlugin(Collapse); 3339 3340 // ns-hugo-imp:/home/ubuntu/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/[email protected]+incompatible/js/src/dropdown.js 3341 var Popper = __toESM(require_popper()); 3342 var NAME2 = "dropdown"; 3343 var DATA_KEY2 = "bs.dropdown"; 3344 var EVENT_KEY2 = `.${DATA_KEY2}`; 3345 var DATA_API_KEY2 = ".data-api"; 3346 var ESCAPE_KEY = "Escape"; 3347 var TAB_KEY = "Tab"; 3348 var ARROW_UP_KEY = "ArrowUp"; 3349 var ARROW_DOWN_KEY = "ArrowDown"; 3350 var RIGHT_MOUSE_BUTTON = 2; 3351 var EVENT_HIDE2 = `hide${EVENT_KEY2}`; 3352 var EVENT_HIDDEN2 = `hidden${EVENT_KEY2}`; 3353 var EVENT_SHOW2 = `show${EVENT_KEY2}`; 3354 var EVENT_SHOWN2 = `shown${EVENT_KEY2}`; 3355 var EVENT_CLICK_DATA_API2 = `click${EVENT_KEY2}${DATA_API_KEY2}`; 3356 var EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY2}${DATA_API_KEY2}`; 3357 var EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY2}${DATA_API_KEY2}`; 3358 var CLASS_NAME_SHOW2 = "show"; 3359 var CLASS_NAME_DROPUP = "dropup"; 3360 var CLASS_NAME_DROPEND = "dropend"; 3361 var CLASS_NAME_DROPSTART = "dropstart"; 3362 var CLASS_NAME_DROPUP_CENTER = "dropup-center"; 3363 var CLASS_NAME_DROPDOWN_CENTER = "dropdown-center"; 3364 var SELECTOR_DATA_TOGGLE2 = '[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)'; 3365 var SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE2}.${CLASS_NAME_SHOW2}`; 3366 var SELECTOR_MENU = ".dropdown-menu"; 3367 var SELECTOR_NAVBAR = ".navbar"; 3368 var SELECTOR_NAVBAR_NAV = ".navbar-nav"; 3369 var SELECTOR_VISIBLE_ITEMS = ".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)"; 3370 var PLACEMENT_TOP = isRTL() ? "top-end" : "top-start"; 3371 var PLACEMENT_TOPEND = isRTL() ? "top-start" : "top-end"; 3372 var PLACEMENT_BOTTOM = isRTL() ? "bottom-end" : "bottom-start"; 3373 var PLACEMENT_BOTTOMEND = isRTL() ? "bottom-start" : "bottom-end"; 3374 var PLACEMENT_RIGHT = isRTL() ? "left-start" : "right-start"; 3375 var PLACEMENT_LEFT = isRTL() ? "right-start" : "left-start"; 3376 var PLACEMENT_TOPCENTER = "top"; 3377 var PLACEMENT_BOTTOMCENTER = "bottom"; 3378 var Default2 = { 3379 autoClose: true, 3380 boundary: "clippingParents", 3381 display: "dynamic", 3382 offset: [0, 2], 3383 popperConfig: null, 3384 reference: "toggle" 3385 }; 3386 var DefaultType2 = { 3387 autoClose: "(boolean|string)", 3388 boundary: "(string|element)", 3389 display: "string", 3390 offset: "(array|string|function)", 3391 popperConfig: "(null|object|function)", 3392 reference: "(string|element|object)" 3393 }; 3394 var Dropdown = class _Dropdown extends base_component_default { 3395 constructor(element, config) { 3396 super(element, config); 3397 this._popper = null; 3398 this._parent = this._element.parentNode; 3399 this._menu = selector_engine_default.next(this._element, SELECTOR_MENU)[0] || selector_engine_default.prev(this._element, SELECTOR_MENU)[0] || selector_engine_default.findOne(SELECTOR_MENU, this._parent); 3400 this._inNavbar = this._detectNavbar(); 3401 } 3402 // Getters 3403 static get Default() { 3404 return Default2; 3405 } 3406 static get DefaultType() { 3407 return DefaultType2; 3408 } 3409 static get NAME() { 3410 return NAME2; 3411 } 3412 // Public 3413 toggle() { 3414 return this._isShown() ? this.hide() : this.show(); 3415 } 3416 show() { 3417 if (isDisabled(this._element) || this._isShown()) { 3418 return; 3419 } 3420 const relatedTarget = { 3421 relatedTarget: this._element 3422 }; 3423 const showEvent = event_handler_default.trigger(this._element, EVENT_SHOW2, relatedTarget); 3424 if (showEvent.defaultPrevented) { 3425 return; 3426 } 3427 this._createPopper(); 3428 if ("ontouchstart" in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) { 3429 for (const element of [].concat(...document.body.children)) {
vendor: 4,227 bytes, lines 3430-3544
3430 event_handler_default.on(element, "mouseover", noop); 3431 } 3432 } 3433 this._element.focus(); 3434 this._element.setAttribute("aria-expanded", true); 3435 this._menu.classList.add(CLASS_NAME_SHOW2); 3436 this._element.classList.add(CLASS_NAME_SHOW2); 3437 event_handler_default.trigger(this._element, EVENT_SHOWN2, relatedTarget); 3438 } 3439 hide() { 3440 if (isDisabled(this._element) || !this._isShown()) { 3441 return; 3442 } 3443 const relatedTarget = { 3444 relatedTarget: this._element 3445 }; 3446 this._completeHide(relatedTarget); 3447 } 3448 dispose() { 3449 if (this._popper) { 3450 this._popper.destroy(); 3451 } 3452 super.dispose(); 3453 } 3454 update() { 3455 this._inNavbar = this._detectNavbar(); 3456 if (this._popper) { 3457 this._popper.update(); 3458 } 3459 } 3460 // Private 3461 _completeHide(relatedTarget) { 3462 const hideEvent = event_handler_default.trigger(this._element, EVENT_HIDE2, relatedTarget); 3463 if (hideEvent.defaultPrevented) { 3464 return; 3465 } 3466 if ("ontouchstart" in document.documentElement) { 3467 for (const element of [].concat(...document.body.children)) { 3468 event_handler_default.off(element, "mouseover", noop); 3469 } 3470 } 3471 if (this._popper) { 3472 this._popper.destroy(); 3473 } 3474 this._menu.classList.remove(CLASS_NAME_SHOW2); 3475 this._element.classList.remove(CLASS_NAME_SHOW2); 3476 this._element.setAttribute("aria-expanded", "false"); 3477 manipulator_default.removeDataAttribute(this._menu, "popper"); 3478 event_handler_default.trigger(this._element, EVENT_HIDDEN2, relatedTarget); 3479 } 3480 _getConfig(config) { 3481 config = super._getConfig(config); 3482 if (typeof config.reference === "object" && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== "function") { 3483 throw new TypeError(`${NAME2.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`); 3484 } 3485 return config; 3486 } 3487 _createPopper() { 3488 if (typeof Popper === "undefined") { 3489 throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)"); 3490 } 3491 let referenceElement = this._element; 3492 if (this._config.reference === "parent") { 3493 referenceElement = this._parent; 3494 } else if (isElement(this._config.reference)) { 3495 referenceElement = getElement(this._config.reference); 3496 } else if (typeof this._config.reference === "object") { 3497 referenceElement = this._config.reference; 3498 } 3499 const popperConfig = this._getPopperConfig(); 3500 this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig); 3501 } 3502 _isShown() { 3503 return this._menu.classList.contains(CLASS_NAME_SHOW2); 3504 } 3505 _getPlacement() { 3506 const parentDropdown = this._parent; 3507 if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) { 3508 return PLACEMENT_RIGHT; 3509 } 3510 if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) { 3511 return PLACEMENT_LEFT; 3512 } 3513 if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) { 3514 return PLACEMENT_TOPCENTER; 3515 } 3516 if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) { 3517 return PLACEMENT_BOTTOMCENTER; 3518 } 3519 const isEnd = getComputedStyle(this._menu).getPropertyValue("--bs-position").trim() === "end"; 3520 if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) { 3521 return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP; 3522 } 3523 return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM; 3524 } 3525 _detectNavbar() { 3526 return this._element.closest(SELECTOR_NAVBAR) !== null; 3527 } 3528 _getOffset() { 3529 const { offset } = this._config; 3530 if (typeof offset === "string") { 3531 return offset.split(",").map((value) => Number.parseInt(value, 10)); 3532 } 3533 if (typeof offset === "function") { 3534 return (popperData) => offset(popperData, this._element); 3535 } 3536 return offset; 3537 } 3538 _getPopperConfig() { 3539 const defaultBsPopperConfig = { 3540 placement: this._getPlacement(), 3541 modifiers: [ 3542 { 3543 name: "preventOverflow", 3544 options: {
vendor: 2,541 bytes, lines 3545-3613
3545 boundary: this._config.boundary 3546 } 3547 }, 3548 { 3549 name: "offset", 3550 options: { 3551 offset: this._getOffset() 3552 } 3553 } 3554 ] 3555 }; 3556 if (this._inNavbar || this._config.display === "static") { 3557 manipulator_default.setDataAttribute(this._menu, "popper", "static"); 3558 defaultBsPopperConfig.modifiers = [{ 3559 name: "applyStyles", 3560 enabled: false 3561 }]; 3562 } 3563 return { 3564 ...defaultBsPopperConfig, 3565 ...execute(this._config.popperConfig, [defaultBsPopperConfig]) 3566 }; 3567 } 3568 _selectMenuItem({ key, target }) { 3569 const items = selector_engine_default.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter((element) => isVisible(element)); 3570 if (!items.length) { 3571 return; 3572 } 3573 getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus(); 3574 } 3575 // Static 3576 static jQueryInterface(config) { 3577 return this.each(function() { 3578 const data = _Dropdown.getOrCreateInstance(this, config); 3579 if (typeof config !== "string") { 3580 return; 3581 } 3582 if (typeof data[config] === "undefined") { 3583 throw new TypeError(`No method named "${config}"`); 3584 } 3585 data[config](); 3586 }); 3587 } 3588 static clearMenus(event) { 3589 if (event.button === RIGHT_MOUSE_BUTTON || event.type === "keyup" && event.key !== TAB_KEY) { 3590 return; 3591 } 3592 const openToggles = selector_engine_default.find(SELECTOR_DATA_TOGGLE_SHOWN); 3593 for (const toggle of openToggles) { 3594 const context = _Dropdown.getInstance(toggle); 3595 if (!context || context._config.autoClose === false) { 3596 continue; 3597 } 3598 const composedPath = event.composedPath(); 3599 const isMenuTarget = composedPath.includes(context._menu); 3600 if (composedPath.includes(context._element) || context._config.autoClose === "inside" && !isMenuTarget || context._config.autoClose === "outside" && isMenuTarget) { 3601 continue; 3602 } 3603 if (context._menu.contains(event.target) && (event.type === "keyup" && event.key === TAB_KEY || /input|select|option|textarea|form/i.test(event.target.tagName))) { 3604 continue; 3605 } 3606 const relatedTarget = { relatedTarget: context._element }; 3607 if (event.type === "click") { 3608 relatedTarget.clickEvent = event; 3609 } 3610 context._completeHide(relatedTarget); 3611 } 3612 } 3613 static dataApiKeydownHandler(event) {
vendor: 6,173 bytes, lines 3614-3794
3614 const isInput = /input|textarea/i.test(event.target.tagName); 3615 const isEscapeEvent = event.key === ESCAPE_KEY; 3616 const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key); 3617 if (!isUpOrDownEvent && !isEscapeEvent) { 3618 return; 3619 } 3620 if (isInput && !isEscapeEvent) { 3621 return; 3622 } 3623 event.preventDefault(); 3624 const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE2) ? this : selector_engine_default.prev(this, SELECTOR_DATA_TOGGLE2)[0] || selector_engine_default.next(this, SELECTOR_DATA_TOGGLE2)[0] || selector_engine_default.findOne(SELECTOR_DATA_TOGGLE2, event.delegateTarget.parentNode); 3625 const instance = _Dropdown.getOrCreateInstance(getToggleButton); 3626 if (isUpOrDownEvent) { 3627 event.stopPropagation(); 3628 instance.show(); 3629 instance._selectMenuItem(event); 3630 return; 3631 } 3632 if (instance._isShown()) { 3633 event.stopPropagation(); 3634 instance.hide(); 3635 getToggleButton.focus(); 3636 } 3637 } 3638 }; 3639 event_handler_default.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE2, Dropdown.dataApiKeydownHandler); 3640 event_handler_default.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler); 3641 event_handler_default.on(document, EVENT_CLICK_DATA_API2, Dropdown.clearMenus); 3642 event_handler_default.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus); 3643 event_handler_default.on(document, EVENT_CLICK_DATA_API2, SELECTOR_DATA_TOGGLE2, function(event) { 3644 event.preventDefault(); 3645 Dropdown.getOrCreateInstance(this).toggle(); 3646 }); 3647 defineJQueryPlugin(Dropdown); 3648 3649 // ns-hugo-imp:/home/ubuntu/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/[email protected]+incompatible/js/src/util/backdrop.js 3650 var NAME3 = "backdrop"; 3651 var CLASS_NAME_FADE = "fade"; 3652 var CLASS_NAME_SHOW3 = "show"; 3653 var EVENT_MOUSEDOWN = `mousedown.bs.${NAME3}`; 3654 var Default3 = { 3655 className: "modal-backdrop", 3656 clickCallback: null, 3657 isAnimated: false, 3658 isVisible: true, 3659 // if false, we use the backdrop helper without adding any element to the dom 3660 rootElement: "body" 3661 // give the choice to place backdrop under different elements 3662 }; 3663 var DefaultType3 = { 3664 className: "string", 3665 clickCallback: "(function|null)", 3666 isAnimated: "boolean", 3667 isVisible: "boolean", 3668 rootElement: "(element|string)" 3669 }; 3670 var Backdrop = class extends config_default { 3671 constructor(config) { 3672 super(); 3673 this._config = this._getConfig(config); 3674 this._isAppended = false; 3675 this._element = null; 3676 } 3677 // Getters 3678 static get Default() { 3679 return Default3; 3680 } 3681 static get DefaultType() { 3682 return DefaultType3; 3683 } 3684 static get NAME() { 3685 return NAME3; 3686 } 3687 // Public 3688 show(callback) { 3689 if (!this._config.isVisible) { 3690 execute(callback); 3691 return; 3692 } 3693 this._append(); 3694 const element = this._getElement(); 3695 if (this._config.isAnimated) { 3696 reflow(element); 3697 } 3698 element.classList.add(CLASS_NAME_SHOW3); 3699 this._emulateAnimation(() => { 3700 execute(callback); 3701 }); 3702 } 3703 hide(callback) { 3704 if (!this._config.isVisible) { 3705 execute(callback); 3706 return; 3707 } 3708 this._getElement().classList.remove(CLASS_NAME_SHOW3); 3709 this._emulateAnimation(() => { 3710 this.dispose(); 3711 execute(callback); 3712 }); 3713 } 3714 dispose() { 3715 if (!this._isAppended) { 3716 return; 3717 } 3718 event_handler_default.off(this._element, EVENT_MOUSEDOWN); 3719 this._element.remove(); 3720 this._isAppended = false; 3721 } 3722 // Private 3723 _getElement() { 3724 if (!this._element) { 3725 const backdrop = document.createElement("div"); 3726 backdrop.className = this._config.className; 3727 if (this._config.isAnimated) { 3728 backdrop.classList.add(CLASS_NAME_FADE); 3729 } 3730 this._element = backdrop; 3731 } 3732 return this._element; 3733 } 3734 _configAfterMerge(config) { 3735 config.rootElement = getElement(config.rootElement); 3736 return config; 3737 } 3738 _append() { 3739 if (this._isAppended) { 3740 return; 3741 } 3742 const element = this._getElement(); 3743 this._config.rootElement.append(element); 3744 event_handler_default.on(element, EVENT_MOUSEDOWN, () => { 3745 execute(this._config.clickCallback); 3746 }); 3747 this._isAppended = true; 3748 } 3749 _emulateAnimation(callback) { 3750 executeAfterTransition(callback, this._getElement(), this._config.isAnimated); 3751 } 3752 }; 3753 var backdrop_default = Backdrop; 3754 3755 // ns-hugo-imp:/home/ubuntu/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/[email protected]+incompatible/js/src/util/component-functions.js 3756 var enableDismissTrigger = (component, method = "hide") => { 3757 const clickEvent = `click.dismiss${component.EVENT_KEY}`; 3758 const name = component.NAME; 3759 event_handler_default.on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function(event) { 3760 if (["A", "AREA"].includes(this.tagName)) { 3761 event.preventDefault(); 3762 } 3763 if (isDisabled(this)) { 3764 return; 3765 } 3766 const target = selector_engine_default.getElementFromSelector(this) || this.closest(`.${name}`); 3767 const instance = component.getOrCreateInstance(target); 3768 instance[method](); 3769 }); 3770 }; 3771 3772 // ns-hugo-imp:/home/ubuntu/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/[email protected]+incompatible/js/src/util/focustrap.js 3773 var NAME4 = "focustrap"; 3774 var DATA_KEY3 = "bs.focustrap"; 3775 var EVENT_KEY3 = `.${DATA_KEY3}`; 3776 var EVENT_FOCUSIN = `focusin${EVENT_KEY3}`; 3777 var EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY3}`; 3778 var TAB_KEY2 = "Tab"; 3779 var TAB_NAV_FORWARD = "forward"; 3780 var TAB_NAV_BACKWARD = "backward"; 3781 var Default4 = { 3782 autofocus: true, 3783 trapElement: null 3784 // The element to trap focus inside of 3785 }; 3786 var DefaultType4 = { 3787 autofocus: "boolean", 3788 trapElement: "element" 3789 }; 3790 var FocusTrap = class extends config_default { 3791 constructor(config) { 3792 super(); 3793 this._config = this._getConfig(config); 3794 this._isActive = false;
3795 this._lastTabNavDirection = null; 3796 } 3797 // Getters 3798 static get Default() { 3799 return Default4; 3800 } 3801 static get DefaultType() { 3802 return DefaultType4; 3803 } 3804 static get NAME() { 3805 return NAME4; 3806 } 3807 // Public 3808 activate() { 3809 if (this._isActive) { 3810 return; 3811 } 3812 if (this._config.autofocus) { 3813 this._config.trapElement.focus(); 3814 } 3815 event_handler_default.off(document, EVENT_KEY3); 3816 event_handler_default.on(document, EVENT_FOCUSIN, (event) => this._handleFocusin(event)); 3817 event_handler_default.on(document, EVENT_KEYDOWN_TAB, (event) => this._handleKeydown(event)); 3818 this._isActive = true; 3819 } 3820 deactivate() { 3821 if (!this._isActive) { 3822 return; 3823 } 3824 this._isActive = false; 3825 event_handler_default.off(document, EVENT_KEY3); 3826 } 3827 // Private 3828 _handleFocusin(event) { 3829 const { trapElement } = this._config; 3830 if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) { 3831 return; 3832 } 3833 const elements = selector_engine_default.focusableChildren(trapElement); 3834 if (elements.length === 0) { 3835 trapElement.focus(); 3836 } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) { 3837 elements[elements.length - 1].focus(); 3838 } else { 3839 elements[0].focus(); 3840 } 3841 } 3842 _handleKeydown(event) { 3843 if (event.key !== TAB_KEY2) { 3844 return; 3845 } 3846 this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD; 3847 } 3848 }; 3849 var focustrap_default = FocusTrap; 3850 3851 // ns-hugo-imp:/home/ubuntu/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/[email protected]+incompatible/js/src/util/scrollbar.js 3852 var SELECTOR_FIXED_CONTENT = ".fixed-top, .fixed-bottom, .is-fixed, .sticky-top"; 3853 var SELECTOR_STICKY_CONTENT = ".sticky-top"; 3854 var PROPERTY_PADDING = "padding-right"; 3855 var PROPERTY_MARGIN = "margin-right"; 3856 var ScrollBarHelper = class { 3857 constructor() { 3858 this._element = document.body; 3859 } 3860 // Public 3861 getWidth() { 3862 const documentWidth = document.documentElement.clientWidth; 3863 return Math.abs(window.innerWidth - documentWidth); 3864 } 3865 hide() { 3866 const width = this.getWidth(); 3867 this._disableOverFlow(); 3868 this._setElementAttributes(this._element, PROPERTY_PADDING, (calculatedValue) => calculatedValue + width); 3869 this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, (calculatedValue) => calculatedValue + width); 3870 this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, (calculatedValue) => calculatedValue - width); 3871 } 3872 reset() { 3873 this._resetElementAttributes(this._element, "overflow"); 3874 this._resetElementAttributes(this._element, PROPERTY_PADDING); 3875 this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING); 3876 this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN); 3877 } 3878 isOverflowing() { 3879 return this.getWidth() > 0; 3880 } 3881 // Private 3882 _disableOverFlow() { 3883 this._saveInitialAttribute(this._element, "overflow"); 3884 this._element.style.overflow = "hidden"; 3885 } 3886 _setElementAttributes(selector, styleProperty, callback) { 3887 const scrollbarWidth = this.getWidth(); 3888 const manipulationCallBack = (element) => { 3889 if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) { 3890 return; 3891 } 3892 this._saveInitialAttribute(element, styleProperty); 3893 const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty); 3894 element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`); 3895 }; 3896 this._applyManipulationCallback(selector, manipulationCallBack); 3897 } 3898 _saveInitialAttribute(element, styleProperty) { 3899 const actualValue = element.style.getPropertyValue(styleProperty); 3900 if (actualValue) { 3901 manipulator_default.setDataAttribute(element, styleProperty, actualValue); 3902 } 3903 } 3904 _resetElementAttributes(selector, styleProperty) { 3905 const manipulationCallBack = (element) => { 3906 const value = manipulator_default.getDataAttribute(element, styleProperty); 3907 if (value === null) { 3908 element.style.removeProperty(styleProperty); 3909 return; 3910 } 3911 manipulator_default.removeDataAttribute(element, styleProperty); 3912 element.style.setProperty(styleProperty, value); 3913 }; 3914 this._applyManipulationCallback(selector, manipulationCallBack); 3915 } 3916 _applyManipulationCallback(selector, callBack) { 3917 if (isElement(selector)) { 3918 callBack(selector); 3919 return; 3920 } 3921 for (const sel of selector_engine_default.find(selector, this._element)) { 3922 callBack(sel); 3923 } 3924 } 3925 }; 3926 var scrollbar_default = ScrollBarHelper; 3927 3928 // ns-hugo-imp:/home/ubuntu/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/[email protected]+incompatible/js/src/modal.js 3929 var NAME5 = "modal"; 3930 var DATA_KEY4 = "bs.modal"; 3931 var EVENT_KEY4 = `.${DATA_KEY4}`; 3932 var DATA_API_KEY3 = ".data-api"; 3933 var ESCAPE_KEY2 = "Escape"; 3934 var EVENT_HIDE3 = `hide${EVENT_KEY4}`; 3935 var EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY4}`; 3936 var EVENT_HIDDEN3 = `hidden${EVENT_KEY4}`; 3937 var EVENT_SHOW3 = `show${EVENT_KEY4}`; 3938 var EVENT_SHOWN3 = `shown${EVENT_KEY4}`; 3939 var EVENT_RESIZE = `resize${EVENT_KEY4}`; 3940 var EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY4}`; 3941 var EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY4}`; 3942 var EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY4}`; 3943 var EVENT_CLICK_DATA_API3 = `click${EVENT_KEY4}${DATA_API_KEY3}`;
vendor: 14,925 bytes, lines 3944-4348
3944 var CLASS_NAME_OPEN = "modal-open"; 3945 var CLASS_NAME_FADE2 = "fade"; 3946 var CLASS_NAME_SHOW4 = "show"; 3947 var CLASS_NAME_STATIC = "modal-static"; 3948 var OPEN_SELECTOR = ".modal.show"; 3949 var SELECTOR_DIALOG = ".modal-dialog"; 3950 var SELECTOR_MODAL_BODY = ".modal-body"; 3951 var SELECTOR_DATA_TOGGLE3 = '[data-bs-toggle="modal"]'; 3952 var Default5 = { 3953 backdrop: true, 3954 focus: true, 3955 keyboard: true 3956 }; 3957 var DefaultType5 = { 3958 backdrop: "(boolean|string)", 3959 focus: "boolean", 3960 keyboard: "boolean" 3961 }; 3962 var Modal = class _Modal extends base_component_default { 3963 constructor(element, config) { 3964 super(element, config); 3965 this._dialog = selector_engine_default.findOne(SELECTOR_DIALOG, this._element); 3966 this._backdrop = this._initializeBackDrop(); 3967 this._focustrap = this._initializeFocusTrap(); 3968 this._isShown = false; 3969 this._isTransitioning = false; 3970 this._scrollBar = new scrollbar_default(); 3971 this._addEventListeners(); 3972 } 3973 // Getters 3974 static get Default() { 3975 return Default5; 3976 } 3977 static get DefaultType() { 3978 return DefaultType5; 3979 } 3980 static get NAME() { 3981 return NAME5; 3982 } 3983 // Public 3984 toggle(relatedTarget) { 3985 return this._isShown ? this.hide() : this.show(relatedTarget); 3986 } 3987 show(relatedTarget) { 3988 if (this._isShown || this._isTransitioning) { 3989 return; 3990 } 3991 const showEvent = event_handler_default.trigger(this._element, EVENT_SHOW3, { 3992 relatedTarget 3993 }); 3994 if (showEvent.defaultPrevented) { 3995 return; 3996 } 3997 this._isShown = true; 3998 this._isTransitioning = true; 3999 this._scrollBar.hide(); 4000 document.body.classList.add(CLASS_NAME_OPEN); 4001 this._adjustDialog(); 4002 this._backdrop.show(() => this._showElement(relatedTarget)); 4003 } 4004 hide() { 4005 if (!this._isShown || this._isTransitioning) { 4006 return; 4007 } 4008 const hideEvent = event_handler_default.trigger(this._element, EVENT_HIDE3); 4009 if (hideEvent.defaultPrevented) { 4010 return; 4011 } 4012 this._isShown = false; 4013 this._isTransitioning = true; 4014 this._focustrap.deactivate(); 4015 this._element.classList.remove(CLASS_NAME_SHOW4); 4016 this._queueCallback(() => this._hideModal(), this._element, this._isAnimated()); 4017 } 4018 dispose() { 4019 event_handler_default.off(window, EVENT_KEY4); 4020 event_handler_default.off(this._dialog, EVENT_KEY4); 4021 this._backdrop.dispose(); 4022 this._focustrap.deactivate(); 4023 super.dispose(); 4024 } 4025 handleUpdate() { 4026 this._adjustDialog(); 4027 } 4028 // Private 4029 _initializeBackDrop() { 4030 return new backdrop_default({ 4031 isVisible: Boolean(this._config.backdrop), 4032 // 'static' option will be translated to true, and booleans will keep their value, 4033 isAnimated: this._isAnimated() 4034 }); 4035 } 4036 _initializeFocusTrap() { 4037 return new focustrap_default({ 4038 trapElement: this._element 4039 }); 4040 } 4041 _showElement(relatedTarget) { 4042 if (!document.body.contains(this._element)) { 4043 document.body.append(this._element); 4044 } 4045 this._element.style.display = "block"; 4046 this._element.removeAttribute("aria-hidden"); 4047 this._element.setAttribute("aria-modal", true); 4048 this._element.setAttribute("role", "dialog"); 4049 this._element.scrollTop = 0; 4050 const modalBody = selector_engine_default.findOne(SELECTOR_MODAL_BODY, this._dialog); 4051 if (modalBody) { 4052 modalBody.scrollTop = 0; 4053 } 4054 reflow(this._element); 4055 this._element.classList.add(CLASS_NAME_SHOW4); 4056 const transitionComplete = () => { 4057 if (this._config.focus) { 4058 this._focustrap.activate(); 4059 } 4060 this._isTransitioning = false; 4061 event_handler_default.trigger(this._element, EVENT_SHOWN3, { 4062 relatedTarget 4063 }); 4064 }; 4065 this._queueCallback(transitionComplete, this._dialog, this._isAnimated()); 4066 } 4067 _addEventListeners() { 4068 event_handler_default.on(this._element, EVENT_KEYDOWN_DISMISS, (event) => { 4069 if (event.key !== ESCAPE_KEY2) { 4070 return; 4071 } 4072 if (this._config.keyboard) { 4073 this.hide(); 4074 return; 4075 } 4076 this._triggerBackdropTransition(); 4077 }); 4078 event_handler_default.on(window, EVENT_RESIZE, () => { 4079 if (this._isShown && !this._isTransitioning) { 4080 this._adjustDialog(); 4081 } 4082 }); 4083 event_handler_default.on(this._element, EVENT_MOUSEDOWN_DISMISS, (event) => { 4084 event_handler_default.one(this._element, EVENT_CLICK_DISMISS, (event2) => { 4085 if (this._element !== event.target || this._element !== event2.target) { 4086 return; 4087 } 4088 if (this._config.backdrop === "static") { 4089 this._triggerBackdropTransition(); 4090 return; 4091 } 4092 if (this._config.backdrop) { 4093 this.hide(); 4094 } 4095 }); 4096 }); 4097 } 4098 _hideModal() { 4099 this._element.style.display = "none"; 4100 this._element.setAttribute("aria-hidden", true); 4101 this._element.removeAttribute("aria-modal"); 4102 this._element.removeAttribute("role"); 4103 this._isTransitioning = false; 4104 this._backdrop.hide(() => { 4105 document.body.classList.remove(CLASS_NAME_OPEN); 4106 this._resetAdjustments(); 4107 this._scrollBar.reset(); 4108 event_handler_default.trigger(this._element, EVENT_HIDDEN3); 4109 }); 4110 } 4111 _isAnimated() { 4112 return this._element.classList.contains(CLASS_NAME_FADE2); 4113 } 4114 _triggerBackdropTransition() { 4115 const hideEvent = event_handler_default.trigger(this._element, EVENT_HIDE_PREVENTED); 4116 if (hideEvent.defaultPrevented) { 4117 return; 4118 } 4119 const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; 4120 const initialOverflowY = this._element.style.overflowY; 4121 if (initialOverflowY === "hidden" || this._element.classList.contains(CLASS_NAME_STATIC)) { 4122 return; 4123 } 4124 if (!isModalOverflowing) { 4125 this._element.style.overflowY = "hidden"; 4126 } 4127 this._element.classList.add(CLASS_NAME_STATIC); 4128 this._queueCallback(() => { 4129 this._element.classList.remove(CLASS_NAME_STATIC); 4130 this._queueCallback(() => { 4131 this._element.style.overflowY = initialOverflowY; 4132 }, this._dialog); 4133 }, this._dialog); 4134 this._element.focus(); 4135 } 4136 /** 4137 * The following methods are used to handle overflowing modals 4138 */ 4139 _adjustDialog() { 4140 const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; 4141 const scrollbarWidth = this._scrollBar.getWidth(); 4142 const isBodyOverflowing = scrollbarWidth > 0; 4143 if (isBodyOverflowing && !isModalOverflowing) { 4144 const property = isRTL() ? "paddingLeft" : "paddingRight"; 4145 this._element.style[property] = `${scrollbarWidth}px`; 4146 } 4147 if (!isBodyOverflowing && isModalOverflowing) { 4148 const property = isRTL() ? "paddingRight" : "paddingLeft"; 4149 this._element.style[property] = `${scrollbarWidth}px`; 4150 } 4151 } 4152 _resetAdjustments() { 4153 this._element.style.paddingLeft = ""; 4154 this._element.style.paddingRight = ""; 4155 } 4156 // Static 4157 static jQueryInterface(config, relatedTarget) { 4158 return this.each(function() { 4159 const data = _Modal.getOrCreateInstance(this, config); 4160 if (typeof config !== "string") { 4161 return; 4162 } 4163 if (typeof data[config] === "undefined") { 4164 throw new TypeError(`No method named "${config}"`); 4165 } 4166 data[config](relatedTarget); 4167 }); 4168 } 4169 }; 4170 event_handler_default.on(document, EVENT_CLICK_DATA_API3, SELECTOR_DATA_TOGGLE3, function(event) { 4171 const target = selector_engine_default.getElementFromSelector(this); 4172 if (["A", "AREA"].includes(this.tagName)) { 4173 event.preventDefault(); 4174 } 4175 event_handler_default.one(target, EVENT_SHOW3, (showEvent) => { 4176 if (showEvent.defaultPrevented) { 4177 return; 4178 } 4179 event_handler_default.one(target, EVENT_HIDDEN3, () => { 4180 if (isVisible(this)) { 4181 this.focus(); 4182 } 4183 }); 4184 }); 4185 const alreadyOpen = selector_engine_default.findOne(OPEN_SELECTOR); 4186 if (alreadyOpen) { 4187 Modal.getInstance(alreadyOpen).hide(); 4188 } 4189 const data = Modal.getOrCreateInstance(target); 4190 data.toggle(this); 4191 }); 4192 enableDismissTrigger(Modal); 4193 defineJQueryPlugin(Modal); 4194 4195 // ns-hugo-imp:/home/ubuntu/.cache/hugo_cache/modules/filecache/modules/pkg/mod/github.com/twbs/[email protected]+incompatible/js/src/tab.js 4196 var NAME6 = "tab"; 4197 var DATA_KEY5 = "bs.tab"; 4198 var EVENT_KEY5 = `.${DATA_KEY5}`; 4199 var EVENT_HIDE4 = `hide${EVENT_KEY5}`; 4200 var EVENT_HIDDEN4 = `hidden${EVENT_KEY5}`; 4201 var EVENT_SHOW4 = `show${EVENT_KEY5}`; 4202 var EVENT_SHOWN4 = `shown${EVENT_KEY5}`; 4203 var EVENT_CLICK_DATA_API4 = `click${EVENT_KEY5}`; 4204 var EVENT_KEYDOWN = `keydown${EVENT_KEY5}`; 4205 var EVENT_LOAD_DATA_API = `load${EVENT_KEY5}`; 4206 var ARROW_LEFT_KEY = "ArrowLeft"; 4207 var ARROW_RIGHT_KEY = "ArrowRight"; 4208 var ARROW_UP_KEY2 = "ArrowUp"; 4209 var ARROW_DOWN_KEY2 = "ArrowDown"; 4210 var HOME_KEY = "Home"; 4211 var END_KEY = "End"; 4212 var CLASS_NAME_ACTIVE = "active"; 4213 var CLASS_NAME_FADE3 = "fade"; 4214 var CLASS_NAME_SHOW5 = "show"; 4215 var CLASS_DROPDOWN = "dropdown"; 4216 var SELECTOR_DROPDOWN_TOGGLE = ".dropdown-toggle"; 4217 var SELECTOR_DROPDOWN_MENU = ".dropdown-menu"; 4218 var NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`; 4219 var SELECTOR_TAB_PANEL = '.list-group, .nav, [role="tablist"]'; 4220 var SELECTOR_OUTER = ".nav-item, .list-group-item"; 4221 var SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role="tab"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`; 4222 var SELECTOR_DATA_TOGGLE4 = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]'; 4223 var SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE4}`; 4224 var SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle="tab"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="pill"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="list"]`; 4225 var Tab = class _Tab extends base_component_default { 4226 constructor(element) { 4227 super(element); 4228 this._parent = this._element.closest(SELECTOR_TAB_PANEL); 4229 if (!this._parent) { 4230 return; 4231 } 4232 this._setInitialAttributes(this._parent, this._getChildren()); 4233 event_handler_default.on(this._element, EVENT_KEYDOWN, (event) => this._keydown(event)); 4234 } 4235 // Getters 4236 static get NAME() { 4237 return NAME6; 4238 } 4239 // Public 4240 show() { 4241 const innerElem = this._element; 4242 if (this._elemIsActive(innerElem)) { 4243 return; 4244 } 4245 const active = this._getActiveElem(); 4246 const hideEvent = active ? event_handler_default.trigger(active, EVENT_HIDE4, { relatedTarget: innerElem }) : null; 4247 const showEvent = event_handler_default.trigger(innerElem, EVENT_SHOW4, { relatedTarget: active }); 4248 if (showEvent.defaultPrevented || hideEvent && hideEvent.defaultPrevented) { 4249 return; 4250 } 4251 this._deactivate(active, innerElem); 4252 this._activate(innerElem, active); 4253 } 4254 // Private 4255 _activate(element, relatedElem) { 4256 if (!element) { 4257 return; 4258 } 4259 element.classList.add(CLASS_NAME_ACTIVE); 4260 this._activate(selector_engine_default.getElementFromSelector(element)); 4261 const complete = () => { 4262 if (element.getAttribute("role") !== "tab") { 4263 element.classList.add(CLASS_NAME_SHOW5); 4264 return; 4265 } 4266 element.removeAttribute("tabindex"); 4267 element.setAttribute("aria-selected", true); 4268 this._toggleDropDown(element, true); 4269 event_handler_default.trigger(element, EVENT_SHOWN4, { 4270 relatedTarget: relatedElem 4271 }); 4272 }; 4273 this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE3)); 4274 } 4275 _deactivate(element, relatedElem) { 4276 if (!element) { 4277 return; 4278 } 4279 element.classList.remove(CLASS_NAME_ACTIVE); 4280 element.blur(); 4281 this._deactivate(selector_engine_default.getElementFromSelector(element)); 4282 const complete = () => { 4283 if (element.getAttribute("role") !== "tab") { 4284 element.classList.remove(CLASS_NAME_SHOW5); 4285 return; 4286 } 4287 element.setAttribute("aria-selected", false); 4288 element.setAttribute("tabindex", "-1"); 4289 this._toggleDropDown(element, false); 4290 event_handler_default.trigger(element, EVENT_HIDDEN4, { relatedTarget: relatedElem }); 4291 }; 4292 this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE3)); 4293 } 4294 _keydown(event) { 4295 if (![ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY2, ARROW_DOWN_KEY2, HOME_KEY, END_KEY].includes(event.key)) { 4296 return; 4297 } 4298 event.stopPropagation(); 4299 event.preventDefault(); 4300 const children = this._getChildren().filter((element) => !isDisabled(element)); 4301 let nextActiveElement; 4302 if ([HOME_KEY, END_KEY].includes(event.key)) { 4303 nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1]; 4304 } else { 4305 const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY2].includes(event.key); 4306 nextActiveElement = getNextActiveElement(children, event.target, isNext, true); 4307 } 4308 if (nextActiveElement) { 4309 nextActiveElement.focus({ preventScroll: true }); 4310 _Tab.getOrCreateInstance(nextActiveElement).show(); 4311 } 4312 } 4313 _getChildren() { 4314 return selector_engine_default.find(SELECTOR_INNER_ELEM, this._parent); 4315 } 4316 _getActiveElem() { 4317 return this._getChildren().find((child) => this._elemIsActive(child)) || null; 4318 } 4319 _setInitialAttributes(parent, children) { 4320 this._setAttributeIfNotExists(parent, "role", "tablist"); 4321 for (const child of children) { 4322 this._setInitialAttributesOnChild(child); 4323 } 4324 } 4325 _setInitialAttributesOnChild(child) { 4326 child = this._getInnerElement(child); 4327 const isActive = this._elemIsActive(child); 4328 const outerElem = this._getOuterElement(child); 4329 child.setAttribute("aria-selected", isActive); 4330 if (outerElem !== child) { 4331 this._setAttributeIfNotExists(outerElem, "role", "presentation"); 4332 } 4333 if (!isActive) { 4334 child.setAttribute("tabindex", "-1"); 4335 } 4336 this._setAttributeIfNotExists(child, "role", "tab"); 4337 this._setInitialAttributesOnTargetPanel(child); 4338 } 4339 _setInitialAttributesOnTargetPanel(child) { 4340 const target = selector_engine_default.getElementFromSelector(child); 4341 if (!target) { 4342 return; 4343 } 4344 this._setAttributeIfNotExists(target, "role", "tabpanel"); 4345 if (child.id) { 4346 this._setAttributeIfNotExists(target, "aria-labelledby", `${child.id}`); 4347 } 4348 }
vendor: 2,132 bytes, lines 4349-4410
4349 _toggleDropDown(element, open) { 4350 const outerElem = this._getOuterElement(element); 4351 if (!outerElem.classList.contains(CLASS_DROPDOWN)) { 4352 return; 4353 } 4354 const toggle = (selector, className) => { 4355 const element2 = selector_engine_default.findOne(selector, outerElem); 4356 if (element2) { 4357 element2.classList.toggle(className, open); 4358 } 4359 }; 4360 toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE); 4361 toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW5); 4362 outerElem.setAttribute("aria-expanded", open); 4363 } 4364 _setAttributeIfNotExists(element, attribute, value) { 4365 if (!element.hasAttribute(attribute)) { 4366 element.setAttribute(attribute, value); 4367 } 4368 } 4369 _elemIsActive(elem) { 4370 return elem.classList.contains(CLASS_NAME_ACTIVE); 4371 } 4372 // Try to get the inner element (usually the .nav-link) 4373 _getInnerElement(elem) { 4374 return elem.matches(SELECTOR_INNER_ELEM) ? elem : selector_engine_default.findOne(SELECTOR_INNER_ELEM, elem); 4375 } 4376 // Try to get the outer element (usually the .nav-item) 4377 _getOuterElement(elem) { 4378 return elem.closest(SELECTOR_OUTER) || elem; 4379 } 4380 // Static 4381 static jQueryInterface(config) { 4382 return this.each(function() { 4383 const data = _Tab.getOrCreateInstance(this); 4384 if (typeof config !== "string") { 4385 return; 4386 } 4387 if (data[config] === void 0 || config.startsWith("_") || config === "constructor") { 4388 throw new TypeError(`No method named "${config}"`); 4389 } 4390 data[config](); 4391 }); 4392 } 4393 }; 4394 event_handler_default.on(document, EVENT_CLICK_DATA_API4, SELECTOR_DATA_TOGGLE4, function(event) { 4395 if (["A", "AREA"].includes(this.tagName)) { 4396 event.preventDefault(); 4397 } 4398 if (isDisabled(this)) { 4399 return; 4400 } 4401 Tab.getOrCreateInstance(this).show(); 4402 }); 4403 event_handler_default.on(window, EVENT_LOAD_DATA_API, () => { 4404 for (const element of selector_engine_default.find(SELECTOR_DATA_TOGGLE_ACTIVE)) { 4405 Tab.getOrCreateInstance(element); 4406 } 4407 }); 4408 defineJQueryPlugin(Tab); 4409})(); 4410</script>
4410 4411 4412 4413 4414 4415 4416 4417 4418 4419 4420 4421 4422 4423 4424 4425 4426 4427 4428 4429 4430 4431 4432 4433 4434 4435 4436 4437 4438 4439
4440<script 4441 crossorigin="anonymous" 4442 integrity="sha256-GPgIz79V/BDNsBSKZLOApH4OjmK6zL33KrXLfOba2po=" 4443 src="/js/scripts.min.18f808cfbf55fc10cdb0148a64b380a47e0e8e62baccbdf72ab5cb7ce6dada9a.js"></script>
4443 4444 4445 4446 4447 4448
4449<script type="application/javascript"> 4450 WebFont.load({ 4451 google: { 4452 api: 'https://fonts.googleapis.com/css2', 4453 families: ['Rubik:ital,wght@0,300..900;1,300..900','Rubik:ital,wght@0,300..900;1,300..900&display=swap'], 4454 version: 2 4455 }, 4456 active: () => {sessionStorage.fontsLoaded = true} 4457 }); 4458</script>
4458 4459 4460 4461
4462<script> 4463 if ('serviceWorker' in navigator){navigator.serviceWorker.register("/service-worker.js");} 4464</script>
4464 4465 4466 4467 4468 4469 4470 4471 4472 4473 4474</body> 4475 4476</html>
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.