From 14308b683d011a8a9924330018f178cbfcda1773 Mon Sep 17 00:00:00 2001 From: Taufik Nurrohman Date: Mon, 9 Dec 2024 09:34:01 +0700 Subject: [PATCH] Update --- about.page | 20 +- enter.php | 6 +- footer.php | 2 +- index.css | 413 +++-- index.js | 4904 +++++++++++++++++++++++-------------------------- index.min.css | 4 +- index.min.js | 8 +- index.php | 10 +- 8 files changed, 2580 insertions(+), 2787 deletions(-) diff --git a/about.page b/about.page index 064ea52..150099a 100755 --- a/about.page +++ b/about.page @@ -7,7 +7,23 @@ images: - /lot/y/clean-blog/index/1.png link: 'https://github.com/BlackrockDigital/startbootstrap-clean-blog' author: Taufik Nurrohman -version: 2.0.0 +version: 2.0.1 ... -A stylish, responsive blog theme for Bootstrap created by [Start Bootstrap](https://startbootstrap.com). \ No newline at end of file +A stylish, responsive blog theme for Bootstrap created by [Start Bootstrap](https://startbootstrap.com). + +### Usage + +Typical page data structure for this layout: + +~~~ .yaml +--- +title: Post Title +description: Post description. +author: Post Author +type: Markdown +cover: /image/2024/cover.jpg +... + +Post content. +~~~ \ No newline at end of file diff --git a/enter.php b/enter.php index 1611f3b..cc2c488 100755 --- a/enter.php +++ b/enter.php @@ -3,8 +3,8 @@ - description ?? $site->description)): ?> - + description ?? $site->description)): ?> + x): ?> @@ -14,7 +14,7 @@ <?= w($t->reverse->join(' - ')); ?> - + diff --git a/footer.php b/footer.php index 2b6b534..3e0a9f2 100755 --- a/footer.php +++ b/footer.php @@ -29,7 +29,7 @@
- © + © title; ?> year; ?> · Mecha ' . VERSION . '']); ?>
diff --git a/index.css b/index.css index ec77359..73cc038 100644 --- a/index.css +++ b/index.css @@ -1,4 +1,3 @@ -@charset "UTF-8"; /*! * Bootstrap v5.1.3 (https://getbootstrap.com/) * Copyright 2011-2021 The Bootstrap Authors @@ -1834,99 +1833,99 @@ progress { } .table-primary { - --bs-table-bg: #cce7ec; - --bs-table-striped-bg: #c2dbe0; + --bs-table-bg: rgb(204, 230.6, 236.2); + --bs-table-striped-bg: rgb(193.8, 219.07, 224.39); --bs-table-striped-color: #000; - --bs-table-active-bg: #b8d0d4; + --bs-table-active-bg: rgb(183.6, 207.54, 212.58); --bs-table-active-color: #000; - --bs-table-hover-bg: #bdd6da; + --bs-table-hover-bg: rgb(188.7, 213.305, 218.485); --bs-table-hover-color: #000; color: #000; - border-color: #b8d0d4; + border-color: rgb(183.6, 207.54, 212.58); } .table-secondary { - --bs-table-bg: #e2e3e5; - --bs-table-striped-bg: #d7d8da; + --bs-table-bg: rgb(225.6, 227.4, 229); + --bs-table-striped-bg: rgb(214.32, 216.03, 217.55); --bs-table-striped-color: #000; - --bs-table-active-bg: #cbccce; + --bs-table-active-bg: rgb(203.04, 204.66, 206.1); --bs-table-active-color: #000; - --bs-table-hover-bg: #d1d2d4; + --bs-table-hover-bg: rgb(208.68, 210.345, 211.825); --bs-table-hover-color: #000; color: #000; - border-color: #cbccce; + border-color: rgb(203.04, 204.66, 206.1); } .table-success { - --bs-table-bg: #d1e7dd; - --bs-table-striped-bg: #c7dbd2; + --bs-table-bg: rgb(209, 231, 220.8); + --bs-table-striped-bg: rgb(198.55, 219.45, 209.76); --bs-table-striped-color: #000; - --bs-table-active-bg: #bcd0c7; + --bs-table-active-bg: rgb(188.1, 207.9, 198.72); --bs-table-active-color: #000; - --bs-table-hover-bg: #c1d6cc; + --bs-table-hover-bg: rgb(193.325, 213.675, 204.24); --bs-table-hover-color: #000; color: #000; - border-color: #bcd0c7; + border-color: rgb(188.1, 207.9, 198.72); } .table-info { - --bs-table-bg: #cff4fc; - --bs-table-striped-bg: #c5e8ef; + --bs-table-bg: rgb(206.6, 244.4, 252); + --bs-table-striped-bg: rgb(196.27, 232.18, 239.4); --bs-table-striped-color: #000; - --bs-table-active-bg: #badce3; + --bs-table-active-bg: rgb(185.94, 219.96, 226.8); --bs-table-active-color: #000; - --bs-table-hover-bg: #bfe2e9; + --bs-table-hover-bg: rgb(191.105, 226.07, 233.1); --bs-table-hover-color: #000; color: #000; - border-color: #badce3; + border-color: rgb(185.94, 219.96, 226.8); } .table-warning { - --bs-table-bg: #fff3cd; - --bs-table-striped-bg: #f2e7c3; + --bs-table-bg: rgb(255, 242.6, 205.4); + --bs-table-striped-bg: rgb(242.25, 230.47, 195.13); --bs-table-striped-color: #000; - --bs-table-active-bg: #e6dbb9; + --bs-table-active-bg: rgb(229.5, 218.34, 184.86); --bs-table-active-color: #000; - --bs-table-hover-bg: #ece1be; + --bs-table-hover-bg: rgb(235.875, 224.405, 189.995); --bs-table-hover-color: #000; color: #000; - border-color: #e6dbb9; + border-color: rgb(229.5, 218.34, 184.86); } .table-danger { - --bs-table-bg: #f8d7da; - --bs-table-striped-bg: #eccccf; + --bs-table-bg: rgb(248, 214.6, 217.8); + --bs-table-striped-bg: rgb(235.6, 203.87, 206.91); --bs-table-striped-color: #000; - --bs-table-active-bg: #dfc2c4; + --bs-table-active-bg: rgb(223.2, 193.14, 196.02); --bs-table-active-color: #000; - --bs-table-hover-bg: #e5c7ca; + --bs-table-hover-bg: rgb(229.4, 198.505, 201.465); --bs-table-hover-color: #000; color: #000; - border-color: #dfc2c4; + border-color: rgb(223.2, 193.14, 196.02); } .table-light { --bs-table-bg: #f8f9fa; - --bs-table-striped-bg: #ecedee; + --bs-table-striped-bg: rgb(235.6, 236.55, 237.5); --bs-table-striped-color: #000; - --bs-table-active-bg: #dfe0e1; + --bs-table-active-bg: rgb(223.2, 224.1, 225); --bs-table-active-color: #000; - --bs-table-hover-bg: #e5e6e7; + --bs-table-hover-bg: rgb(229.4, 230.325, 231.25); --bs-table-hover-color: #000; color: #000; - border-color: #dfe0e1; + border-color: rgb(223.2, 224.1, 225); } .table-dark { --bs-table-bg: #212529; - --bs-table-striped-bg: #2c3034; + --bs-table-striped-bg: rgb(44.1, 47.9, 51.7); --bs-table-striped-color: #fff; - --bs-table-active-bg: #373b3e; + --bs-table-active-bg: rgb(55.2, 58.8, 62.4); --bs-table-active-color: #fff; - --bs-table-hover-bg: #323539; + --bs-table-hover-bg: rgb(49.65, 53.35, 57.05); --bs-table-hover-color: #fff; color: #fff; - border-color: #373b3e; + border-color: rgb(55.2, 58.8, 62.4); } .table-responsive { @@ -2023,7 +2022,7 @@ progress { .form-control:focus { color: #212529; background-color: #fff; - border-color: #80c2d0; + border-color: rgb(127.5, 194, 208); outline: 0; box-shadow: 0 0 0 0.25rem rgba(0, 133, 161, 0.25); } @@ -2059,7 +2058,7 @@ progress { } } .form-control:hover:not(:disabled):not([readonly])::file-selector-button { - background-color: #dde0e3; + background-color: rgb(221.35, 224.2, 227.05); } .form-control::-webkit-file-upload-button { padding: 0.375rem 0.75rem; @@ -2081,7 +2080,7 @@ progress { } } .form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button { - background-color: #dde0e3; + background-color: rgb(221.35, 224.2, 227.05); } .form-control-plaintext { @@ -2183,7 +2182,7 @@ textarea.form-control-lg { } } .form-select:focus { - border-color: #80c2d0; + border-color: rgb(127.5, 194, 208); outline: 0; box-shadow: 0 0 0 0.25rem rgba(0, 133, 161, 0.25); } @@ -2245,7 +2244,7 @@ textarea.form-control-lg { filter: brightness(90%); } .form-check-input:focus { - border-color: #80c2d0; + border-color: rgb(127.5, 194, 208); outline: 0; box-shadow: 0 0 0 0.25rem rgba(0, 133, 161, 0.25); } @@ -2290,7 +2289,7 @@ textarea.form-control-lg { } } .form-switch .form-check-input:focus { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2380c2d0'/%3e%3c/svg%3e"); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgb%28127.5, 194, 208%29'/%3e%3c/svg%3e"); } .form-switch .form-check-input:checked { background-position: right center; @@ -2348,7 +2347,7 @@ textarea.form-control-lg { } } .form-range::-webkit-slider-thumb:active { - background-color: #b3dae3; + background-color: rgb(178.5, 218.4, 226.8); } .form-range::-webkit-slider-runnable-track { width: 100%; @@ -2372,7 +2371,7 @@ textarea.form-control-lg { } } .form-range::-moz-range-thumb:active { - background-color: #b3dae3; + background-color: rgb(178.5, 218.4, 226.8); } .form-range::-moz-range-track { width: 100%; @@ -2759,15 +2758,15 @@ fieldset:disabled .btn { } .btn-primary:hover { color: #fff; - background-color: #007189; - border-color: #006a81; + background-color: rgb(0, 113.05, 136.85); + border-color: rgb(0, 106.4, 128.8); } .btn-check:focus + .btn-primary, .btn-primary:focus { color: #fff; - background-color: #007189; - border-color: #006a81; - box-shadow: 0 0 0 0.25rem rgba(38, 151, 175, 0.5); + background-color: rgb(0, 113.05, 136.85); + border-color: rgb(0, 106.4, 128.8); + box-shadow: 0 0 0 0.25rem rgba(38.25, 151.3, 175.1, 0.5); } .btn-check:checked + .btn-primary, .btn-check:active + .btn-primary, @@ -2775,15 +2774,15 @@ fieldset:disabled .btn { .btn-primary.active, .show > .btn-primary.dropdown-toggle { color: #fff; - background-color: #006a81; - border-color: #006479; + background-color: rgb(0, 106.4, 128.8); + border-color: rgb(0, 99.75, 120.75); } .btn-check:checked + .btn-primary:focus, .btn-check:active + .btn-primary:focus, .btn-primary:active:focus, .btn-primary.active:focus, .show > .btn-primary.dropdown-toggle:focus { - box-shadow: 0 0 0 0.25rem rgba(38, 151, 175, 0.5); + box-shadow: 0 0 0 0.25rem rgba(38.25, 151.3, 175.1, 0.5); } .btn-primary:disabled, .btn-primary.disabled { @@ -2799,15 +2798,15 @@ fieldset:disabled .btn { } .btn-secondary:hover { color: #fff; - background-color: #5c636a; - border-color: #565e64; + background-color: rgb(91.8, 99.45, 106.25); + border-color: rgb(86.4, 93.6, 100); } .btn-check:focus + .btn-secondary, .btn-secondary:focus { color: #fff; - background-color: #5c636a; - border-color: #565e64; - box-shadow: 0 0 0 0.25rem rgba(130, 138, 145, 0.5); + background-color: rgb(91.8, 99.45, 106.25); + border-color: rgb(86.4, 93.6, 100); + box-shadow: 0 0 0 0.25rem rgba(130.05, 137.7, 144.5, 0.5); } .btn-check:checked + .btn-secondary, .btn-check:active + .btn-secondary, @@ -2815,15 +2814,15 @@ fieldset:disabled .btn { .btn-secondary.active, .show > .btn-secondary.dropdown-toggle { color: #fff; - background-color: #565e64; - border-color: #51585e; + background-color: rgb(86.4, 93.6, 100); + border-color: rgb(81, 87.75, 93.75); } .btn-check:checked + .btn-secondary:focus, .btn-check:active + .btn-secondary:focus, .btn-secondary:active:focus, .btn-secondary.active:focus, .show > .btn-secondary.dropdown-toggle:focus { - box-shadow: 0 0 0 0.25rem rgba(130, 138, 145, 0.5); + box-shadow: 0 0 0 0.25rem rgba(130.05, 137.7, 144.5, 0.5); } .btn-secondary:disabled, .btn-secondary.disabled { @@ -2839,15 +2838,15 @@ fieldset:disabled .btn { } .btn-success:hover { color: #fff; - background-color: #157347; - border-color: #146c43; + background-color: rgb(21.25, 114.75, 71.4); + border-color: rgb(20, 108, 67.2); } .btn-check:focus + .btn-success, .btn-success:focus { color: #fff; - background-color: #157347; - border-color: #146c43; - box-shadow: 0 0 0 0.25rem rgba(60, 153, 110, 0.5); + background-color: rgb(21.25, 114.75, 71.4); + border-color: rgb(20, 108, 67.2); + box-shadow: 0 0 0 0.25rem rgba(59.5, 153, 109.65, 0.5); } .btn-check:checked + .btn-success, .btn-check:active + .btn-success, @@ -2855,15 +2854,15 @@ fieldset:disabled .btn { .btn-success.active, .show > .btn-success.dropdown-toggle { color: #fff; - background-color: #146c43; - border-color: #13653f; + background-color: rgb(20, 108, 67.2); + border-color: rgb(18.75, 101.25, 63); } .btn-check:checked + .btn-success:focus, .btn-check:active + .btn-success:focus, .btn-success:active:focus, .btn-success.active:focus, .show > .btn-success.dropdown-toggle:focus { - box-shadow: 0 0 0 0.25rem rgba(60, 153, 110, 0.5); + box-shadow: 0 0 0 0.25rem rgba(59.5, 153, 109.65, 0.5); } .btn-success:disabled, .btn-success.disabled { @@ -2879,15 +2878,15 @@ fieldset:disabled .btn { } .btn-info:hover { color: #000; - background-color: #31d2f2; - border-color: #25cff2; + background-color: rgb(49.3, 209.95, 242.25); + border-color: rgb(37.2, 207.3, 241.5); } .btn-check:focus + .btn-info, .btn-info:focus { color: #000; - background-color: #31d2f2; - border-color: #25cff2; - box-shadow: 0 0 0 0.25rem rgba(11, 172, 204, 0.5); + background-color: rgb(49.3, 209.95, 242.25); + border-color: rgb(37.2, 207.3, 241.5); + box-shadow: 0 0 0 0.25rem rgba(11.05, 171.7, 204, 0.5); } .btn-check:checked + .btn-info, .btn-check:active + .btn-info, @@ -2895,15 +2894,15 @@ fieldset:disabled .btn { .btn-info.active, .show > .btn-info.dropdown-toggle { color: #000; - background-color: #3dd5f3; - border-color: #25cff2; + background-color: rgb(61.4, 212.6, 243); + border-color: rgb(37.2, 207.3, 241.5); } .btn-check:checked + .btn-info:focus, .btn-check:active + .btn-info:focus, .btn-info:active:focus, .btn-info.active:focus, .show > .btn-info.dropdown-toggle:focus { - box-shadow: 0 0 0 0.25rem rgba(11, 172, 204, 0.5); + box-shadow: 0 0 0 0.25rem rgba(11.05, 171.7, 204, 0.5); } .btn-info:disabled, .btn-info.disabled { @@ -2919,15 +2918,15 @@ fieldset:disabled .btn { } .btn-warning:hover { color: #000; - background-color: #ffca2c; - border-color: #ffc720; + background-color: rgb(255, 202.3, 44.2); + border-color: rgb(255, 199.2, 31.8); } .btn-check:focus + .btn-warning, .btn-warning:focus { color: #000; - background-color: #ffca2c; - border-color: #ffc720; - box-shadow: 0 0 0 0.25rem rgba(217, 164, 6, 0.5); + background-color: rgb(255, 202.3, 44.2); + border-color: rgb(255, 199.2, 31.8); + box-shadow: 0 0 0 0.25rem rgba(216.75, 164.05, 5.95, 0.5); } .btn-check:checked + .btn-warning, .btn-check:active + .btn-warning, @@ -2935,15 +2934,15 @@ fieldset:disabled .btn { .btn-warning.active, .show > .btn-warning.dropdown-toggle { color: #000; - background-color: #ffcd39; - border-color: #ffc720; + background-color: rgb(255, 205.4, 56.6); + border-color: rgb(255, 199.2, 31.8); } .btn-check:checked + .btn-warning:focus, .btn-check:active + .btn-warning:focus, .btn-warning:active:focus, .btn-warning.active:focus, .show > .btn-warning.dropdown-toggle:focus { - box-shadow: 0 0 0 0.25rem rgba(217, 164, 6, 0.5); + box-shadow: 0 0 0 0.25rem rgba(216.75, 164.05, 5.95, 0.5); } .btn-warning:disabled, .btn-warning.disabled { @@ -2959,15 +2958,15 @@ fieldset:disabled .btn { } .btn-danger:hover { color: #fff; - background-color: #bb2d3b; - border-color: #b02a37; + background-color: rgb(187, 45.05, 58.65); + border-color: rgb(176, 42.4, 55.2); } .btn-check:focus + .btn-danger, .btn-danger:focus { color: #fff; - background-color: #bb2d3b; - border-color: #b02a37; - box-shadow: 0 0 0 0.25rem rgba(225, 83, 97, 0.5); + background-color: rgb(187, 45.05, 58.65); + border-color: rgb(176, 42.4, 55.2); + box-shadow: 0 0 0 0.25rem rgba(225.25, 83.3, 96.9, 0.5); } .btn-check:checked + .btn-danger, .btn-check:active + .btn-danger, @@ -2975,15 +2974,15 @@ fieldset:disabled .btn { .btn-danger.active, .show > .btn-danger.dropdown-toggle { color: #fff; - background-color: #b02a37; - border-color: #a52834; + background-color: rgb(176, 42.4, 55.2); + border-color: rgb(165, 39.75, 51.75); } .btn-check:checked + .btn-danger:focus, .btn-check:active + .btn-danger:focus, .btn-danger:active:focus, .btn-danger.active:focus, .show > .btn-danger.dropdown-toggle:focus { - box-shadow: 0 0 0 0.25rem rgba(225, 83, 97, 0.5); + box-shadow: 0 0 0 0.25rem rgba(225.25, 83.3, 96.9, 0.5); } .btn-danger:disabled, .btn-danger.disabled { @@ -2999,15 +2998,15 @@ fieldset:disabled .btn { } .btn-light:hover { color: #000; - background-color: #f9fafb; - border-color: #f9fafb; + background-color: rgb(249.05, 249.9, 250.75); + border-color: rgb(248.7, 249.6, 250.5); } .btn-check:focus + .btn-light, .btn-light:focus { color: #000; - background-color: #f9fafb; - border-color: #f9fafb; - box-shadow: 0 0 0 0.25rem rgba(211, 212, 213, 0.5); + background-color: rgb(249.05, 249.9, 250.75); + border-color: rgb(248.7, 249.6, 250.5); + box-shadow: 0 0 0 0.25rem rgba(210.8, 211.65, 212.5, 0.5); } .btn-check:checked + .btn-light, .btn-check:active + .btn-light, @@ -3015,15 +3014,15 @@ fieldset:disabled .btn { .btn-light.active, .show > .btn-light.dropdown-toggle { color: #000; - background-color: #f9fafb; - border-color: #f9fafb; + background-color: rgb(249.4, 250.2, 251); + border-color: rgb(248.7, 249.6, 250.5); } .btn-check:checked + .btn-light:focus, .btn-check:active + .btn-light:focus, .btn-light:active:focus, .btn-light.active:focus, .show > .btn-light.dropdown-toggle:focus { - box-shadow: 0 0 0 0.25rem rgba(211, 212, 213, 0.5); + box-shadow: 0 0 0 0.25rem rgba(210.8, 211.65, 212.5, 0.5); } .btn-light:disabled, .btn-light.disabled { @@ -3039,15 +3038,15 @@ fieldset:disabled .btn { } .btn-dark:hover { color: #fff; - background-color: #1c1f23; - border-color: #1a1e21; + background-color: rgb(28.05, 31.45, 34.85); + border-color: rgb(26.4, 29.6, 32.8); } .btn-check:focus + .btn-dark, .btn-dark:focus { color: #fff; - background-color: #1c1f23; - border-color: #1a1e21; - box-shadow: 0 0 0 0.25rem rgba(66, 70, 73, 0.5); + background-color: rgb(28.05, 31.45, 34.85); + border-color: rgb(26.4, 29.6, 32.8); + box-shadow: 0 0 0 0.25rem rgba(66.3, 69.7, 73.1, 0.5); } .btn-check:checked + .btn-dark, .btn-check:active + .btn-dark, @@ -3055,15 +3054,15 @@ fieldset:disabled .btn { .btn-dark.active, .show > .btn-dark.dropdown-toggle { color: #fff; - background-color: #1a1e21; - border-color: #191c1f; + background-color: rgb(26.4, 29.6, 32.8); + border-color: rgb(24.75, 27.75, 30.75); } .btn-check:checked + .btn-dark:focus, .btn-check:active + .btn-dark:focus, .btn-dark:active:focus, .btn-dark.active:focus, .show > .btn-dark.dropdown-toggle:focus { - box-shadow: 0 0 0 0.25rem rgba(66, 70, 73, 0.5); + box-shadow: 0 0 0 0.25rem rgba(66.3, 69.7, 73.1, 0.5); } .btn-dark:disabled, .btn-dark.disabled { @@ -3654,7 +3653,7 @@ fieldset:disabled .btn { } .dropdown-item:hover, .dropdown-item:focus { - color: #1e2125; + color: rgb(29.7, 33.3, 36.9); background-color: #e9ecef; } .dropdown-item.active, @@ -4499,12 +4498,12 @@ fieldset:disabled .btn { } } .accordion-button:not(.collapsed) { - color: #007891; - background-color: #e6f3f6; + color: rgb(0, 119.7, 144.9); + background-color: rgb(229.5, 242.8, 245.6); box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.125); } .accordion-button:not(.collapsed)::after { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23007891'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='rgb%280, 119.7, 144.9%29'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); transform: rotate(-180deg); } .accordion-button::after { @@ -4528,7 +4527,7 @@ fieldset:disabled .btn { } .accordion-button:focus { z-index: 3; - border-color: #80c2d0; + border-color: rgb(127.5, 194, 208); outline: 0; box-shadow: 0 0 0 0.25rem rgba(0, 133, 161, 0.25); } @@ -4692,75 +4691,75 @@ fieldset:disabled .btn { } .alert-primary { - color: #005061; - background-color: #cce7ec; - border-color: #b3dae3; + color: rgb(0, 79.8, 96.6); + background-color: rgb(204, 230.6, 236.2); + border-color: rgb(178.5, 218.4, 226.8); } .alert-primary .alert-link { - color: #00404e; + color: rgb(0, 63.84, 77.28); } .alert-secondary { - color: #41464b; - background-color: #e2e3e5; - border-color: #d3d6d8; + color: rgb(64.8, 70.2, 75); + background-color: rgb(225.6, 227.4, 229); + border-color: rgb(210.9, 213.6, 216); } .alert-secondary .alert-link { - color: #34383c; + color: rgb(51.84, 56.16, 60); } .alert-success { - color: #0f5132; - background-color: #d1e7dd; - border-color: #badbcc; + color: rgb(15, 81, 50.4); + background-color: rgb(209, 231, 220.8); + border-color: rgb(186, 219, 203.7); } .alert-success .alert-link { - color: #0c4128; + color: rgb(12, 64.8, 40.32); } .alert-info { - color: #087990; - background-color: #cff4fc; - border-color: #b6effb; + color: rgb(7.8, 121.2, 144); + background-color: rgb(206.6, 244.4, 252); + border-color: rgb(182.4, 239.1, 250.5); } .alert-info .alert-link { - color: #066173; + color: rgb(6.24, 96.96, 115.2); } .alert-warning { - color: #997404; - background-color: #fff3cd; - border-color: #ffecb5; + color: rgb(153, 115.8, 4.2); + background-color: rgb(255, 242.6, 205.4); + border-color: rgb(255, 236.4, 180.6); } .alert-warning .alert-link { - color: #7a5d03; + color: rgb(122.4, 92.64, 3.36); } .alert-danger { - color: #842029; - background-color: #f8d7da; - border-color: #f5c2c7; + color: rgb(132, 31.8, 41.4); + background-color: rgb(248, 214.6, 217.8); + border-color: rgb(244.5, 194.4, 199.2); } .alert-danger .alert-link { - color: #6a1a21; + color: rgb(105.6, 25.44, 33.12); } .alert-light { - color: #636464; - background-color: #fefefe; - border-color: #fdfdfe; + color: rgb(99.2, 99.6, 100); + background-color: rgb(253.6, 253.8, 254); + border-color: rgb(252.9, 253.2, 253.5); } .alert-light .alert-link { - color: #4f5050; + color: rgb(79.36, 79.68, 80); } .alert-dark { - color: #141619; - background-color: #d3d3d4; - border-color: #bcbebf; + color: rgb(19.8, 22.2, 24.6); + background-color: rgb(210.6, 211.4, 212.2); + border-color: rgb(188.4, 189.6, 190.8); } .alert-dark .alert-link { - color: #101214; + color: rgb(15.84, 17.76, 19.68); } @keyframes progress-bar-stripes { @@ -4971,123 +4970,123 @@ fieldset:disabled .btn { } .list-group-item-primary { - color: #005061; - background-color: #cce7ec; + color: rgb(0, 79.8, 96.6); + background-color: rgb(204, 230.6, 236.2); } .list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus { - color: #005061; - background-color: #b8d0d4; + color: rgb(0, 79.8, 96.6); + background-color: rgb(183.6, 207.54, 212.58); } .list-group-item-primary.list-group-item-action.active { color: #fff; - background-color: #005061; - border-color: #005061; + background-color: rgb(0, 79.8, 96.6); + border-color: rgb(0, 79.8, 96.6); } .list-group-item-secondary { - color: #41464b; - background-color: #e2e3e5; + color: rgb(64.8, 70.2, 75); + background-color: rgb(225.6, 227.4, 229); } .list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus { - color: #41464b; - background-color: #cbccce; + color: rgb(64.8, 70.2, 75); + background-color: rgb(203.04, 204.66, 206.1); } .list-group-item-secondary.list-group-item-action.active { color: #fff; - background-color: #41464b; - border-color: #41464b; + background-color: rgb(64.8, 70.2, 75); + border-color: rgb(64.8, 70.2, 75); } .list-group-item-success { - color: #0f5132; - background-color: #d1e7dd; + color: rgb(15, 81, 50.4); + background-color: rgb(209, 231, 220.8); } .list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus { - color: #0f5132; - background-color: #bcd0c7; + color: rgb(15, 81, 50.4); + background-color: rgb(188.1, 207.9, 198.72); } .list-group-item-success.list-group-item-action.active { color: #fff; - background-color: #0f5132; - border-color: #0f5132; + background-color: rgb(15, 81, 50.4); + border-color: rgb(15, 81, 50.4); } .list-group-item-info { - color: #087990; - background-color: #cff4fc; + color: rgb(7.8, 121.2, 144); + background-color: rgb(206.6, 244.4, 252); } .list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus { - color: #087990; - background-color: #badce3; + color: rgb(7.8, 121.2, 144); + background-color: rgb(185.94, 219.96, 226.8); } .list-group-item-info.list-group-item-action.active { color: #fff; - background-color: #087990; - border-color: #087990; + background-color: rgb(7.8, 121.2, 144); + border-color: rgb(7.8, 121.2, 144); } .list-group-item-warning { - color: #997404; - background-color: #fff3cd; + color: rgb(153, 115.8, 4.2); + background-color: rgb(255, 242.6, 205.4); } .list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus { - color: #997404; - background-color: #e6dbb9; + color: rgb(153, 115.8, 4.2); + background-color: rgb(229.5, 218.34, 184.86); } .list-group-item-warning.list-group-item-action.active { color: #fff; - background-color: #997404; - border-color: #997404; + background-color: rgb(153, 115.8, 4.2); + border-color: rgb(153, 115.8, 4.2); } .list-group-item-danger { - color: #842029; - background-color: #f8d7da; + color: rgb(132, 31.8, 41.4); + background-color: rgb(248, 214.6, 217.8); } .list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus { - color: #842029; - background-color: #dfc2c4; + color: rgb(132, 31.8, 41.4); + background-color: rgb(223.2, 193.14, 196.02); } .list-group-item-danger.list-group-item-action.active { color: #fff; - background-color: #842029; - border-color: #842029; + background-color: rgb(132, 31.8, 41.4); + border-color: rgb(132, 31.8, 41.4); } .list-group-item-light { - color: #636464; - background-color: #fefefe; + color: rgb(99.2, 99.6, 100); + background-color: rgb(253.6, 253.8, 254); } .list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus { - color: #636464; - background-color: #e5e5e5; + color: rgb(99.2, 99.6, 100); + background-color: rgb(228.24, 228.42, 228.6); } .list-group-item-light.list-group-item-action.active { color: #fff; - background-color: #636464; - border-color: #636464; + background-color: rgb(99.2, 99.6, 100); + border-color: rgb(99.2, 99.6, 100); } .list-group-item-dark { - color: #141619; - background-color: #d3d3d4; + color: rgb(19.8, 22.2, 24.6); + background-color: rgb(210.6, 211.4, 212.2); } .list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus { - color: #141619; - background-color: #bebebf; + color: rgb(19.8, 22.2, 24.6); + background-color: rgb(189.54, 190.26, 190.98); } .list-group-item-dark.list-group-item-action.active { color: #fff; - background-color: #141619; - border-color: #141619; + background-color: rgb(19.8, 22.2, 24.6); + border-color: rgb(19.8, 22.2, 24.6); } .btn-close { @@ -5613,7 +5612,7 @@ fieldset:disabled .btn { width: 1rem; margin-left: -0.5rem; content: ""; - border-bottom: 1px solid #f0f0f0; + border-bottom: 1px solid rgb(239.7, 239.7, 239.7); } .bs-popover-start > .popover-arrow, @@ -5639,7 +5638,7 @@ fieldset:disabled .btn { padding: 0.5rem 1rem; margin-bottom: 0; font-size: 1rem; - background-color: #f0f0f0; + background-color: rgb(239.7, 239.7, 239.7); border-bottom: 1px solid rgba(0, 0, 0, 0.2); } .popover-header:empty { @@ -6067,7 +6066,7 @@ fieldset:disabled .btn { } .link-primary:hover, .link-primary:focus { - color: #006a81; + color: rgb(0, 106.4, 128.8); } .link-secondary { @@ -6075,7 +6074,7 @@ fieldset:disabled .btn { } .link-secondary:hover, .link-secondary:focus { - color: #565e64; + color: rgb(86.4, 93.6, 100); } .link-success { @@ -6083,7 +6082,7 @@ fieldset:disabled .btn { } .link-success:hover, .link-success:focus { - color: #146c43; + color: rgb(20, 108, 67.2); } .link-info { @@ -6091,7 +6090,7 @@ fieldset:disabled .btn { } .link-info:hover, .link-info:focus { - color: #3dd5f3; + color: rgb(61.4, 212.6, 243); } .link-warning { @@ -6099,7 +6098,7 @@ fieldset:disabled .btn { } .link-warning:hover, .link-warning:focus { - color: #ffcd39; + color: rgb(255, 205.4, 56.6); } .link-danger { @@ -6107,7 +6106,7 @@ fieldset:disabled .btn { } .link-danger:hover, .link-danger:focus { - color: #b02a37; + color: rgb(176, 42.4, 55.2); } .link-light { @@ -6115,7 +6114,7 @@ fieldset:disabled .btn { } .link-light:hover, .link-light:focus { - color: #f9fafb; + color: rgb(249.4, 250.2, 251); } .link-dark { @@ -6123,7 +6122,7 @@ fieldset:disabled .btn { } .link-dark:hover, .link-dark:focus { - color: #1a1e21; + color: rgb(26.4, 29.6, 32.8); } .ratio { @@ -10227,7 +10226,7 @@ blockquote { -webkit-transition: -webkit-transform 0.2s; -moz-transition: -moz-transform 0.2s; transition: transform 0.2s; - border-bottom: 1px solid white; + border-bottom: 1px solid rgb(254.8725, 254.8725, 254.8725); background-color: rgba(255, 255, 255, 0.9); } #mainNav.is-fixed .navbar-brand { diff --git a/index.js b/index.js index d124de1..e405ecb 100644 --- a/index.js +++ b/index.js @@ -1,97 +1,173 @@ (function () { 'use strict'; - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); + function _arrayLikeToArray(r, a) { + (null == a || a > r.length) && (a = r.length); + for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; + return n; + } + + function _arrayWithHoles(r) { + if (Array.isArray(r)) return r; + } + + function _arrayWithoutHoles(r) { + if (Array.isArray(r)) return _arrayLikeToArray(r); + } + + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - Object.defineProperty(Constructor, "prototype", { - writable: false - }); - return Constructor; + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { + writable: !1 + }), e; } function _extends() { - _extends = Object.assign ? Object.assign.bind() : function (target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } + return _extends = Object.assign ? Object.assign.bind() : function (n) { + for (var e = 1; e < arguments.length; e++) { + var t = arguments[e]; + for (var r in t)({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } - return target; - }; - return _extends.apply(this, arguments); + return n; + }, _extends.apply(null, arguments); } - function _inheritsLoose(subClass, superClass) { - subClass.prototype = Object.create(superClass.prototype); - subClass.prototype.constructor = subClass; - _setPrototypeOf(subClass, superClass); + function _get() { + return _get = "undefined" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) { + var p = _superPropBase(e, t); + if (p) { + var n = Object.getOwnPropertyDescriptor(p, t); + return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value; + } + }, _get.apply(null, arguments); } - function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; - return _setPrototypeOf(o, p); + function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { + return t.__proto__ || Object.getPrototypeOf(t); + }, _getPrototypeOf(t); + } + + function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { + constructor: { + value: t, + writable: !0, + configurable: !0 + } + }), Object.defineProperty(t, "prototype", { + writable: !1 + }), e && _setPrototypeOf(t, e); + } + + function _iterableToArray(r) { + if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } - function _assertThisInitialized(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + function _iterableToArrayLimit(r, l) { + var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; + if (null != t) { + var e, + n, + i, + u, + a = [], + f = !0, + o = !1; + try { + if (i = (t = t.call(r)).next, 0 === l) { + if (Object(t) !== t) return; + f = !1; + } else + for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); + } catch (r) { + o = !0, n = r; + } finally { + try { + if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; + } finally { + if (o) throw n; + } + } + return a; } - return self; } - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + function _maybeArrayLike(r, a, e) { + if (a && !Array.isArray(a) && "number" == typeof a.length) { + var y = a.length; + return _arrayLikeToArray(a, void 0 !== e && e < y ? e : y); + } + return r(a, e); } - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; - return arr2; + function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } - function _createForOfIteratorHelperLoose(o, allowArrayLike) { - var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; - if (it) return (it = it.call(o)).next.bind(it); - if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { - if (it) o = it; - var i = 0; - return function () { - if (i >= o.length) return { - done: true - }; - return { - done: false, - value: o[i++] - }; - }; + function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { + return t.__proto__ = e, t; + }, _setPrototypeOf(t, e); + } + + function _slicedToArray(r, e) { + return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); + } + + function _superPropBase(t, o) { + for (; !{}.hasOwnProperty.call(t, o) && null !== (t = _getPrototypeOf(t));); + return t; + } + + function _superPropGet(t, o, e, r) { + var p = _get(_getPrototypeOf(t.prototype), o, e); + return "function" == typeof p ? function (t) { + return p.apply(e, t); + } : p; + } + + function _toConsumableArray(r) { + return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); + } + + function _toPrimitive(t, r) { + if ("object" != typeof t || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r); + if ("object" != typeof i) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return (String)(t); + } + + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == typeof i ? i : i + ""; + } + + function _unsupportedIterableToArray(r, a) { + if (r) { + if ("string" == typeof r) return _arrayLikeToArray(r, a); + var t = {}.toString.call(r).slice(8, -1); + return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } - throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } /*! - * Bootstrap v5.2.2 (https://getbootstrap.com/) - * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Bootstrap v5.1.3 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ (function (global, factory) { @@ -99,22 +175,24 @@ })(this, function () { /** * -------------------------------------------------------------------------- - * Bootstrap (v5.2.2): util/index.js + * Bootstrap (v5.1.3): util/index.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ var _KEY_TO_DIRECTION; var MAX_UID = 1000000; var MILLISECONDS_MULTIPLIER = 1000; - var TRANSITION_END = 'transitionend'; // Shout-out Angus Croll (https://goo.gl/pxwQGp) - var toType = function toType(object) { - if (object === null || object === undefined) { - return "" + object; + var TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp) + var toType = function toType(obj) { + if (obj === null || obj === undefined) { + return "" + obj; } - return Object.prototype.toString.call(object).match(/\s([a-z]+)/i)[1].toLowerCase(); + return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase(); }; /** - * Public Util API + * -------------------------------------------------------------------------- + * Public Util Api + * -------------------------------------------------------------------------- */ var getUID = function getUID(prefix) { do { @@ -125,17 +203,17 @@ var getSelector = function getSelector(element) { var selector = element.getAttribute('data-bs-target'); if (!selector || selector === '#') { - var hrefAttribute = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes, + var hrefAttr = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes, // so everything starting with `#` or `.`. If a "real" URL is used as the selector, // `document.querySelector` will rightfully complain it is invalid. // See https://github.com/twbs/bootstrap/issues/32273 - if (!hrefAttribute || !hrefAttribute.includes('#') && !hrefAttribute.startsWith('.')) { + if (!hrefAttr || !hrefAttr.includes('#') && !hrefAttr.startsWith('.')) { return null; } // Just in case some CMS puts out a full URL with the anchor appended - if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) { - hrefAttribute = "#" + hrefAttribute.split('#')[1]; + if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) { + hrefAttr = "#" + hrefAttr.split('#')[1]; } - selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null; + selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null; } return selector; }; @@ -169,44 +247,40 @@ var triggerTransitionEnd = function triggerTransitionEnd(element) { element.dispatchEvent(new Event(TRANSITION_END)); }; - var isElement$1 = function isElement$1(object) { - if (!object || typeof object !== 'object') { + var isElement$1 = function isElement$1(obj) { + if (!obj || typeof obj !== 'object') { return false; } - if (typeof object.jquery !== 'undefined') { - object = object[0]; + if (typeof obj.jquery !== 'undefined') { + obj = obj[0]; } - return typeof object.nodeType !== 'undefined'; + return typeof obj.nodeType !== 'undefined'; }; - var getElement = function getElement(object) { - // it's a jQuery object or a node element - if (isElement$1(object)) { - return object.jquery ? object[0] : object; + var getElement = function getElement(obj) { + if (isElement$1(obj)) { + // it's a jQuery object or a node element + return obj.jquery ? obj[0] : obj; } - if (typeof object === 'string' && object.length > 0) { - return document.querySelector(object); + if (typeof obj === 'string' && obj.length > 0) { + return document.querySelector(obj); } return null; }; + var typeCheckConfig = function typeCheckConfig(componentName, config, configTypes) { + Object.keys(configTypes).forEach(function (property) { + var expectedTypes = configTypes[property]; + var value = config[property]; + var valueType = value && isElement$1(value) ? 'element' : toType(value); + if (!new RegExp(expectedTypes).test(valueType)) { + throw new TypeError(componentName.toUpperCase() + ": Option \"" + property + "\" provided type \"" + valueType + "\" but expected type \"" + expectedTypes + "\"."); + } + }); + }; var isVisible = function isVisible(element) { if (!isElement$1(element) || element.getClientRects().length === 0) { return false; } - var elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'; // Handle `details` element as its content may falsie appear visible when it is closed - var closedDetails = element.closest('details:not([open])'); - if (!closedDetails) { - return elementIsVisible; - } - if (closedDetails !== element) { - var summary = element.closest('summary'); - if (summary && summary.parentNode !== closedDetails) { - return false; - } - if (summary === null) { - return false; - } - } - return elementIsVisible; + return getComputedStyle(element).getPropertyValue('visibility') === 'visible'; }; var isDisabled = function isDisabled(element) { if (!element || element.nodeType !== Node.ELEMENT_NODE) { @@ -220,7 +294,7 @@ } return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'; }; - var findShadowRoot = function findShadowRoot(element) { + var _findShadowRoot = function findShadowRoot(element) { if (!document.documentElement.attachShadow) { return null; } // Can find the shadow root otherwise it'll return the document @@ -234,7 +308,7 @@ if (!element.parentNode) { return null; } - return findShadowRoot(element.parentNode); + return _findShadowRoot(element.parentNode); }; var noop = function noop() {}; /** @@ -246,11 +320,14 @@ * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation */ var reflow = function reflow(element) { - element.offsetHeight; // eslint-disable-line no-unused-expressions + // eslint-disable-next-line no-unused-expressions + element.offsetHeight; }; var getjQuery = function getjQuery() { - if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) { - return window.jQuery; + var _window = window, + jQuery = _window.jQuery; + if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) { + return jQuery; } return null; }; @@ -260,10 +337,9 @@ // add listener on the first call when the document is in loading state if (!DOMContentLoadedCallbacks.length) { document.addEventListener('DOMContentLoaded', function () { - for (var _iterator = _createForOfIteratorHelperLoose(DOMContentLoadedCallbacks), _step; !(_step = _iterator()).done;) { - var _callback = _step.value; - _callback(); - } + DOMContentLoadedCallbacks.forEach(function (callback) { + return callback(); + }); }); } DOMContentLoadedCallbacks.push(callback); @@ -306,16 +382,16 @@ var durationPadding = 5; var emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding; var called = false; - var handler = function handler(_ref6) { - var target = _ref6.target; + var _handler = function handler(_ref5) { + var target = _ref5.target; if (target !== transitionElement) { return; } called = true; - transitionElement.removeEventListener(TRANSITION_END, handler); + transitionElement.removeEventListener(TRANSITION_END, _handler); execute(callback); }; - transitionElement.addEventListener(TRANSITION_END, handler); + transitionElement.addEventListener(TRANSITION_END, _handler); setTimeout(function () { if (!called) { triggerTransitionEnd(transitionElement); @@ -332,12 +408,11 @@ * @return {Element|elem} The proper element */ var getNextActiveElement = function getNextActiveElement(list, activeElement, shouldGetNext, isCycleAllowed) { - var listLength = list.length; - var index = list.indexOf(activeElement); // if the element does not exist in the list return an element - // depending on the direction and if cycle is allowed + var index = list.indexOf(activeElement); // if the element does not exist in the list return an element depending on the direction and if cycle is allowed if (index === -1) { - return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]; + return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]; } + var listLength = list.length; index += shouldGetNext ? 1 : -1; if (isCycleAllowed) { index = (index + listLength) % listLength; @@ -346,12 +421,14 @@ }; /** * -------------------------------------------------------------------------- - * Bootstrap (v5.2.2): dom/event-handler.js + * Bootstrap (v5.1.3): dom/event-handler.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ /** + * ------------------------------------------------------------------------ * Constants + * ------------------------------------------------------------------------ */ var namespaceRegex = /[^.]*(?=\..*)\.|.*/; var stripNameRegex = /\..*/; @@ -362,16 +439,19 @@ mouseenter: 'mouseover', mouseleave: 'mouseout' }; + var customEventsRegex = /^(mouseenter|mouseleave)/i; var nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']); /** + * ------------------------------------------------------------------------ * Private methods + * ------------------------------------------------------------------------ */ - function makeEventUid(element, uid) { + function getUidEvent(element, uid) { return uid && uid + "::" + uidEvent++ || element.uidEvent || uidEvent++; } - function getElementEvents(element) { - var uid = makeEventUid(element); + function getEvent(element) { + var uid = getUidEvent(element); element.uidEvent = uid; eventRegistry[uid] = eventRegistry[uid] || {}; return eventRegistry[uid]; @@ -379,9 +459,7 @@ function bootstrapHandler(element, fn) { return function handler(event) { - hydrateObj(event, { - delegateTarget: element - }); + event.delegateTarget = element; if (handler.oneOff) { EventHandler.off(element, event.type, fn); } @@ -393,76 +471,88 @@ return function handler(event) { var domElements = element.querySelectorAll(selector); for (var target = event.target; target && target !== this; target = target.parentNode) { - for (var _iterator2 = _createForOfIteratorHelperLoose(domElements), _step2; !(_step2 = _iterator2()).done;) { - var domElement = _step2.value; - if (domElement !== target) { - continue; - } - hydrateObj(event, { - delegateTarget: target - }); - if (handler.oneOff) { - EventHandler.off(element, event.type, selector, fn); + for (var i = domElements.length; i--;) { + if (domElements[i] === target) { + event.delegateTarget = target; + if (handler.oneOff) { + EventHandler.off(element, event.type, selector, fn); + } + return fn.apply(target, [event]); } - return fn.apply(target, [event]); } - } + } // To please ESLint + return null; }; } - function findHandler(events, callable, delegationSelector) { + function findHandler(events, handler, delegationSelector) { if (delegationSelector === void 0) { delegationSelector = null; } - return Object.values(events).find(function (event) { - return event.callable === callable && event.delegationSelector === delegationSelector; - }); + var uidEventList = Object.keys(events); + for (var i = 0, len = uidEventList.length; i < len; i++) { + var event = events[uidEventList[i]]; + if (event.originalHandler === handler && event.delegationSelector === delegationSelector) { + return event; + } + } + return null; } - function normalizeParameters(originalTypeEvent, handler, delegationFunction) { - var isDelegated = typeof handler === 'string'; // todo: tooltip passes `false` instead of selector, so we need to check - var callable = isDelegated ? delegationFunction : handler || delegationFunction; + function normalizeParams(originalTypeEvent, handler, delegationFn) { + var delegation = typeof handler === 'string'; + var originalHandler = delegation ? delegationFn : handler; var typeEvent = getTypeEvent(originalTypeEvent); - if (!nativeEvents.has(typeEvent)) { + var isNative = nativeEvents.has(typeEvent); + if (!isNative) { typeEvent = originalTypeEvent; } - return [isDelegated, callable, typeEvent]; + return [delegation, originalHandler, typeEvent]; } - function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) { + function addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) { if (typeof originalTypeEvent !== 'string' || !element) { return; } - var _normalizeParameters = normalizeParameters(originalTypeEvent, handler, delegationFunction), - isDelegated = _normalizeParameters[0], - callable = _normalizeParameters[1], - typeEvent = _normalizeParameters[2]; // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position + if (!handler) { + handler = delegationFn; + delegationFn = null; + } // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position // this prevents the handler from being dispatched the same way as mouseover or mouseout does - if (originalTypeEvent in customEvents) { - var wrapFunction = function wrapFunction(fn) { + if (customEventsRegex.test(originalTypeEvent)) { + var wrapFn = function wrapFn(fn) { return function (event) { if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) { return fn.call(this, event); } }; }; - callable = wrapFunction(callable); + if (delegationFn) { + delegationFn = wrapFn(delegationFn); + } else { + handler = wrapFn(handler); + } } - var events = getElementEvents(element); + var _normalizeParams = normalizeParams(originalTypeEvent, handler, delegationFn), + _normalizeParams2 = _maybeArrayLike(_slicedToArray, _normalizeParams, 3), + delegation = _normalizeParams2[0], + originalHandler = _normalizeParams2[1], + typeEvent = _normalizeParams2[2]; + var events = getEvent(element); var handlers = events[typeEvent] || (events[typeEvent] = {}); - var previousFunction = findHandler(handlers, callable, isDelegated ? handler : null); - if (previousFunction) { - previousFunction.oneOff = previousFunction.oneOff && oneOff; + var previousFn = findHandler(handlers, originalHandler, delegation ? handler : null); + if (previousFn) { + previousFn.oneOff = previousFn.oneOff && oneOff; return; } - var uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, '')); - var fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable); - fn.delegationSelector = isDelegated ? handler : null; - fn.callable = callable; + var uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, '')); + var fn = delegation ? bootstrapDelegationHandler(element, handler, delegationFn) : bootstrapHandler(element, handler); + fn.delegationSelector = delegation ? handler : null; + fn.originalHandler = originalHandler; fn.oneOff = oneOff; fn.uidEvent = uid; handlers[uid] = fn; - element.addEventListener(typeEvent, fn, isDelegated); + element.addEventListener(typeEvent, fn, delegation); } function removeHandler(element, events, typeEvent, handler, delegationSelector) { @@ -476,13 +566,12 @@ function removeNamespacedHandlers(element, events, typeEvent, namespace) { var storeElementEvent = events[typeEvent] || {}; - for (var _i2 = 0, _Object$keys = Object.keys(storeElementEvent); _i2 < _Object$keys.length; _i2++) { - var handlerKey = _Object$keys[_i2]; + Object.keys(storeElementEvent).forEach(function (handlerKey) { if (handlerKey.includes(namespace)) { var event = storeElementEvent[handlerKey]; - removeHandler(element, events, typeEvent, event.callable, event.delegationSelector); + removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector); } - } + }); } function getTypeEvent(event) { @@ -491,46 +580,45 @@ return customEvents[event] || event; } var EventHandler = { - on: function on(element, event, handler, delegationFunction) { - addHandler(element, event, handler, delegationFunction, false); + on: function on(element, event, handler, delegationFn) { + addHandler(element, event, handler, delegationFn, false); }, - one: function one(element, event, handler, delegationFunction) { - addHandler(element, event, handler, delegationFunction, true); + one: function one(element, event, handler, delegationFn) { + addHandler(element, event, handler, delegationFn, true); }, - off: function off(element, originalTypeEvent, handler, delegationFunction) { + off: function off(element, originalTypeEvent, handler, delegationFn) { if (typeof originalTypeEvent !== 'string' || !element) { return; } - var _normalizeParameters2 = normalizeParameters(originalTypeEvent, handler, delegationFunction), - isDelegated = _normalizeParameters2[0], - callable = _normalizeParameters2[1], - typeEvent = _normalizeParameters2[2]; + var _normalizeParams3 = normalizeParams(originalTypeEvent, handler, delegationFn), + _normalizeParams4 = _maybeArrayLike(_slicedToArray, _normalizeParams3, 3), + delegation = _normalizeParams4[0], + originalHandler = _normalizeParams4[1], + typeEvent = _normalizeParams4[2]; var inNamespace = typeEvent !== originalTypeEvent; - var events = getElementEvents(element); - var storeElementEvent = events[typeEvent] || {}; + var events = getEvent(element); var isNamespace = originalTypeEvent.startsWith('.'); - if (typeof callable !== 'undefined') { + if (typeof originalHandler !== 'undefined') { // Simplest case: handler is passed, remove that listener ONLY. - if (!Object.keys(storeElementEvent).length) { + if (!events || !events[typeEvent]) { return; } - removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null); + removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null); return; } if (isNamespace) { - for (var _i3 = 0, _Object$keys2 = Object.keys(events); _i3 < _Object$keys2.length; _i3++) { - var elementEvent = _Object$keys2[_i3]; + Object.keys(events).forEach(function (elementEvent) { removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1)); - } + }); } - for (var _i4 = 0, _Object$keys3 = Object.keys(storeElementEvent); _i4 < _Object$keys3.length; _i4++) { - var keyHandlers = _Object$keys3[_i4]; + var storeElementEvent = events[typeEvent] || {}; + Object.keys(storeElementEvent).forEach(function (keyHandlers) { var handlerKey = keyHandlers.replace(stripUidRegex, ''); if (!inNamespace || originalTypeEvent.includes(handlerKey)) { var event = storeElementEvent[keyHandlers]; - removeHandler(element, events, typeEvent, event.callable, event.delegationSelector); + removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector); } - } + }); }, trigger: function trigger(element, event, args) { if (typeof event !== 'string' || !element) { @@ -539,10 +627,12 @@ var $ = getjQuery(); var typeEvent = getTypeEvent(event); var inNamespace = event !== typeEvent; - var jQueryEvent = null; + var isNative = nativeEvents.has(typeEvent); + var jQueryEvent; var bubbles = true; var nativeDispatch = true; var defaultPrevented = false; + var evt = null; if (inNamespace && $) { jQueryEvent = $.Event(event, args); $(element).trigger(jQueryEvent); @@ -550,53 +640,46 @@ nativeDispatch = !jQueryEvent.isImmediatePropagationStopped(); defaultPrevented = jQueryEvent.isDefaultPrevented(); } - var evt = new Event(event, { - bubbles: bubbles, - cancelable: true - }); - evt = hydrateObj(evt, args); + if (isNative) { + evt = document.createEvent('HTMLEvents'); + evt.initEvent(typeEvent, bubbles, true); + } else { + evt = new CustomEvent(event, { + bubbles: bubbles, + cancelable: true + }); + } // merge custom information in our event + if (typeof args !== 'undefined') { + Object.keys(args).forEach(function (key) { + Object.defineProperty(evt, key, { + get: function get() { + return args[key]; + } + }); + }); + } if (defaultPrevented) { evt.preventDefault(); } if (nativeDispatch) { element.dispatchEvent(evt); } - if (evt.defaultPrevented && jQueryEvent) { + if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') { jQueryEvent.preventDefault(); } return evt; } }; - - function hydrateObj(obj, meta) { - var _loop2 = function _loop2() { - var _Object$entries$_i = _Object$entries[_i5], - key = _Object$entries$_i[0], - value = _Object$entries$_i[1]; - try { - obj[key] = value; - } catch (_unused) { - Object.defineProperty(obj, key, { - configurable: true, - get: function get() { - return value; - } - }); - } - }; - for (var _i5 = 0, _Object$entries = Object.entries(meta || {}); _i5 < _Object$entries.length; _i5++) { - _loop2(); - } - return obj; - } /** * -------------------------------------------------------------------------- - * Bootstrap (v5.2.2): dom/data.js + * Bootstrap (v5.1.3): dom/data.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ /** + * ------------------------------------------------------------------------ * Constants + * ------------------------------------------------------------------------ */ var elementMap = new Map(); var Data = { @@ -632,173 +715,41 @@ }; /** * -------------------------------------------------------------------------- - * Bootstrap (v5.2.2): dom/manipulator.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - function normalizeData(value) { - if (value === 'true') { - return true; - } - if (value === 'false') { - return false; - } - if (value === Number(value).toString()) { - return Number(value); - } - if (value === '' || value === 'null') { - return null; - } - if (typeof value !== 'string') { - return value; - } - try { - return JSON.parse(decodeURIComponent(value)); - } catch (_unused) { - return value; - } - } - - function normalizeDataKey(key) { - return key.replace(/[A-Z]/g, function (chr) { - return "-" + chr.toLowerCase(); - }); - } - var Manipulator = { - setDataAttribute: function setDataAttribute(element, key, value) { - element.setAttribute("data-bs-" + normalizeDataKey(key), value); - }, - removeDataAttribute: function removeDataAttribute(element, key) { - element.removeAttribute("data-bs-" + normalizeDataKey(key)); - }, - getDataAttributes: function getDataAttributes(element) { - if (!element) { - return {}; - } - var attributes = {}; - var bsKeys = Object.keys(element.dataset).filter(function (key) { - return key.startsWith('bs') && !key.startsWith('bsConfig'); - }); - for (var _iterator3 = _createForOfIteratorHelperLoose(bsKeys), _step3; !(_step3 = _iterator3()).done;) { - var key = _step3.value; - var pureKey = key.replace(/^bs/, ''); - pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length); - attributes[pureKey] = normalizeData(element.dataset[key]); - } - return attributes; - }, - getDataAttribute: function getDataAttribute(element, key) { - return normalizeData(element.getAttribute("data-bs-" + normalizeDataKey(key))); - } - }; - /** - * -------------------------------------------------------------------------- - * Bootstrap (v5.2.2): util/config.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - /** - * Class definition - */ - var Config = /*#__PURE__*/ function () { - function Config() {} - var _proto = Config.prototype; - _proto._getConfig = function _getConfig(config) { - config = this._mergeConfigObj(config); - config = this._configAfterMerge(config); - this._typeCheckConfig(config); - return config; - }; - _proto._configAfterMerge = function _configAfterMerge(config) { - return config; - }; - _proto._mergeConfigObj = function _mergeConfigObj(config, element) { - var jsonConfig = isElement$1(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse - return _extends({}, this.constructor.Default, typeof jsonConfig === 'object' ? jsonConfig : {}, isElement$1(element) ? Manipulator.getDataAttributes(element) : {}, typeof config === 'object' ? config : {}); - }; - _proto._typeCheckConfig = function _typeCheckConfig(config, configTypes) { - if (configTypes === void 0) { - configTypes = this.constructor.DefaultType; - } - for (var _i6 = 0, _Object$keys4 = Object.keys(configTypes); _i6 < _Object$keys4.length; _i6++) { - var property = _Object$keys4[_i6]; - var expectedTypes = configTypes[property]; - var value = config[property]; - var valueType = isElement$1(value) ? 'element' : toType(value); - if (!new RegExp(expectedTypes).test(valueType)) { - throw new TypeError(this.constructor.NAME.toUpperCase() + ": Option \"" + property + "\" provided type \"" + valueType + "\" but expected type \"" + expectedTypes + "\"."); - } - } - }; - _createClass(Config, null, [{ - key: "Default", - get: - // Getters - function get() { - return {}; - } - }, { - key: "DefaultType", - get: function get() { - return {}; - } - }, { - key: "NAME", - get: function get() { - throw new Error('You have to implement the static method "NAME", for each component!'); - } - }]); - return Config; - }(); - /** - * -------------------------------------------------------------------------- - * Bootstrap (v5.2.2): base-component.js + * Bootstrap (v5.1.3): base-component.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ /** + * ------------------------------------------------------------------------ * Constants + * ------------------------------------------------------------------------ */ - var VERSION = '5.2.2'; - /** - * Class definition - */ - var BaseComponent = /*#__PURE__*/ function (_Config) { - _inheritsLoose(BaseComponent, _Config); - - function BaseComponent(element, config) { - var _this; - _this = _Config.call(this) || this; + var VERSION = '5.1.3'; + var BaseComponent = /*#__PURE__*/ function () { + function BaseComponent(element) { element = getElement(element); if (!element) { - return _assertThisInitialized(_this); - } - _this._element = element; - _this._config = _this._getConfig(config); - Data.set(_this._element, _this.constructor.DATA_KEY, _assertThisInitialized(_this)); - return _this; - } // Public - var _proto2 = BaseComponent.prototype; - _proto2.dispose = function dispose() { + return; + } + this._element = element; + Data.set(this._element, this.constructor.DATA_KEY, this); + } + var _proto = BaseComponent.prototype; + _proto.dispose = function dispose() { + var _this = this; Data.remove(this._element, this.constructor.DATA_KEY); EventHandler.off(this._element, this.constructor.EVENT_KEY); - for (var _iterator4 = _createForOfIteratorHelperLoose(Object.getOwnPropertyNames(this)), _step4; !(_step4 = _iterator4()).done;) { - var propertyName = _step4.value; - this[propertyName] = null; - } + Object.getOwnPropertyNames(this).forEach(function (propertyName) { + _this[propertyName] = null; + }); }; - _proto2._queueCallback = function _queueCallback(callback, element, isAnimated) { + _proto._queueCallback = function _queueCallback(callback, element, isAnimated) { if (isAnimated === void 0) { isAnimated = true; } executeAfterTransition(callback, element, isAnimated); - }; - _proto2._getConfig = function _getConfig(config) { - config = this._mergeConfigObj(config, this._element); - config = this._configAfterMerge(config); - this._typeCheckConfig(config); - return config; - } // Static + } + /** Static */ ; BaseComponent.getInstance = function getInstance(element) { return Data.get(getElement(element), this.DATA_KEY); @@ -809,14 +760,16 @@ } return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null); }; - BaseComponent.eventName = function eventName(name) { - return "" + name + this.EVENT_KEY; - }; - _createClass(BaseComponent, null, [{ + return _createClass(BaseComponent, null, [{ key: "VERSION", get: function get() { return VERSION; } + }, { + key: "NAME", + get: function get() { + throw new Error('You have to implement the static method "NAME", for each component!'); + } }, { key: "DATA_KEY", get: function get() { @@ -828,11 +781,10 @@ return "." + this.DATA_KEY; } }]); - return BaseComponent; - }(Config); + }(); /** * -------------------------------------------------------------------------- - * Bootstrap (v5.2.2): util/component-functions.js + * Bootstrap (v5.1.3): util/component-functions.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -856,32 +808,35 @@ }; /** * -------------------------------------------------------------------------- - * Bootstrap (v5.2.2): alert.js + * Bootstrap (v5.1.3): alert.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ /** + * ------------------------------------------------------------------------ * Constants + * ------------------------------------------------------------------------ */ - var NAME$f = 'alert'; - var DATA_KEY$a = 'bs.alert'; - var EVENT_KEY$b = "." + DATA_KEY$a; - var EVENT_CLOSE = "close" + EVENT_KEY$b; - var EVENT_CLOSED = "closed" + EVENT_KEY$b; + var NAME$d = 'alert'; + var DATA_KEY$c = 'bs.alert'; + var EVENT_KEY$c = "." + DATA_KEY$c; + var EVENT_CLOSE = "close" + EVENT_KEY$c; + var EVENT_CLOSED = "closed" + EVENT_KEY$c; var CLASS_NAME_FADE$5 = 'fade'; var CLASS_NAME_SHOW$8 = 'show'; /** - * Class definition + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ */ var Alert = /*#__PURE__*/ function (_BaseComponent) { - _inheritsLoose(Alert, _BaseComponent); - function Alert() { return _BaseComponent.apply(this, arguments) || this; } - var _proto3 = Alert.prototype; + _inherits(Alert, _BaseComponent); + var _proto2 = Alert.prototype; // Public - _proto3.close = function close() { + _proto2.close = function close() { var _this2 = this; var closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE); if (closeEvent.defaultPrevented) { @@ -894,7 +849,7 @@ }, this._element, isAnimated); } // Private ; - _proto3._destroyElement = function _destroyElement() { + _proto2._destroyElement = function _destroyElement() { this._element.remove(); EventHandler.trigger(this._element, EVENT_CLOSED); this.dispose(); @@ -912,52 +867,59 @@ data[config](this); }); }; - _createClass(Alert, null, [{ + return _createClass(Alert, null, [{ key: "NAME", get: // Getters function get() { - return NAME$f; + return NAME$d; } }]); - return Alert; }(BaseComponent); /** - * Data API implementation + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ */ enableDismissTrigger(Alert, 'close'); /** + * ------------------------------------------------------------------------ * jQuery + * ------------------------------------------------------------------------ + * add .Alert to jQuery only if jQuery is present */ defineJQueryPlugin(Alert); /** * -------------------------------------------------------------------------- - * Bootstrap (v5.2.2): button.js + * Bootstrap (v5.1.3): button.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ /** + * ------------------------------------------------------------------------ * Constants + * ------------------------------------------------------------------------ */ - var NAME$e = 'button'; - var DATA_KEY$9 = 'bs.button'; - var EVENT_KEY$a = "." + DATA_KEY$9; - var DATA_API_KEY$6 = '.data-api'; + var NAME$c = 'button'; + var DATA_KEY$b = 'bs.button'; + var EVENT_KEY$b = "." + DATA_KEY$b; + var DATA_API_KEY$7 = '.data-api'; var CLASS_NAME_ACTIVE$3 = 'active'; var SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle="button"]'; - var EVENT_CLICK_DATA_API$6 = "click" + EVENT_KEY$a + DATA_API_KEY$6; + var EVENT_CLICK_DATA_API$6 = "click" + EVENT_KEY$b + DATA_API_KEY$7; /** - * Class definition + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ */ var Button = /*#__PURE__*/ function (_BaseComponent2) { - _inheritsLoose(Button, _BaseComponent2); - function Button() { return _BaseComponent2.apply(this, arguments) || this; } - var _proto4 = Button.prototype; + _inherits(Button, _BaseComponent2); + var _proto3 = Button.prototype; // Public - _proto4.toggle = function toggle() { + _proto3.toggle = function toggle() { // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3)); } // Static @@ -970,18 +932,19 @@ } }); }; - _createClass(Button, null, [{ + return _createClass(Button, null, [{ key: "NAME", get: // Getters function get() { - return NAME$e; + return NAME$c; } }]); - return Button; }(BaseComponent); /** - * Data API implementation + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ */ EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, function (event) { event.preventDefault(); @@ -990,25 +953,91 @@ data.toggle(); }); /** + * ------------------------------------------------------------------------ * jQuery + * ------------------------------------------------------------------------ + * add .Button to jQuery only if jQuery is present */ defineJQueryPlugin(Button); /** * -------------------------------------------------------------------------- - * Bootstrap (v5.2.2): dom/selector-engine.js + * Bootstrap (v5.1.3): dom/manipulator.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ + function normalizeData(val) { + if (val === 'true') { + return true; + } + if (val === 'false') { + return false; + } + if (val === Number(val).toString()) { + return Number(val); + } + if (val === '' || val === 'null') { + return null; + } + return val; + } + + function normalizeDataKey(key) { + return key.replace(/[A-Z]/g, function (chr) { + return "-" + chr.toLowerCase(); + }); + } + var Manipulator = { + setDataAttribute: function setDataAttribute(element, key, value) { + element.setAttribute("data-bs-" + normalizeDataKey(key), value); + }, + removeDataAttribute: function removeDataAttribute(element, key) { + element.removeAttribute("data-bs-" + normalizeDataKey(key)); + }, + getDataAttributes: function getDataAttributes(element) { + if (!element) { + return {}; + } + var attributes = {}; + Object.keys(element.dataset).filter(function (key) { + return key.startsWith('bs'); + }).forEach(function (key) { + var pureKey = key.replace(/^bs/, ''); + pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length); + attributes[pureKey] = normalizeData(element.dataset[key]); + }); + return attributes; + }, + getDataAttribute: function getDataAttribute(element, key) { + return normalizeData(element.getAttribute("data-bs-" + normalizeDataKey(key))); + }, + offset: function offset(element) { + var rect = element.getBoundingClientRect(); + return { + top: rect.top + window.pageYOffset, + left: rect.left + window.pageXOffset + }; + }, + position: function position(element) { + return { + top: element.offsetTop, + left: element.offsetLeft + }; + } + }; /** - * Constants + * -------------------------------------------------------------------------- + * Bootstrap (v5.1.3): dom/selector-engine.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- */ + var NODE_TEXT = 3; var SelectorEngine = { find: function find(selector, element) { - var _ref7; + var _ref6; if (element === void 0) { element = document.documentElement; } - return (_ref7 = []).concat.apply(_ref7, Element.prototype.querySelectorAll.call(element, selector)); + return (_ref6 = []).concat.apply(_ref6, _maybeArrayLike(_toConsumableArray, Element.prototype.querySelectorAll.call(element, selector))); }, findOne: function findOne(selector, element) { if (element === void 0) { @@ -1017,17 +1046,19 @@ return Element.prototype.querySelector.call(element, selector); }, children: function children(element, selector) { - var _ref8; - return (_ref8 = []).concat.apply(_ref8, element.children).filter(function (child) { + var _ref7; + return (_ref7 = []).concat.apply(_ref7, _maybeArrayLike(_toConsumableArray, element.children)).filter(function (child) { return child.matches(selector); }); }, parents: function parents(element, selector) { var parents = []; - var ancestor = element.parentNode.closest(selector); - while (ancestor) { - parents.push(ancestor); - ancestor = ancestor.parentNode.closest(selector); + var ancestor = element.parentNode; + while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) { + if (ancestor.matches(selector)) { + parents.push(ancestor); + } + ancestor = ancestor.parentNode; } return parents; }, @@ -1041,7 +1072,6 @@ } return []; }, - // TODO: this is now unused; remove later along with prev() next: function next(element, selector) { var next = element.nextElementSibling; while (next) { @@ -1055,7 +1085,7 @@ focusableChildren: function focusableChildren(element) { var focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable="true"]'].map(function (selector) { return selector + ":not([tabindex^=\"-\"])"; - }).join(','); + }).join(', '); return this.find(focusables, element).filter(function (el) { return !isDisabled(el) && isVisible(el); }); @@ -1063,165 +1093,57 @@ }; /** * -------------------------------------------------------------------------- - * Bootstrap (v5.2.2): util/swipe.js + * Bootstrap (v5.1.3): carousel.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ /** + * ------------------------------------------------------------------------ * Constants + * ------------------------------------------------------------------------ */ - var NAME$d = 'swipe'; - var EVENT_KEY$9 = '.bs.swipe'; - var EVENT_TOUCHSTART = "touchstart" + EVENT_KEY$9; - var EVENT_TOUCHMOVE = "touchmove" + EVENT_KEY$9; - var EVENT_TOUCHEND = "touchend" + EVENT_KEY$9; - var EVENT_POINTERDOWN = "pointerdown" + EVENT_KEY$9; - var EVENT_POINTERUP = "pointerup" + EVENT_KEY$9; - var POINTER_TYPE_TOUCH = 'touch'; - var POINTER_TYPE_PEN = 'pen'; - var CLASS_NAME_POINTER_EVENT = 'pointer-event'; + var NAME$b = 'carousel'; + var DATA_KEY$a = 'bs.carousel'; + var EVENT_KEY$a = "." + DATA_KEY$a; + var DATA_API_KEY$6 = '.data-api'; + var ARROW_LEFT_KEY = 'ArrowLeft'; + var ARROW_RIGHT_KEY = 'ArrowRight'; + var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch var SWIPE_THRESHOLD = 40; - var Default$c = { - endCallback: null, - leftCallback: null, - rightCallback: null + var Default$a = { + interval: 5000, + keyboard: true, + slide: false, + pause: 'hover', + wrap: true, + touch: true }; - var DefaultType$c = { - endCallback: '(function|null)', - leftCallback: '(function|null)', - rightCallback: '(function|null)' + var DefaultType$a = { + interval: '(number|boolean)', + keyboard: 'boolean', + slide: '(boolean|string)', + pause: '(string|boolean)', + wrap: 'boolean', + touch: 'boolean' }; - /** - * Class definition - */ - var Swipe = /*#__PURE__*/ function (_Config2) { - _inheritsLoose(Swipe, _Config2); - - function Swipe(element, config) { - var _this3; - _this3 = _Config2.call(this) || this; - _this3._element = element; - if (!element || !Swipe.isSupported()) { - return _assertThisInitialized(_this3); - } - _this3._config = _this3._getConfig(config); - _this3._deltaX = 0; - _this3._supportPointerEvents = Boolean(window.PointerEvent); - _this3._initEvents(); - return _this3; - } // Getters - var _proto5 = Swipe.prototype; - // Public - _proto5.dispose = function dispose() { - EventHandler.off(this._element, EVENT_KEY$9); - } // Private - ; - _proto5._start = function _start(event) { - if (!this._supportPointerEvents) { - this._deltaX = event.touches[0].clientX; - return; - } - if (this._eventIsPointerPenTouch(event)) { - this._deltaX = event.clientX; - } - }; - _proto5._end = function _end(event) { - if (this._eventIsPointerPenTouch(event)) { - this._deltaX = event.clientX - this._deltaX; - } - this._handleSwipe(); - execute(this._config.endCallback); - }; - _proto5._move = function _move(event) { - this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX; - }; - _proto5._handleSwipe = function _handleSwipe() { - var absDeltaX = Math.abs(this._deltaX); - if (absDeltaX <= SWIPE_THRESHOLD) { - return; - } - var direction = absDeltaX / this._deltaX; - this._deltaX = 0; - if (!direction) { - return; - } - execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback); - }; - _proto5._initEvents = function _initEvents() { - var _this4 = this; - if (this._supportPointerEvents) { - EventHandler.on(this._element, EVENT_POINTERDOWN, function (event) { - return _this4._start(event); - }); - EventHandler.on(this._element, EVENT_POINTERUP, function (event) { - return _this4._end(event); - }); - this._element.classList.add(CLASS_NAME_POINTER_EVENT); - } else { - EventHandler.on(this._element, EVENT_TOUCHSTART, function (event) { - return _this4._start(event); - }); - EventHandler.on(this._element, EVENT_TOUCHMOVE, function (event) { - return _this4._move(event); - }); - EventHandler.on(this._element, EVENT_TOUCHEND, function (event) { - return _this4._end(event); - }); - } - }; - _proto5._eventIsPointerPenTouch = function _eventIsPointerPenTouch(event) { - return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH); - } // Static - ; - Swipe.isSupported = function isSupported() { - return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0; - }; - _createClass(Swipe, null, [{ - key: "Default", - get: function get() { - return Default$c; - } - }, { - key: "DefaultType", - get: function get() { - return DefaultType$c; - } - }, { - key: "NAME", - get: function get() { - return NAME$d; - } - }]); - return Swipe; - }(Config); - /** - * -------------------------------------------------------------------------- - * Bootstrap (v5.2.2): carousel.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - /** - * Constants - */ - var NAME$c = 'carousel'; - var DATA_KEY$8 = 'bs.carousel'; - var EVENT_KEY$8 = "." + DATA_KEY$8; - var DATA_API_KEY$5 = '.data-api'; - var ARROW_LEFT_KEY$1 = 'ArrowLeft'; - var ARROW_RIGHT_KEY$1 = 'ArrowRight'; - var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch var ORDER_NEXT = 'next'; var ORDER_PREV = 'prev'; var DIRECTION_LEFT = 'left'; var DIRECTION_RIGHT = 'right'; - var EVENT_SLIDE = "slide" + EVENT_KEY$8; - var EVENT_SLID = "slid" + EVENT_KEY$8; - var EVENT_KEYDOWN$1 = "keydown" + EVENT_KEY$8; - var EVENT_MOUSEENTER$1 = "mouseenter" + EVENT_KEY$8; - var EVENT_MOUSELEAVE$1 = "mouseleave" + EVENT_KEY$8; - var EVENT_DRAG_START = "dragstart" + EVENT_KEY$8; - var EVENT_LOAD_DATA_API$3 = "load" + EVENT_KEY$8 + DATA_API_KEY$5; - var EVENT_CLICK_DATA_API$5 = "click" + EVENT_KEY$8 + DATA_API_KEY$5; + var KEY_TO_DIRECTION = (_KEY_TO_DIRECTION = {}, _KEY_TO_DIRECTION[ARROW_LEFT_KEY] = DIRECTION_RIGHT, _KEY_TO_DIRECTION[ARROW_RIGHT_KEY] = DIRECTION_LEFT, _KEY_TO_DIRECTION); + var EVENT_SLIDE = "slide" + EVENT_KEY$a; + var EVENT_SLID = "slid" + EVENT_KEY$a; + var EVENT_KEYDOWN = "keydown" + EVENT_KEY$a; + var EVENT_MOUSEENTER = "mouseenter" + EVENT_KEY$a; + var EVENT_MOUSELEAVE = "mouseleave" + EVENT_KEY$a; + var EVENT_TOUCHSTART = "touchstart" + EVENT_KEY$a; + var EVENT_TOUCHMOVE = "touchmove" + EVENT_KEY$a; + var EVENT_TOUCHEND = "touchend" + EVENT_KEY$a; + var EVENT_POINTERDOWN = "pointerdown" + EVENT_KEY$a; + var EVENT_POINTERUP = "pointerup" + EVENT_KEY$a; + var EVENT_DRAG_START = "dragstart" + EVENT_KEY$a; + var EVENT_LOAD_DATA_API$2 = "load" + EVENT_KEY$a + DATA_API_KEY$6; + var EVENT_CLICK_DATA_API$5 = "click" + EVENT_KEY$a + DATA_API_KEY$6; var CLASS_NAME_CAROUSEL = 'carousel'; var CLASS_NAME_ACTIVE$2 = 'active'; var CLASS_NAME_SLIDE = 'slide'; @@ -1229,384 +1151,441 @@ var CLASS_NAME_START = 'carousel-item-start'; var CLASS_NAME_NEXT = 'carousel-item-next'; var CLASS_NAME_PREV = 'carousel-item-prev'; - var SELECTOR_ACTIVE = '.active'; + var CLASS_NAME_POINTER_EVENT = 'pointer-event'; + var SELECTOR_ACTIVE$1 = '.active'; + var SELECTOR_ACTIVE_ITEM = '.active.carousel-item'; var SELECTOR_ITEM = '.carousel-item'; - var SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM; var SELECTOR_ITEM_IMG = '.carousel-item img'; + var SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'; var SELECTOR_INDICATORS = '.carousel-indicators'; + var SELECTOR_INDICATOR = '[data-bs-target]'; var SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'; var SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]'; - var KEY_TO_DIRECTION = (_KEY_TO_DIRECTION = {}, _KEY_TO_DIRECTION[ARROW_LEFT_KEY$1] = DIRECTION_RIGHT, _KEY_TO_DIRECTION[ARROW_RIGHT_KEY$1] = DIRECTION_LEFT, _KEY_TO_DIRECTION); - var Default$b = { - interval: 5000, - keyboard: true, - pause: 'hover', - ride: false, - touch: true, - wrap: true - }; - var DefaultType$b = { - interval: '(number|boolean)', - // TODO:v6 remove boolean support - keyboard: 'boolean', - pause: '(string|boolean)', - ride: '(boolean|string)', - touch: 'boolean', - wrap: 'boolean' - }; + var POINTER_TYPE_TOUCH = 'touch'; + var POINTER_TYPE_PEN = 'pen'; /** - * Class definition + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ */ var Carousel = /*#__PURE__*/ function (_BaseComponent3) { - _inheritsLoose(Carousel, _BaseComponent3); - function Carousel(element, config) { - var _this5; - _this5 = _BaseComponent3.call(this, element, config) || this; - _this5._interval = null; - _this5._activeElement = null; - _this5._isSliding = false; - _this5.touchTimeout = null; - _this5._swipeHelper = null; - _this5._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, _this5._element); - _this5._addEventListeners(); - if (_this5._config.ride === CLASS_NAME_CAROUSEL) { - _this5.cycle(); - } - return _this5; + var _this3; + _this3 = _BaseComponent3.call(this, element) || this; + _this3._items = null; + _this3._interval = null; + _this3._activeElement = null; + _this3._isPaused = false; + _this3._isSliding = false; + _this3.touchTimeout = null; + _this3.touchStartX = 0; + _this3.touchDeltaX = 0; + _this3._config = _this3._getConfig(config); + _this3._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, _this3._element); + _this3._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0; + _this3._pointerEvent = Boolean(window.PointerEvent); + _this3._addEventListeners(); + return _this3; } // Getters - var _proto6 = Carousel.prototype; + _inherits(Carousel, _BaseComponent3); + var _proto4 = Carousel.prototype; // Public - _proto6.next = function next() { + _proto4.next = function next() { this._slide(ORDER_NEXT); }; - _proto6.nextWhenVisible = function nextWhenVisible() { - // FIXME TODO use `document.visibilityState` + _proto4.nextWhenVisible = function nextWhenVisible() { // Don't call next when the page isn't visible // or the carousel or its parent isn't visible if (!document.hidden && isVisible(this._element)) { this.next(); } }; - _proto6.prev = function prev() { + _proto4.prev = function prev() { this._slide(ORDER_PREV); }; - _proto6.pause = function pause() { - if (this._isSliding) { + _proto4.pause = function pause(event) { + if (!event) { + this._isPaused = true; + } + if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) { triggerTransitionEnd(this._element); + this.cycle(true); } - this._clearInterval(); - }; - _proto6.cycle = function cycle() { - var _this6 = this; - this._clearInterval(); - this._updateInterval(); - this._interval = setInterval(function () { - return _this6.nextWhenVisible(); - }, this._config.interval); + clearInterval(this._interval); + this._interval = null; }; - _proto6._maybeEnableCycle = function _maybeEnableCycle() { - var _this7 = this; - if (!this._config.ride) { - return; + _proto4.cycle = function cycle(event) { + if (!event) { + this._isPaused = false; } - if (this._isSliding) { - EventHandler.one(this._element, EVENT_SLID, function () { - return _this7.cycle(); - }); - return; + if (this._interval) { + clearInterval(this._interval); + this._interval = null; + } + if (this._config && this._config.interval && !this._isPaused) { + this._updateInterval(); + this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval); } - this.cycle(); }; - _proto6.to = function to(index) { - var _this8 = this; - var items = this._getItems(); - if (index > items.length - 1 || index < 0) { + _proto4.to = function to(index) { + var _this4 = this; + this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element); + var activeIndex = this._getItemIndex(this._activeElement); + if (index > this._items.length - 1 || index < 0) { return; } if (this._isSliding) { EventHandler.one(this._element, EVENT_SLID, function () { - return _this8.to(index); + return _this4.to(index); }); return; } - var activeIndex = this._getItemIndex(this._getActive()); if (activeIndex === index) { + this.pause(); + this.cycle(); return; } var order = index > activeIndex ? ORDER_NEXT : ORDER_PREV; - this._slide(order, items[index]); - }; - _proto6.dispose = function dispose() { - if (this._swipeHelper) { - this._swipeHelper.dispose(); - } - _BaseComponent3.prototype.dispose.call(this); + this._slide(order, this._items[index]); } // Private ; - _proto6._configAfterMerge = function _configAfterMerge(config) { - config.defaultInterval = config.interval; + _proto4._getConfig = function _getConfig(config) { + config = _extends({}, Default$a, Manipulator.getDataAttributes(this._element), typeof config === 'object' ? config : {}); + typeCheckConfig(NAME$b, config, DefaultType$a); return config; }; - _proto6._addEventListeners = function _addEventListeners() { - var _this9 = this; + _proto4._handleSwipe = function _handleSwipe() { + var absDeltax = Math.abs(this.touchDeltaX); + if (absDeltax <= SWIPE_THRESHOLD) { + return; + } + var direction = absDeltax / this.touchDeltaX; + this.touchDeltaX = 0; + if (!direction) { + return; + } + this._slide(direction > 0 ? DIRECTION_RIGHT : DIRECTION_LEFT); + }; + _proto4._addEventListeners = function _addEventListeners() { + var _this5 = this; if (this._config.keyboard) { - EventHandler.on(this._element, EVENT_KEYDOWN$1, function (event) { - return _this9._keydown(event); + EventHandler.on(this._element, EVENT_KEYDOWN, function (event) { + return _this5._keydown(event); }); } if (this._config.pause === 'hover') { - EventHandler.on(this._element, EVENT_MOUSEENTER$1, function () { - return _this9.pause(); + EventHandler.on(this._element, EVENT_MOUSEENTER, function (event) { + return _this5.pause(event); }); - EventHandler.on(this._element, EVENT_MOUSELEAVE$1, function () { - return _this9._maybeEnableCycle(); + EventHandler.on(this._element, EVENT_MOUSELEAVE, function (event) { + return _this5.cycle(event); }); } - if (this._config.touch && Swipe.isSupported()) { + if (this._config.touch && this._touchSupported) { this._addTouchEventListeners(); } }; - _proto6._addTouchEventListeners = function _addTouchEventListeners() { - var _this10 = this; - for (var _iterator5 = _createForOfIteratorHelperLoose(SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)), _step5; !(_step5 = _iterator5()).done;) { - var img = _step5.value; - EventHandler.on(img, EVENT_DRAG_START, function (event) { - return event.preventDefault(); - }); - } - var endCallBack = function endCallBack() { - if (_this10._config.pause !== 'hover') { - return; - } // If it's a touch-enabled device, mouseenter/leave are fired as - // part of the mouse compatibility events on first tap - the carousel - // would stop cycling until user tapped out of it; - // here, we listen for touchend, explicitly pause the carousel - // (as if it's the second time we tap on it, mouseenter compat event - // is NOT fired) and after a timeout (to allow for mouse compatibility - // events to fire) we explicitly restart cycling - _this10.pause(); - if (_this10.touchTimeout) { - clearTimeout(_this10.touchTimeout); + _proto4._addTouchEventListeners = function _addTouchEventListeners() { + var _this6 = this; + var hasPointerPenTouch = function hasPointerPenTouch(event) { + return _this6._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH); + }; + var start = function start(event) { + if (hasPointerPenTouch(event)) { + _this6.touchStartX = event.clientX; + } else if (!_this6._pointerEvent) { + _this6.touchStartX = event.touches[0].clientX; } - _this10.touchTimeout = setTimeout(function () { - return _this10._maybeEnableCycle(); - }, TOUCHEVENT_COMPAT_WAIT + _this10._config.interval); }; - var swipeConfig = { - leftCallback: function leftCallback() { - return _this10._slide(_this10._directionToOrder(DIRECTION_LEFT)); - }, - rightCallback: function rightCallback() { - return _this10._slide(_this10._directionToOrder(DIRECTION_RIGHT)); - }, - endCallback: endCallBack + var move = function move(event) { + // ensure swiping with one touch and not pinching + _this6.touchDeltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - _this6.touchStartX; + }; + var end = function end(event) { + if (hasPointerPenTouch(event)) { + _this6.touchDeltaX = event.clientX - _this6.touchStartX; + } + _this6._handleSwipe(); + if (_this6._config.pause === 'hover') { + // If it's a touch-enabled device, mouseenter/leave are fired as + // part of the mouse compatibility events on first tap - the carousel + // would stop cycling until user tapped out of it; + // here, we listen for touchend, explicitly pause the carousel + // (as if it's the second time we tap on it, mouseenter compat event + // is NOT fired) and after a timeout (to allow for mouse compatibility + // events to fire) we explicitly restart cycling + _this6.pause(); + if (_this6.touchTimeout) { + clearTimeout(_this6.touchTimeout); + } + _this6.touchTimeout = setTimeout(function (event) { + return _this6.cycle(event); + }, TOUCHEVENT_COMPAT_WAIT + _this6._config.interval); + } }; - this._swipeHelper = new Swipe(this._element, swipeConfig); + SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(function (itemImg) { + EventHandler.on(itemImg, EVENT_DRAG_START, function (event) { + return event.preventDefault(); + }); + }); + if (this._pointerEvent) { + EventHandler.on(this._element, EVENT_POINTERDOWN, function (event) { + return start(event); + }); + EventHandler.on(this._element, EVENT_POINTERUP, function (event) { + return end(event); + }); + this._element.classList.add(CLASS_NAME_POINTER_EVENT); + } else { + EventHandler.on(this._element, EVENT_TOUCHSTART, function (event) { + return start(event); + }); + EventHandler.on(this._element, EVENT_TOUCHMOVE, function (event) { + return move(event); + }); + EventHandler.on(this._element, EVENT_TOUCHEND, function (event) { + return end(event); + }); + } }; - _proto6._keydown = function _keydown(event) { + _proto4._keydown = function _keydown(event) { if (/input|textarea/i.test(event.target.tagName)) { return; } var direction = KEY_TO_DIRECTION[event.key]; if (direction) { event.preventDefault(); - this._slide(this._directionToOrder(direction)); + this._slide(direction); } }; - _proto6._getItemIndex = function _getItemIndex(element) { - return this._getItems().indexOf(element); + _proto4._getItemIndex = function _getItemIndex(element) { + this._items = element && element.parentNode ? SelectorEngine.find(SELECTOR_ITEM, element.parentNode) : []; + return this._items.indexOf(element); }; - _proto6._setActiveIndicatorElement = function _setActiveIndicatorElement(index) { - if (!this._indicatorsElement) { - return; - } - var activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement); - activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2); - activeIndicator.removeAttribute('aria-current'); - var newActiveIndicator = SelectorEngine.findOne("[data-bs-slide-to=\"" + index + "\"]", this._indicatorsElement); - if (newActiveIndicator) { - newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2); - newActiveIndicator.setAttribute('aria-current', 'true'); + _proto4._getItemByOrder = function _getItemByOrder(order, activeElement) { + var isNext = order === ORDER_NEXT; + return getNextActiveElement(this._items, activeElement, isNext, this._config.wrap); + }; + _proto4._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) { + var targetIndex = this._getItemIndex(relatedTarget); + var fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)); + return EventHandler.trigger(this._element, EVENT_SLIDE, { + relatedTarget: relatedTarget, + direction: eventDirectionName, + from: fromIndex, + to: targetIndex + }); + }; + _proto4._setActiveIndicatorElement = function _setActiveIndicatorElement(element) { + if (this._indicatorsElement) { + var activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE$1, this._indicatorsElement); + activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2); + activeIndicator.removeAttribute('aria-current'); + var indicators = SelectorEngine.find(SELECTOR_INDICATOR, this._indicatorsElement); + for (var i = 0; i < indicators.length; i++) { + if (Number.parseInt(indicators[i].getAttribute('data-bs-slide-to'), 10) === this._getItemIndex(element)) { + indicators[i].classList.add(CLASS_NAME_ACTIVE$2); + indicators[i].setAttribute('aria-current', 'true'); + break; + } + } } }; - _proto6._updateInterval = function _updateInterval() { - var element = this._activeElement || this._getActive(); + _proto4._updateInterval = function _updateInterval() { + var element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element); if (!element) { return; } var elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10); - this._config.interval = elementInterval || this._config.defaultInterval; - }; - _proto6._slide = function _slide(order, element) { - var _this11 = this; - if (element === void 0) { - element = null; + if (elementInterval) { + this._config.defaultInterval = this._config.defaultInterval || this._config.interval; + this._config.interval = elementInterval; + } else { + this._config.interval = this._config.defaultInterval || this._config.interval; } - if (this._isSliding) { + }; + _proto4._slide = function _slide(directionOrOrder, element) { + var _this7 = this; + var order = this._directionToOrder(directionOrOrder); + var activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element); + var activeElementIndex = this._getItemIndex(activeElement); + var nextElement = element || this._getItemByOrder(order, activeElement); + var nextElementIndex = this._getItemIndex(nextElement); + var isCycling = Boolean(this._interval); + var isNext = order === ORDER_NEXT; + var directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END; + var orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV; + var eventDirectionName = this._orderToDirection(order); + if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE$2)) { + this._isSliding = false; return; } - var activeElement = this._getActive(); - var isNext = order === ORDER_NEXT; - var nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap); - if (nextElement === activeElement) { + if (this._isSliding) { return; } - var nextElementIndex = this._getItemIndex(nextElement); - var triggerEvent = function triggerEvent(eventName) { - return EventHandler.trigger(_this11._element, eventName, { - relatedTarget: nextElement, - direction: _this11._orderToDirection(order), - from: _this11._getItemIndex(activeElement), - to: nextElementIndex - }); - }; - var slideEvent = triggerEvent(EVENT_SLIDE); + var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName); if (slideEvent.defaultPrevented) { return; } if (!activeElement || !nextElement) { // Some weirdness is happening, so we bail - // todo: change tests that use empty divs to avoid this check return; } - var isCycling = Boolean(this._interval); - this.pause(); this._isSliding = true; - this._setActiveIndicatorElement(nextElementIndex); + if (isCycling) { + this.pause(); + } + this._setActiveIndicatorElement(nextElement); this._activeElement = nextElement; - var directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END; - var orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV; - nextElement.classList.add(orderClassName); - reflow(nextElement); - activeElement.classList.add(directionalClassName); - nextElement.classList.add(directionalClassName); - var completeCallBack = function completeCallBack() { - nextElement.classList.remove(directionalClassName, orderClassName); - nextElement.classList.add(CLASS_NAME_ACTIVE$2); - activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName); - _this11._isSliding = false; - triggerEvent(EVENT_SLID); + var triggerSlidEvent = function triggerSlidEvent() { + EventHandler.trigger(_this7._element, EVENT_SLID, { + relatedTarget: nextElement, + direction: eventDirectionName, + from: activeElementIndex, + to: nextElementIndex + }); }; - this._queueCallback(completeCallBack, activeElement, this._isAnimated()); + if (this._element.classList.contains(CLASS_NAME_SLIDE)) { + nextElement.classList.add(orderClassName); + reflow(nextElement); + activeElement.classList.add(directionalClassName); + nextElement.classList.add(directionalClassName); + var completeCallBack = function completeCallBack() { + nextElement.classList.remove(directionalClassName, orderClassName); + nextElement.classList.add(CLASS_NAME_ACTIVE$2); + activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName); + _this7._isSliding = false; + setTimeout(triggerSlidEvent, 0); + }; + this._queueCallback(completeCallBack, activeElement, true); + } else { + activeElement.classList.remove(CLASS_NAME_ACTIVE$2); + nextElement.classList.add(CLASS_NAME_ACTIVE$2); + this._isSliding = false; + triggerSlidEvent(); + } if (isCycling) { this.cycle(); } }; - _proto6._isAnimated = function _isAnimated() { - return this._element.classList.contains(CLASS_NAME_SLIDE); - }; - _proto6._getActive = function _getActive() { - return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element); - }; - _proto6._getItems = function _getItems() { - return SelectorEngine.find(SELECTOR_ITEM, this._element); - }; - _proto6._clearInterval = function _clearInterval() { - if (this._interval) { - clearInterval(this._interval); - this._interval = null; + _proto4._directionToOrder = function _directionToOrder(direction) { + if (![DIRECTION_RIGHT, DIRECTION_LEFT].includes(direction)) { + return direction; } - }; - _proto6._directionToOrder = function _directionToOrder(direction) { if (isRTL()) { return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT; } return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV; }; - _proto6._orderToDirection = function _orderToDirection(order) { + _proto4._orderToDirection = function _orderToDirection(order) { + if (![ORDER_NEXT, ORDER_PREV].includes(order)) { + return order; + } if (isRTL()) { return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT; } return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT; } // Static ; + Carousel.carouselInterface = function carouselInterface(element, config) { + var data = Carousel.getOrCreateInstance(element, config); + var _config = data._config; + if (typeof config === 'object') { + _config = _extends({}, _config, config); + } + var action = typeof config === 'string' ? config : _config.slide; + if (typeof config === 'number') { + data.to(config); + } else if (typeof action === 'string') { + if (typeof data[action] === 'undefined') { + throw new TypeError("No method named \"" + action + "\""); + } + data[action](); + } else if (_config.interval && _config.ride) { + data.pause(); + data.cycle(); + } + }; Carousel.jQueryInterface = function jQueryInterface(config) { return this.each(function () { - var data = Carousel.getOrCreateInstance(this, config); - if (typeof config === 'number') { - data.to(config); - return; - } - if (typeof config === 'string') { - if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { - throw new TypeError("No method named \"" + config + "\""); - } - data[config](); - } + Carousel.carouselInterface(this, config); }); }; - _createClass(Carousel, null, [{ - key: "Default", - get: function get() { - return Default$b; + Carousel.dataApiClickHandler = function dataApiClickHandler(event) { + var target = getElementFromSelector(this); + if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) { + return; } - }, { - key: "DefaultType", + var config = _extends({}, Manipulator.getDataAttributes(target), Manipulator.getDataAttributes(this)); + var slideIndex = this.getAttribute('data-bs-slide-to'); + if (slideIndex) { + config.interval = false; + } + Carousel.carouselInterface(target, config); + if (slideIndex) { + Carousel.getInstance(target).to(slideIndex); + } + event.preventDefault(); + }; + return _createClass(Carousel, null, [{ + key: "Default", get: function get() { - return DefaultType$b; + return Default$a; } }, { key: "NAME", get: function get() { - return NAME$c; + return NAME$b; } }]); - return Carousel; }(BaseComponent); /** - * Data API implementation + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ */ - EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function (event) { - var target = getElementFromSelector(this); - if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) { - return; - } - event.preventDefault(); - var carousel = Carousel.getOrCreateInstance(target); - var slideIndex = this.getAttribute('data-bs-slide-to'); - if (slideIndex) { - carousel.to(slideIndex); - carousel._maybeEnableCycle(); - return; - } - if (Manipulator.getDataAttribute(this, 'slide') === 'next') { - carousel.next(); - carousel._maybeEnableCycle(); - return; - } - carousel.prev(); - carousel._maybeEnableCycle(); - }); - EventHandler.on(window, EVENT_LOAD_DATA_API$3, function () { + EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler); + EventHandler.on(window, EVENT_LOAD_DATA_API$2, function () { var carousels = SelectorEngine.find(SELECTOR_DATA_RIDE); - for (var _iterator6 = _createForOfIteratorHelperLoose(carousels), _step6; !(_step6 = _iterator6()).done;) { - var carousel = _step6.value; - Carousel.getOrCreateInstance(carousel); + for (var i = 0, len = carousels.length; i < len; i++) { + Carousel.carouselInterface(carousels[i], Carousel.getInstance(carousels[i])); } }); /** + * ------------------------------------------------------------------------ * jQuery + * ------------------------------------------------------------------------ + * add .Carousel to jQuery only if jQuery is present */ defineJQueryPlugin(Carousel); /** * -------------------------------------------------------------------------- - * Bootstrap (v5.2.2): collapse.js + * Bootstrap (v5.1.3): collapse.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ /** + * ------------------------------------------------------------------------ * Constants + * ------------------------------------------------------------------------ */ - var NAME$b = 'collapse'; - var DATA_KEY$7 = 'bs.collapse'; - var EVENT_KEY$7 = "." + DATA_KEY$7; - var DATA_API_KEY$4 = '.data-api'; - var EVENT_SHOW$6 = "show" + EVENT_KEY$7; - var EVENT_SHOWN$6 = "shown" + EVENT_KEY$7; - var EVENT_HIDE$6 = "hide" + EVENT_KEY$7; - var EVENT_HIDDEN$6 = "hidden" + EVENT_KEY$7; - var EVENT_CLICK_DATA_API$4 = "click" + EVENT_KEY$7 + DATA_API_KEY$4; + var NAME$a = 'collapse'; + var DATA_KEY$9 = 'bs.collapse'; + var EVENT_KEY$9 = "." + DATA_KEY$9; + var DATA_API_KEY$5 = '.data-api'; + var Default$9 = { + toggle: true, + parent: null + }; + var DefaultType$9 = { + toggle: 'boolean', + parent: '(null|element)' + }; + var EVENT_SHOW$5 = "show" + EVENT_KEY$9; + var EVENT_SHOWN$5 = "shown" + EVENT_KEY$9; + var EVENT_HIDE$5 = "hide" + EVENT_KEY$9; + var EVENT_HIDDEN$5 = "hidden" + EVENT_KEY$9; + var EVENT_CLICK_DATA_API$4 = "click" + EVENT_KEY$9 + DATA_API_KEY$5; var CLASS_NAME_SHOW$7 = 'show'; var CLASS_NAME_COLLAPSE = 'collapse'; var CLASS_NAME_COLLAPSING = 'collapsing'; @@ -1617,80 +1596,86 @@ var HEIGHT = 'height'; var SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'; var SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle="collapse"]'; - var Default$a = { - parent: null, - toggle: true - }; - var DefaultType$a = { - parent: '(null|element)', - toggle: 'boolean' - }; /** - * Class definition + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ */ var Collapse = /*#__PURE__*/ function (_BaseComponent4) { - _inheritsLoose(Collapse, _BaseComponent4); - function Collapse(element, config) { - var _this12; - _this12 = _BaseComponent4.call(this, element, config) || this; - _this12._isTransitioning = false; - _this12._triggerArray = []; + var _this8; + _this8 = _BaseComponent4.call(this, element) || this; + _this8._isTransitioning = false; + _this8._config = _this8._getConfig(config); + _this8._triggerArray = []; var toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4); - for (var _iterator7 = _createForOfIteratorHelperLoose(toggleList), _step7; !(_step7 = _iterator7()).done;) { - var elem = _step7.value; + for (var i = 0, len = toggleList.length; i < len; i++) { + var elem = toggleList[i]; var selector = getSelectorFromElement(elem); - var filterElement = SelectorEngine.find(selector).filter(function (foundElement) { - return foundElement === _this12._element; + var filterElement = SelectorEngine.find(selector).filter(function (foundElem) { + return foundElem === _this8._element; }); if (selector !== null && filterElement.length) { - _this12._triggerArray.push(elem); + _this8._selector = selector; + _this8._triggerArray.push(elem); } } - _this12._initializeChildren(); - if (!_this12._config.parent) { - _this12._addAriaAndCollapsedClass(_this12._triggerArray, _this12._isShown()); + _this8._initializeChildren(); + if (!_this8._config.parent) { + _this8._addAriaAndCollapsedClass(_this8._triggerArray, _this8._isShown()); } - if (_this12._config.toggle) { - _this12.toggle(); + if (_this8._config.toggle) { + _this8.toggle(); } - return _this12; + return _this8; } // Getters - var _proto7 = Collapse.prototype; + _inherits(Collapse, _BaseComponent4); + var _proto5 = Collapse.prototype; // Public - _proto7.toggle = function toggle() { + _proto5.toggle = function toggle() { if (this._isShown()) { this.hide(); } else { this.show(); } }; - _proto7.show = function show() { - var _this13 = this; + _proto5.show = function show() { + var _this9 = this; if (this._isTransitioning || this._isShown()) { return; } - var activeChildren = []; // find active children + var actives = []; + var activesData; if (this._config.parent) { - activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(function (element) { - return element !== _this13._element; - }).map(function (element) { - return Collapse.getOrCreateInstance(element, { - toggle: false - }); + var children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent); + actives = SelectorEngine.find(SELECTOR_ACTIVES, this._config.parent).filter(function (elem) { + return !children.includes(elem); + }); // remove children if greater depth + } + var container = SelectorEngine.findOne(this._selector); + if (actives.length) { + var tempActiveData = actives.find(function (elem) { + return container !== elem; }); + activesData = tempActiveData ? Collapse.getInstance(tempActiveData) : null; + if (activesData && activesData._isTransitioning) { + return; + } } - if (activeChildren.length && activeChildren[0]._isTransitioning) { - return; - } - var startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6); + var startEvent = EventHandler.trigger(this._element, EVENT_SHOW$5); if (startEvent.defaultPrevented) { return; } - for (var _iterator8 = _createForOfIteratorHelperLoose(activeChildren), _step8; !(_step8 = _iterator8()).done;) { - var activeInstance = _step8.value; - activeInstance.hide(); - } + actives.forEach(function (elemActive) { + if (container !== elemActive) { + Collapse.getOrCreateInstance(elemActive, { + toggle: false + }).hide(); + } + if (!activesData) { + Data.set(elemActive, DATA_KEY$9, null); + } + }); var dimension = this._getDimension(); this._element.classList.remove(CLASS_NAME_COLLAPSE); this._element.classList.add(CLASS_NAME_COLLAPSING); @@ -1698,23 +1683,23 @@ this._addAriaAndCollapsedClass(this._triggerArray, true); this._isTransitioning = true; var complete = function complete() { - _this13._isTransitioning = false; - _this13._element.classList.remove(CLASS_NAME_COLLAPSING); - _this13._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7); - _this13._element.style[dimension] = ''; - EventHandler.trigger(_this13._element, EVENT_SHOWN$6); + _this9._isTransitioning = false; + _this9._element.classList.remove(CLASS_NAME_COLLAPSING); + _this9._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7); + _this9._element.style[dimension] = ''; + EventHandler.trigger(_this9._element, EVENT_SHOWN$5); }; var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); var scrollSize = "scroll" + capitalizedDimension; this._queueCallback(complete, this._element, true); this._element.style[dimension] = this._element[scrollSize] + "px"; }; - _proto7.hide = function hide() { - var _this14 = this; + _proto5.hide = function hide() { + var _this10 = this; if (this._isTransitioning || !this._isShown()) { return; } - var startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6); + var startEvent = EventHandler.trigger(this._element, EVENT_HIDE$5); if (startEvent.defaultPrevented) { return; } @@ -1723,74 +1708,76 @@ reflow(this._element); this._element.classList.add(CLASS_NAME_COLLAPSING); this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7); - for (var _iterator9 = _createForOfIteratorHelperLoose(this._triggerArray), _step9; !(_step9 = _iterator9()).done;) { - var trigger = _step9.value; - var element = getElementFromSelector(trigger); - if (element && !this._isShown(element)) { + var triggerArrayLength = this._triggerArray.length; + for (var i = 0; i < triggerArrayLength; i++) { + var trigger = this._triggerArray[i]; + var elem = getElementFromSelector(trigger); + if (elem && !this._isShown(elem)) { this._addAriaAndCollapsedClass([trigger], false); } } this._isTransitioning = true; var complete = function complete() { - _this14._isTransitioning = false; - _this14._element.classList.remove(CLASS_NAME_COLLAPSING); - _this14._element.classList.add(CLASS_NAME_COLLAPSE); - EventHandler.trigger(_this14._element, EVENT_HIDDEN$6); + _this10._isTransitioning = false; + _this10._element.classList.remove(CLASS_NAME_COLLAPSING); + _this10._element.classList.add(CLASS_NAME_COLLAPSE); + EventHandler.trigger(_this10._element, EVENT_HIDDEN$5); }; this._element.style[dimension] = ''; this._queueCallback(complete, this._element, true); }; - _proto7._isShown = function _isShown(element) { + _proto5._isShown = function _isShown(element) { if (element === void 0) { element = this._element; } return element.classList.contains(CLASS_NAME_SHOW$7); } // Private ; - _proto7._configAfterMerge = function _configAfterMerge(config) { + _proto5._getConfig = function _getConfig(config) { + config = _extends({}, Default$9, Manipulator.getDataAttributes(this._element), config); config.toggle = Boolean(config.toggle); // Coerce string values config.parent = getElement(config.parent); + typeCheckConfig(NAME$a, config, DefaultType$9); return config; }; - _proto7._getDimension = function _getDimension() { + _proto5._getDimension = function _getDimension() { return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT; }; - _proto7._initializeChildren = function _initializeChildren() { + _proto5._initializeChildren = function _initializeChildren() { + var _this11 = this; if (!this._config.parent) { return; } - var children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4); - for (var _iterator10 = _createForOfIteratorHelperLoose(children), _step10; !(_step10 = _iterator10()).done;) { - var element = _step10.value; + var children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent); + SelectorEngine.find(SELECTOR_DATA_TOGGLE$4, this._config.parent).filter(function (elem) { + return !children.includes(elem); + }).forEach(function (element) { var selected = getElementFromSelector(element); if (selected) { - this._addAriaAndCollapsedClass([element], this._isShown(selected)); + _this11._addAriaAndCollapsedClass([element], _this11._isShown(selected)); } - } - }; - _proto7._getFirstLevelChildren = function _getFirstLevelChildren(selector) { - var children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent); // remove children if greater depth - return SelectorEngine.find(selector, this._config.parent).filter(function (element) { - return !children.includes(element); }); }; - _proto7._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(triggerArray, isOpen) { + _proto5._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(triggerArray, isOpen) { if (!triggerArray.length) { return; } - for (var _iterator11 = _createForOfIteratorHelperLoose(triggerArray), _step11; !(_step11 = _iterator11()).done;) { - var element = _step11.value; - element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen); - element.setAttribute('aria-expanded', isOpen); - } + triggerArray.forEach(function (elem) { + if (isOpen) { + elem.classList.remove(CLASS_NAME_COLLAPSED); + } else { + elem.classList.add(CLASS_NAME_COLLAPSED); + } + elem.setAttribute('aria-expanded', isOpen); + }); } // Static ; Collapse.jQueryInterface = function jQueryInterface(config) { - var _config = {}; - if (typeof config === 'string' && /show|hide/.test(config)) { - _config.toggle = false; - } return this.each(function () { + var _config = {}; + if (typeof config === 'string' && /show|hide/.test(config)) { + _config.toggle = false; + } var data = Collapse.getOrCreateInstance(this, _config); if (typeof config === 'string') { if (typeof data[config] === 'undefined') { @@ -1800,26 +1787,22 @@ } }); }; - _createClass(Collapse, null, [{ + return _createClass(Collapse, null, [{ key: "Default", get: function get() { - return Default$a; - } - }, { - key: "DefaultType", - get: function get() { - return DefaultType$a; + return Default$9; } }, { key: "NAME", get: function get() { - return NAME$b; + return NAME$a; } }]); - return Collapse; }(BaseComponent); /** - * Data API implementation + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ */ EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) { // preventDefault only for elements (which change the URL) not inside the collapsible element @@ -1828,15 +1811,17 @@ } var selector = getSelectorFromElement(this); var selectorElements = SelectorEngine.find(selector); - for (var _iterator12 = _createForOfIteratorHelperLoose(selectorElements), _step12; !(_step12 = _iterator12()).done;) { - var element = _step12.value; + selectorElements.forEach(function (element) { Collapse.getOrCreateInstance(element, { toggle: false }).toggle(); - } + }); }); /** + * ------------------------------------------------------------------------ * jQuery + * ------------------------------------------------------------------------ + * add .Collapse to jQuery only if jQuery is present */ defineJQueryPlugin(Collapse); var top = 'top'; @@ -1975,54 +1960,38 @@ function getBasePlacement(placement) { return placement.split('-')[0]; } - var max = Math.max; - var min = Math.min; - var round = Math.round; - - function getUAString() { - var uaData = navigator.userAgentData; - if (uaData != null && uaData.brands) { - return uaData.brands.map(function (item) { - return item.brand + "/" + item.version; - }).join(' '); - } - return navigator.userAgent; - } - - function isLayoutViewport() { - return !/^((?!chrome|android).)*safari/i.test(getUAString()); - } - - function getBoundingClientRect(element, includeScale, isFixedStrategy) { - if (includeScale === void 0) { - includeScale = false; - } - if (isFixedStrategy === void 0) { - isFixedStrategy = false; - } - var clientRect = element.getBoundingClientRect(); + // import { isHTMLElement } from './instanceOf'; + function getBoundingClientRect(element, + // eslint-disable-next-line unused-imports/no-unused-vars + includeScale) { + var rect = element.getBoundingClientRect(); var scaleX = 1; - var scaleY = 1; - if (includeScale && isHTMLElement(element)) { - scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1; - scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1; - } - var _ref = isElement(element) ? getWindow(element) : window, - visualViewport = _ref.visualViewport; - var addVisualOffsets = !isLayoutViewport() && isFixedStrategy; - var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX; - var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY; - var width = clientRect.width / scaleX; - var height = clientRect.height / scaleY; + var scaleY = 1; // FIXME: + // `offsetWidth` returns an integer while `getBoundingClientRect` + // returns a float. This results in `scaleX` or `scaleY` being + // non-1 when it should be for elements that aren't a full pixel in + // width or height. + // if (isHTMLElement(element) && includeScale) { + // const offsetHeight = element.offsetHeight; + // const offsetWidth = element.offsetWidth; + // // Do not attempt to divide by 0, otherwise we get `Infinity` as scale + // // Fallback to 1 in case both values are `0` + // if (offsetWidth > 0) { + // scaleX = rect.width / offsetWidth || 1; + // } + // if (offsetHeight > 0) { + // scaleY = rect.height / offsetHeight || 1; + // } + // } return { - width: width, - height: height, - top: y, - right: x + width, - bottom: y + height, - left: x, - x: x, - y: y + width: rect.width / scaleX, + height: rect.height / scaleY, + top: rect.top / scaleY, + right: rect.right / scaleX, + bottom: rect.bottom / scaleY, + left: rect.left / scaleX, + x: rect.left / scaleX, + y: rect.top / scaleY }; } // means it doesn't take into account transforms. @@ -2106,8 +2075,8 @@ } // `.offsetParent` reports `null` for fixed elements, while absolute elements // return the containing block function getContainingBlock(element) { - var isFirefox = /firefox/i.test(getUAString()); - var isIE = /Trident/i.test(getUAString()); + var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1; + var isIE = navigator.userAgent.indexOf('Trident') !== -1; if (isIE && isHTMLElement(element)) { // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport var elementCss = getComputedStyle$1(element); @@ -2116,9 +2085,6 @@ } } var currentNode = getParentNode(element); - if (isShadowRoot(currentNode)) { - currentNode = currentNode.host; - } while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) { var css = getComputedStyle$1(currentNode); // This is non-exhaustive but covers the most common CSS properties that // create a containing block. @@ -2147,16 +2113,14 @@ function getMainAxisFromPlacement(placement) { return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y'; } + var max = Math.max; + var min = Math.min; + var round = Math.round; function within(min$1, value, max$1) { return max(min$1, min(value, max$1)); } - function withinMaxClamp(min, value, max) { - var v = within(min, value, max); - return v > max ? max : v; - } - function getFreshSideObject() { return { top: 0, @@ -2261,8 +2225,8 @@ var win = window; var dpr = win.devicePixelRatio || 1; return { - x: round(x * dpr) / dpr || 0, - y: round(y * dpr) / dpr || 0 + x: round(round(x * dpr) / dpr) || 0, + y: round(round(y * dpr) / dpr) || 0 }; } @@ -2276,21 +2240,12 @@ position = _ref2.position, gpuAcceleration = _ref2.gpuAcceleration, adaptive = _ref2.adaptive, - roundOffsets = _ref2.roundOffsets, - isFixed = _ref2.isFixed; - var _offsets$x = offsets.x, - x = _offsets$x === void 0 ? 0 : _offsets$x, - _offsets$y = offsets.y, - y = _offsets$y === void 0 ? 0 : _offsets$y; - var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({ - x: x, - y: y - }) : { - x: x, - y: y - }; - x = _ref3.x; - y = _ref3.y; + roundOffsets = _ref2.roundOffsets; + 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; var hasX = offsets.hasOwnProperty('x'); var hasY = offsets.hasOwnProperty('y'); var sideX = left; @@ -2309,34 +2264,19 @@ } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it offsetParent = offsetParent; if (placement === top || (placement === left || placement === right) && variation === end) { - sideY = bottom; - var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : - // $FlowFixMe[prop-missing] - offsetParent[heightProp]; - y -= offsetY - popperRect.height; + sideY = bottom; // $FlowFixMe[prop-missing] + y -= offsetParent[heightProp] - popperRect.height; y *= gpuAcceleration ? 1 : -1; } if (placement === left || (placement === top || placement === bottom) && variation === end) { - sideX = right; - var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : - // $FlowFixMe[prop-missing] - offsetParent[widthProp]; - x -= offsetX - popperRect.width; + sideX = right; // $FlowFixMe[prop-missing] + x -= offsetParent[widthProp] - popperRect.width; x *= gpuAcceleration ? 1 : -1; } } var commonStyles = Object.assign({ position: position }, adaptive && unsetSides); - var _ref4 = roundOffsets === true ? roundOffsetsByDPR({ - x: x, - y: y - }) : { - x: x, - y: y - }; - x = _ref4.x; - y = _ref4.y; if (gpuAcceleration) { var _Object$assign; 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)); @@ -2344,9 +2284,9 @@ return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2)); } - function computeStyles(_ref5) { - var state = _ref5.state, - options = _ref5.options; + function computeStyles(_ref4) { + var state = _ref4.state, + options = _ref4.options; var _options$gpuAccelerat = options.gpuAcceleration, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, _options$adaptive = options.adaptive, @@ -2358,8 +2298,7 @@ variation: getVariation(state.placement), popper: state.elements.popper, popperRect: state.rects.popper, - gpuAcceleration: gpuAcceleration, - isFixed: state.options.strategy === 'fixed' + gpuAcceleration: gpuAcceleration }; if (state.modifiersData.popperOffsets != null) { state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, { @@ -2473,19 +2412,29 @@ return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft; } - function getViewportRect(element, strategy) { + function getViewportRect(element) { var win = getWindow(element); var html = getDocumentElement(element); var visualViewport = win.visualViewport; var width = html.clientWidth; var height = html.clientHeight; var x = 0; - var y = 0; + var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper + // can be obscured underneath it. + // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even + // if it isn't open, so if this isn't available, the popper will be detected + // to overflow the bottom of the screen too early. if (visualViewport) { width = visualViewport.width; - height = visualViewport.height; - var layoutViewport = isLayoutViewport(); - if (layoutViewport || !layoutViewport && strategy === 'fixed') { + height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently) + // In Chrome, it returns a value very close to 0 (+/-) but contains rounding + // errors due to floating point numbers, so we need to check precision. + // Safari returns a number <= 0, usually < -1 when pinch-zoomed + // Feature detection fails in mobile emulation mode in Chrome. + // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) < + // 0.001 + // Fallback here: "Not Safari" userAgent + if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) { x = visualViewport.offsetLeft; y = visualViewport.offsetTop; } @@ -2567,8 +2516,8 @@ }); } - function getInnerBoundingClientRect(element, strategy) { - var rect = getBoundingClientRect(element, false, strategy === 'fixed'); + function getInnerBoundingClientRect(element) { + var rect = getBoundingClientRect(element); rect.top = rect.top + element.clientTop; rect.left = rect.left + element.clientLeft; rect.bottom = rect.top + element.clientHeight; @@ -2580,8 +2529,8 @@ return rect; } - function getClientRectFromMixedType(element, clippingParent, strategy) { - return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element))); + function getClientRectFromMixedType(element, clippingParent) { + return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element))); } // A "clipping parent" is an overflowable container with the characteristic of // clipping (or hiding) overflowing elements with a position different from // `initial` @@ -2597,18 +2546,18 @@ }); } // Gets the maximum area that the element is visible in due to any number of // clipping parents - function getClippingRect(element, boundary, rootBoundary, strategy) { + function getClippingRect(element, boundary, rootBoundary) { var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary); var clippingParents = [].concat(mainClippingParents, [rootBoundary]); var firstClippingParent = clippingParents[0]; var clippingRect = clippingParents.reduce(function (accRect, clippingParent) { - var rect = getClientRectFromMixedType(element, clippingParent, strategy); + var rect = getClientRectFromMixedType(element, clippingParent); accRect.top = max(rect.top, accRect.top); accRect.right = min(rect.right, accRect.right); accRect.bottom = min(rect.bottom, accRect.bottom); accRect.left = max(rect.left, accRect.left); return accRect; - }, getClientRectFromMixedType(element, firstClippingParent, strategy)); + }, getClientRectFromMixedType(element, firstClippingParent)); clippingRect.width = clippingRect.right - clippingRect.left; clippingRect.height = clippingRect.bottom - clippingRect.top; clippingRect.x = clippingRect.left; @@ -2678,8 +2627,6 @@ var _options = options, _options$placement = _options.placement, placement = _options$placement === void 0 ? state.placement : _options$placement, - _options$strategy = _options.strategy, - strategy = _options$strategy === void 0 ? state.strategy : _options$strategy, _options$boundary = _options.boundary, boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, _options$rootBoundary = _options.rootBoundary, @@ -2694,7 +2641,7 @@ var altContext = elementContext === popper ? reference : popper; var popperRect = state.rects.popper; var element = state.elements[altBoundary ? altContext : elementContext]; - var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy); + var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary); var referenceClientRect = getBoundingClientRect(state.elements.reference); var popperOffsets = computeOffsets({ reference: referenceClientRect, @@ -3039,14 +2986,6 @@ var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, { placement: state.placement })) : tetherOffset; - var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? { - mainAxis: tetherOffsetValue, - altAxis: tetherOffsetValue - } : Object.assign({ - mainAxis: 0, - altAxis: 0 - }, tetherOffsetValue); - var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null; var data = { x: 0, y: 0 @@ -3054,14 +2993,13 @@ if (!popperOffsets) { return; } - if (checkMainAxis) { - var _offsetModifierState$; + if (checkMainAxis || checkAltAxis) { var mainSide = mainAxis === 'y' ? top : left; var altSide = mainAxis === 'y' ? bottom : right; var len = mainAxis === 'y' ? 'height' : 'width'; var offset = popperOffsets[mainAxis]; - var min$1 = offset + overflow[mainSide]; - var max$1 = offset - overflow[altSide]; + var min$1 = popperOffsets[mainAxis] + overflow[mainSide]; + var max$1 = popperOffsets[mainAxis] - overflow[altSide]; var additive = tether ? -popperRect[len] / 2 : 0; var minLen = variation === start ? referenceRect[len] : popperRect[len]; var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go @@ -3079,32 +3017,28 @@ // reference is not overflowing as well (e.g. virtual elements with no // width or height) var arrowLen = within(0, referenceRect[len], arrowRect[len]); - var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis; - var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis; + var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue; + var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue; var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow); var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0; - var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0; - var tetherMin = offset + minOffset - offsetModifierValue - clientOffset; - var tetherMax = offset + maxOffset - offsetModifierValue; - var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset, tether ? max(max$1, tetherMax) : max$1); - popperOffsets[mainAxis] = preventedOffset; - data[mainAxis] = preventedOffset - offset; - } - if (checkAltAxis) { - var _offsetModifierState$2; - var _mainSide = mainAxis === 'x' ? top : left; - var _altSide = mainAxis === 'x' ? bottom : right; - var _offset = popperOffsets[altAxis]; - var _len = altAxis === 'y' ? 'height' : 'width'; - var _min = _offset + overflow[_mainSide]; - var _max = _offset - overflow[_altSide]; - var isOriginSide = [top, left].indexOf(basePlacement) !== -1; - var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0; - var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis; - var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max; - var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max); - popperOffsets[altAxis] = _preventedOffset; - data[altAxis] = _preventedOffset - _offset; + var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0; + var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset; + var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue; + if (checkMainAxis) { + var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset, tether ? max(max$1, tetherMax) : max$1); + popperOffsets[mainAxis] = preventedOffset; + data[mainAxis] = preventedOffset - offset; + } + if (checkAltAxis) { + var _mainSide = mainAxis === 'x' ? top : left; + var _altSide = mainAxis === 'x' ? bottom : right; + var _offset = popperOffsets[altAxis]; + var _min = _offset + overflow[_mainSide]; + var _max = _offset - overflow[_altSide]; + var _preventedOffset = within(tether ? min(_min, tetherMin) : _min, _offset, tether ? max(_max, tetherMax) : _max); + popperOffsets[altAxis] = _preventedOffset; + data[altAxis] = _preventedOffset - _offset; + } } state.modifiersData[name] = data; } // eslint-disable-next-line import/no-unused-modules @@ -3133,8 +3067,8 @@ function isElementScaled(element) { var rect = element.getBoundingClientRect(); - var scaleX = round(rect.width) / element.offsetWidth || 1; - var scaleY = round(rect.height) / element.offsetHeight || 1; + var scaleX = rect.width / element.offsetWidth || 1; + var scaleY = rect.height / element.offsetHeight || 1; return scaleX !== 1 || scaleY !== 1; } // Returns the composite rect of an element relative to its offsetParent. // Composite means it takes into account transforms as well as layout. @@ -3143,9 +3077,9 @@ isFixed = false; } var isOffsetParentAnElement = isHTMLElement(offsetParent); - var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent); + isHTMLElement(offsetParent) && isElementScaled(offsetParent); var documentElement = getDocumentElement(offsetParent); - var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed); + var rect = getBoundingClientRect(elementOrVirtualElement); var scroll = { scrollLeft: 0, scrollTop: 0 @@ -3161,7 +3095,7 @@ scroll = getNodeScroll(offsetParent); } if (isHTMLElement(offsetParent)) { - offsets = getBoundingClientRect(offsetParent, true); + offsets = getBoundingClientRect(offsetParent); offsets.x += offsetParent.clientLeft; offsets.y += offsetParent.clientTop; } else if (documentElement) { @@ -3418,7 +3352,7 @@ var createPopper = /*#__PURE__*/ popperGenerator({ defaultModifiers: defaultModifiers }); // eslint-disable-next-line import/no-unused-modules - var Popper = /*#__PURE__*/ Object.freeze( /*#__PURE__*/ Object.defineProperty({ + var Popper = /*#__PURE__*/ Object.freeze({ __proto__: null, popperGenerator: popperGenerator, detectOverflow: detectOverflow, @@ -3458,44 +3392,43 @@ offset: offset$1, popperOffsets: popperOffsets$1, preventOverflow: preventOverflow$1 - }, Symbol.toStringTag, { - value: 'Module' - })); + }); /** * -------------------------------------------------------------------------- - * Bootstrap (v5.2.2): dropdown.js + * Bootstrap (v5.1.3): dropdown.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ /** + * ------------------------------------------------------------------------ * Constants + * ------------------------------------------------------------------------ */ - var NAME$a = 'dropdown'; - var DATA_KEY$6 = 'bs.dropdown'; - var EVENT_KEY$6 = "." + DATA_KEY$6; - var DATA_API_KEY$3 = '.data-api'; + var NAME$9 = 'dropdown'; + var DATA_KEY$8 = 'bs.dropdown'; + var EVENT_KEY$8 = "." + DATA_KEY$8; + var DATA_API_KEY$4 = '.data-api'; var ESCAPE_KEY$2 = 'Escape'; + var SPACE_KEY = 'Space'; var TAB_KEY$1 = 'Tab'; - var ARROW_UP_KEY$1 = 'ArrowUp'; - var ARROW_DOWN_KEY$1 = 'ArrowDown'; + var ARROW_UP_KEY = 'ArrowUp'; + var ARROW_DOWN_KEY = 'ArrowDown'; var RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button - var EVENT_HIDE$5 = "hide" + EVENT_KEY$6; - var EVENT_HIDDEN$5 = "hidden" + EVENT_KEY$6; - var EVENT_SHOW$5 = "show" + EVENT_KEY$6; - var EVENT_SHOWN$5 = "shown" + EVENT_KEY$6; - var EVENT_CLICK_DATA_API$3 = "click" + EVENT_KEY$6 + DATA_API_KEY$3; - var EVENT_KEYDOWN_DATA_API = "keydown" + EVENT_KEY$6 + DATA_API_KEY$3; - var EVENT_KEYUP_DATA_API = "keyup" + EVENT_KEY$6 + DATA_API_KEY$3; + var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEY + "|" + ARROW_DOWN_KEY + "|" + ESCAPE_KEY$2); + var EVENT_HIDE$4 = "hide" + EVENT_KEY$8; + var EVENT_HIDDEN$4 = "hidden" + EVENT_KEY$8; + var EVENT_SHOW$4 = "show" + EVENT_KEY$8; + var EVENT_SHOWN$4 = "shown" + EVENT_KEY$8; + var EVENT_CLICK_DATA_API$3 = "click" + EVENT_KEY$8 + DATA_API_KEY$4; + var EVENT_KEYDOWN_DATA_API = "keydown" + EVENT_KEY$8 + DATA_API_KEY$4; + var EVENT_KEYUP_DATA_API = "keyup" + EVENT_KEY$8 + DATA_API_KEY$4; var CLASS_NAME_SHOW$6 = 'show'; var CLASS_NAME_DROPUP = 'dropup'; var CLASS_NAME_DROPEND = 'dropend'; var CLASS_NAME_DROPSTART = 'dropstart'; - var CLASS_NAME_DROPUP_CENTER = 'dropup-center'; - var CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center'; - var SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)'; - var SELECTOR_DATA_TOGGLE_SHOWN = SELECTOR_DATA_TOGGLE$3 + "." + CLASS_NAME_SHOW$6; + var CLASS_NAME_NAVBAR = 'navbar'; + var SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle="dropdown"]'; var SELECTOR_MENU = '.dropdown-menu'; - var SELECTOR_NAVBAR = '.navbar'; var SELECTOR_NAVBAR_NAV = '.navbar-nav'; var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'; var PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'; @@ -3504,75 +3437,77 @@ var PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'; var PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'; var PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'; - var PLACEMENT_TOPCENTER = 'top'; - var PLACEMENT_BOTTOMCENTER = 'bottom'; - var Default$9 = { - autoClose: true, + var Default$8 = { + offset: [0, 2], boundary: 'clippingParents', + reference: 'toggle', display: 'dynamic', - offset: [0, 2], popperConfig: null, - reference: 'toggle' + autoClose: true }; - var DefaultType$9 = { - autoClose: '(boolean|string)', + var DefaultType$8 = { + offset: '(array|string|function)', boundary: '(string|element)', + reference: '(string|element|object)', display: 'string', - offset: '(array|string|function)', popperConfig: '(null|object|function)', - reference: '(string|element|object)' + autoClose: '(boolean|string)' }; /** - * Class definition + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ */ var Dropdown = /*#__PURE__*/ function (_BaseComponent5) { - _inheritsLoose(Dropdown, _BaseComponent5); - function Dropdown(element, config) { - var _this15; - _this15 = _BaseComponent5.call(this, element, config) || this; - _this15._popper = null; - _this15._parent = _this15._element.parentNode; // dropdown wrapper - // todo: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.2/forms/input-group/ - _this15._menu = SelectorEngine.next(_this15._element, SELECTOR_MENU)[0] || SelectorEngine.prev(_this15._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, _this15._parent); - _this15._inNavbar = _this15._detectNavbar(); - return _this15; + var _this12; + _this12 = _BaseComponent5.call(this, element) || this; + _this12._popper = null; + _this12._config = _this12._getConfig(config); + _this12._menu = _this12._getMenuElement(); + _this12._inNavbar = _this12._detectNavbar(); + return _this12; } // Getters - var _proto8 = Dropdown.prototype; + _inherits(Dropdown, _BaseComponent5); + var _proto6 = Dropdown.prototype; // Public - _proto8.toggle = function toggle() { + _proto6.toggle = function toggle() { return this._isShown() ? this.hide() : this.show(); }; - _proto8.show = function show() { - if (isDisabled(this._element) || this._isShown()) { + _proto6.show = function show() { + if (isDisabled(this._element) || this._isShown(this._menu)) { return; } var relatedTarget = { relatedTarget: this._element }; - var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget); + var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, relatedTarget); if (showEvent.defaultPrevented) { return; } - this._createPopper(); // If this is a touch-enabled device we add extra + var parent = Dropdown.getParentFromElement(this._element); // Totally disable Popper for Dropdowns in Navbar + if (this._inNavbar) { + Manipulator.setDataAttribute(this._menu, 'popper', 'none'); + } else { + this._createPopper(parent); + } // If this is a touch-enabled device we add extra // empty mouseover listeners to the body's immediate children; // only needed because of broken event delegation on iOS // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html - if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) { - for (var _iterator13 = _createForOfIteratorHelperLoose((_ref9 = []).concat.apply(_ref9, document.body.children)), _step13; !(_step13 = _iterator13()).done;) { - var _ref9; - var element = _step13.value; - EventHandler.on(element, 'mouseover', noop); - } + if ('ontouchstart' in document.documentElement && !parent.closest(SELECTOR_NAVBAR_NAV)) { + var _ref8; + (_ref8 = []).concat.apply(_ref8, _maybeArrayLike(_toConsumableArray, document.body.children)).forEach(function (elem) { + return EventHandler.on(elem, 'mouseover', noop); + }); } this._element.focus(); this._element.setAttribute('aria-expanded', true); this._menu.classList.add(CLASS_NAME_SHOW$6); this._element.classList.add(CLASS_NAME_SHOW$6); - EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget); + EventHandler.trigger(this._element, EVENT_SHOWN$4, relatedTarget); }; - _proto8.hide = function hide() { - if (isDisabled(this._element) || !this._isShown()) { + _proto6.hide = function hide() { + if (isDisabled(this._element) || !this._isShown(this._menu)) { return; } var relatedTarget = { @@ -3580,31 +3515,30 @@ }; this._completeHide(relatedTarget); }; - _proto8.dispose = function dispose() { + _proto6.dispose = function dispose() { if (this._popper) { this._popper.destroy(); } - _BaseComponent5.prototype.dispose.call(this); + _superPropGet(Dropdown, "dispose", this)([]); }; - _proto8.update = function update() { + _proto6.update = function update() { this._inNavbar = this._detectNavbar(); if (this._popper) { this._popper.update(); } } // Private ; - _proto8._completeHide = function _completeHide(relatedTarget) { - var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget); + _proto6._completeHide = function _completeHide(relatedTarget) { + var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4, relatedTarget); if (hideEvent.defaultPrevented) { return; } // If this is a touch-enabled device we remove the extra // empty mouseover listeners we added for iOS support if ('ontouchstart' in document.documentElement) { - for (var _iterator14 = _createForOfIteratorHelperLoose((_ref10 = []).concat.apply(_ref10, document.body.children)), _step14; !(_step14 = _iterator14()).done;) { - var _ref10; - var element = _step14.value; - EventHandler.off(element, 'mouseover', noop); - } + var _ref9; + (_ref9 = []).concat.apply(_ref9, _maybeArrayLike(_toConsumableArray, document.body.children)).forEach(function (elem) { + return EventHandler.off(elem, 'mouseover', noop); + }); } if (this._popper) { this._popper.destroy(); @@ -3613,47 +3547,54 @@ this._element.classList.remove(CLASS_NAME_SHOW$6); this._element.setAttribute('aria-expanded', 'false'); Manipulator.removeDataAttribute(this._menu, 'popper'); - EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget); + EventHandler.trigger(this._element, EVENT_HIDDEN$4, relatedTarget); }; - _proto8._getConfig = function _getConfig(config) { - config = _BaseComponent5.prototype._getConfig.call(this, config); + _proto6._getConfig = function _getConfig(config) { + config = _extends({}, this.constructor.Default, Manipulator.getDataAttributes(this._element), config); + typeCheckConfig(NAME$9, config, this.constructor.DefaultType); if (typeof config.reference === 'object' && !isElement$1(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') { // Popper virtual elements require a getBoundingClientRect method - throw new TypeError(NAME$a.toUpperCase() + ": Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method."); + throw new TypeError(NAME$9.toUpperCase() + ": Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method."); } return config; }; - _proto8._createPopper = function _createPopper() { + _proto6._createPopper = function _createPopper(parent) { if (typeof Popper === 'undefined') { throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)'); } var referenceElement = this._element; if (this._config.reference === 'parent') { - referenceElement = this._parent; + referenceElement = parent; } else if (isElement$1(this._config.reference)) { referenceElement = getElement(this._config.reference); } else if (typeof this._config.reference === 'object') { referenceElement = this._config.reference; } var popperConfig = this._getPopperConfig(); + var isDisplayStatic = popperConfig.modifiers.find(function (modifier) { + return modifier.name === 'applyStyles' && modifier.enabled === false; + }); this._popper = createPopper(referenceElement, this._menu, popperConfig); + if (isDisplayStatic) { + Manipulator.setDataAttribute(this._menu, 'popper', 'static'); + } + }; + _proto6._isShown = function _isShown(element) { + if (element === void 0) { + element = this._element; + } + return element.classList.contains(CLASS_NAME_SHOW$6); }; - _proto8._isShown = function _isShown() { - return this._menu.classList.contains(CLASS_NAME_SHOW$6); + _proto6._getMenuElement = function _getMenuElement() { + return SelectorEngine.next(this._element, SELECTOR_MENU)[0]; }; - _proto8._getPlacement = function _getPlacement() { - var parentDropdown = this._parent; + _proto6._getPlacement = function _getPlacement() { + var parentDropdown = this._element.parentNode; if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) { return PLACEMENT_RIGHT; } if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) { return PLACEMENT_LEFT; - } - if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) { - return PLACEMENT_TOPCENTER; - } - if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) { - return PLACEMENT_BOTTOMCENTER; } // We need to trim the value because custom properties can also include spaces var isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'; if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) { @@ -3661,25 +3602,25 @@ } return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM; }; - _proto8._detectNavbar = function _detectNavbar() { - return this._element.closest(SELECTOR_NAVBAR) !== null; + _proto6._detectNavbar = function _detectNavbar() { + return this._element.closest("." + CLASS_NAME_NAVBAR) !== null; }; - _proto8._getOffset = function _getOffset() { - var _this16 = this; + _proto6._getOffset = function _getOffset() { + var _this13 = this; var offset = this._config.offset; if (typeof offset === 'string') { - return offset.split(',').map(function (value) { - return Number.parseInt(value, 10); + return offset.split(',').map(function (val) { + return Number.parseInt(val, 10); }); } if (typeof offset === 'function') { return function (popperData) { - return offset(popperData, _this16._element); + return offset(popperData, _this13._element); }; } return offset; }; - _proto8._getPopperConfig = function _getPopperConfig() { + _proto6._getPopperConfig = function _getPopperConfig() { var defaultBsPopperConfig = { placement: this._getPlacement(), modifiers: [{ @@ -3693,9 +3634,8 @@ offset: this._getOffset() } }] - }; // Disable Popper if we have a static display or Dropdown is in Navbar - if (this._inNavbar || this._config.display === 'static') { - Manipulator.setDataAttribute(this._menu, 'popper', 'static'); // todo:v6 remove + }; // Disable Popper if we have a static display + if (this._config.display === 'static') { defaultBsPopperConfig.modifiers = [{ name: 'applyStyles', enabled: false @@ -3703,17 +3643,15 @@ } return _extends({}, defaultBsPopperConfig, typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig); }; - _proto8._selectMenuItem = function _selectMenuItem(_ref11) { - var key = _ref11.key, - target = _ref11.target; - var items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(function (element) { - return isVisible(element); - }); + _proto6._selectMenuItem = function _selectMenuItem(_ref10) { + var key = _ref10.key, + target = _ref10.target; + var items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(isVisible); if (!items.length) { return; } // if target isn't included in items (e.g. when expanding the dropdown) // allow cycling to get the last item in case key equals ARROW_UP_KEY - getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus(); + getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus(); } // Static ; Dropdown.jQueryInterface = function jQueryInterface(config) { @@ -3729,81 +3667,98 @@ }); }; Dropdown.clearMenus = function clearMenus(event) { - if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1) { + if (event && (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1)) { return; } - var openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN); - for (var _iterator15 = _createForOfIteratorHelperLoose(openToggles), _step15; !(_step15 = _iterator15()).done;) { - var toggle = _step15.value; - var context = Dropdown.getInstance(toggle); + var toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE$3); + for (var i = 0, len = toggles.length; i < len; i++) { + var context = Dropdown.getInstance(toggles[i]); if (!context || context._config.autoClose === false) { continue; } - var composedPath = event.composedPath(); - var isMenuTarget = composedPath.includes(context._menu); - if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) { - continue; - } // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu - if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) { + if (!context._isShown()) { continue; } var relatedTarget = { relatedTarget: context._element }; - if (event.type === 'click') { - relatedTarget.clickEvent = event; + if (event) { + var composedPath = event.composedPath(); + var isMenuTarget = composedPath.includes(context._menu); + if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) { + continue; + } // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu + if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) { + continue; + } + if (event.type === 'click') { + relatedTarget.clickEvent = event; + } } context._completeHide(relatedTarget); } }; + Dropdown.getParentFromElement = function getParentFromElement(element) { + return getElementFromSelector(element) || element.parentNode; + }; Dropdown.dataApiKeydownHandler = function dataApiKeydownHandler(event) { - // If not an UP | DOWN | ESCAPE key => not a dropdown command - // If input/textarea && if key is other than ESCAPE => not a dropdown command - var isInput = /input|textarea/i.test(event.target.tagName); - var isEscapeEvent = event.key === ESCAPE_KEY$2; - var isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key); - if (!isUpOrDownEvent && !isEscapeEvent) { + // If not input/textarea: + // - And not a key in REGEXP_KEYDOWN => not a dropdown command + // If input/textarea: + // - If space key => not a dropdown command + // - If key is other than escape + // - If key is not up or down => not a dropdown command + // - If trigger inside the menu => not a dropdown command + if (/input|textarea/i.test(event.target.tagName) ? event.key === SPACE_KEY || event.key !== ESCAPE_KEY$2 && (event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY || event.target.closest(SELECTOR_MENU)) : !REGEXP_KEYDOWN.test(event.key)) { + return; + } + var isActive = this.classList.contains(CLASS_NAME_SHOW$6); + if (!isActive && event.key === ESCAPE_KEY$2) { return; } - if (isInput && !isEscapeEvent) { + event.preventDefault(); + event.stopPropagation(); + if (isDisabled(this)) { return; } - event.preventDefault(); // todo: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.2/forms/input-group/ - var getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3, event.delegateTarget.parentNode); + var getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0]; var instance = Dropdown.getOrCreateInstance(getToggleButton); - if (isUpOrDownEvent) { - event.stopPropagation(); - instance.show(); + if (event.key === ESCAPE_KEY$2) { + instance.hide(); + return; + } + if (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY) { + if (!isActive) { + instance.show(); + } instance._selectMenuItem(event); return; } - if (instance._isShown()) { - // else is escape and we check if it is shown - event.stopPropagation(); - instance.hide(); - getToggleButton.focus(); + if (!isActive || event.key === SPACE_KEY) { + Dropdown.clearMenus(); } }; - _createClass(Dropdown, null, [{ + return _createClass(Dropdown, null, [{ key: "Default", get: function get() { - return Default$9; + return Default$8; } }, { key: "DefaultType", get: function get() { - return DefaultType$9; + return DefaultType$8; } }, { key: "NAME", get: function get() { - return NAME$a; + return NAME$9; } }]); - return Dropdown; }(BaseComponent); /** - * Data API implementation + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ */ EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler); EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler); @@ -3814,186 +3769,157 @@ Dropdown.getOrCreateInstance(this).toggle(); }); /** + * ------------------------------------------------------------------------ * jQuery + * ------------------------------------------------------------------------ + * add .Dropdown to jQuery only if jQuery is present */ defineJQueryPlugin(Dropdown); /** * -------------------------------------------------------------------------- - * Bootstrap (v5.2.2): util/scrollBar.js + * Bootstrap (v5.1.3): util/scrollBar.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ - /** - * Constants - */ var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'; var SELECTOR_STICKY_CONTENT = '.sticky-top'; - var PROPERTY_PADDING = 'padding-right'; - var PROPERTY_MARGIN = 'margin-right'; - /** - * Class definition - */ var ScrollBarHelper = /*#__PURE__*/ function () { function ScrollBarHelper() { this._element = document.body; - } // Public - var _proto9 = ScrollBarHelper.prototype; - _proto9.getWidth = function getWidth() { + } + var _proto7 = ScrollBarHelper.prototype; + _proto7.getWidth = function getWidth() { // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes var documentWidth = document.documentElement.clientWidth; return Math.abs(window.innerWidth - documentWidth); }; - _proto9.hide = function hide() { + _proto7.hide = function hide() { var width = this.getWidth(); this._disableOverFlow(); // give padding to element to balance the hidden scrollbar width - this._setElementAttributes(this._element, PROPERTY_PADDING, function (calculatedValue) { + this._setElementAttributes(this._element, 'paddingRight', function (calculatedValue) { return calculatedValue + width; }); // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth - this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, function (calculatedValue) { + this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', function (calculatedValue) { return calculatedValue + width; }); - this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, function (calculatedValue) { + this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', function (calculatedValue) { return calculatedValue - width; }); }; - _proto9.reset = function reset() { - this._resetElementAttributes(this._element, 'overflow'); - this._resetElementAttributes(this._element, PROPERTY_PADDING); - this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING); - this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN); - }; - _proto9.isOverflowing = function isOverflowing() { - return this.getWidth() > 0; - } // Private - ; - _proto9._disableOverFlow = function _disableOverFlow() { + _proto7._disableOverFlow = function _disableOverFlow() { this._saveInitialAttribute(this._element, 'overflow'); this._element.style.overflow = 'hidden'; }; - _proto9._setElementAttributes = function _setElementAttributes(selector, styleProperty, callback) { - var _this17 = this; + _proto7._setElementAttributes = function _setElementAttributes(selector, styleProp, callback) { + var _this14 = this; var scrollbarWidth = this.getWidth(); var manipulationCallBack = function manipulationCallBack(element) { - if (element !== _this17._element && window.innerWidth > element.clientWidth + scrollbarWidth) { + if (element !== _this14._element && window.innerWidth > element.clientWidth + scrollbarWidth) { return; } - _this17._saveInitialAttribute(element, styleProperty); - var calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty); - element.style.setProperty(styleProperty, callback(Number.parseFloat(calculatedValue)) + "px"); + _this14._saveInitialAttribute(element, styleProp); + var calculatedValue = window.getComputedStyle(element)[styleProp]; + element.style[styleProp] = callback(Number.parseFloat(calculatedValue)) + "px"; }; this._applyManipulationCallback(selector, manipulationCallBack); }; - _proto9._saveInitialAttribute = function _saveInitialAttribute(element, styleProperty) { - var actualValue = element.style.getPropertyValue(styleProperty); + _proto7.reset = function reset() { + this._resetElementAttributes(this._element, 'overflow'); + this._resetElementAttributes(this._element, 'paddingRight'); + this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight'); + this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight'); + }; + _proto7._saveInitialAttribute = function _saveInitialAttribute(element, styleProp) { + var actualValue = element.style[styleProp]; if (actualValue) { - Manipulator.setDataAttribute(element, styleProperty, actualValue); + Manipulator.setDataAttribute(element, styleProp, actualValue); } }; - _proto9._resetElementAttributes = function _resetElementAttributes(selector, styleProperty) { + _proto7._resetElementAttributes = function _resetElementAttributes(selector, styleProp) { var manipulationCallBack = function manipulationCallBack(element) { - var value = Manipulator.getDataAttribute(element, styleProperty); // We only want to remove the property if the value is `null`; the value can also be zero - if (value === null) { - element.style.removeProperty(styleProperty); - return; + var value = Manipulator.getDataAttribute(element, styleProp); + if (typeof value === 'undefined') { + element.style.removeProperty(styleProp); + } else { + Manipulator.removeDataAttribute(element, styleProp); + element.style[styleProp] = value; } - Manipulator.removeDataAttribute(element, styleProperty); - element.style.setProperty(styleProperty, value); }; this._applyManipulationCallback(selector, manipulationCallBack); }; - _proto9._applyManipulationCallback = function _applyManipulationCallback(selector, callBack) { + _proto7._applyManipulationCallback = function _applyManipulationCallback(selector, callBack) { if (isElement$1(selector)) { callBack(selector); - return; - } - for (var _iterator16 = _createForOfIteratorHelperLoose(SelectorEngine.find(selector, this._element)), _step16; !(_step16 = _iterator16()).done;) { - var sel = _step16.value; - callBack(sel); + } else { + SelectorEngine.find(selector, this._element).forEach(callBack); } }; - return ScrollBarHelper; + _proto7.isOverflowing = function isOverflowing() { + return this.getWidth() > 0; + }; + return _createClass(ScrollBarHelper); }(); /** * -------------------------------------------------------------------------- - * Bootstrap (v5.2.2): util/backdrop.js + * Bootstrap (v5.1.3): util/backdrop.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ - /** - * Constants - */ - var NAME$9 = 'backdrop'; - var CLASS_NAME_FADE$4 = 'fade'; - var CLASS_NAME_SHOW$5 = 'show'; - var EVENT_MOUSEDOWN = "mousedown.bs." + NAME$9; - var Default$8 = { + var Default$7 = { className: 'modal-backdrop', - clickCallback: null, - isAnimated: false, isVisible: true, // if false, we use the backdrop helper without adding any element to the dom - rootElement: 'body' // give the choice to place backdrop under different elements + isAnimated: false, + rootElement: 'body', + // give the choice to place backdrop under different elements + clickCallback: null }; - var DefaultType$8 = { + var DefaultType$7 = { className: 'string', - clickCallback: '(function|null)', - isAnimated: 'boolean', isVisible: 'boolean', - rootElement: '(element|string)' + isAnimated: 'boolean', + rootElement: '(element|string)', + clickCallback: '(function|null)' }; - /** - * Class definition - */ - var Backdrop = /*#__PURE__*/ function (_Config3) { - _inheritsLoose(Backdrop, _Config3); - + var NAME$8 = 'backdrop'; + var CLASS_NAME_FADE$4 = 'fade'; + var CLASS_NAME_SHOW$5 = 'show'; + var EVENT_MOUSEDOWN = "mousedown.bs." + NAME$8; + var Backdrop = /*#__PURE__*/ function () { function Backdrop(config) { - var _this18; - _this18 = _Config3.call(this) || this; - _this18._config = _this18._getConfig(config); - _this18._isAppended = false; - _this18._element = null; - return _this18; - } // Getters - var _proto10 = Backdrop.prototype; - // Public - _proto10.show = function show(callback) { + this._config = this._getConfig(config); + this._isAppended = false; + this._element = null; + } + var _proto8 = Backdrop.prototype; + _proto8.show = function show(callback) { if (!this._config.isVisible) { execute(callback); return; } this._append(); - var element = this._getElement(); if (this._config.isAnimated) { - reflow(element); + reflow(this._getElement()); } - element.classList.add(CLASS_NAME_SHOW$5); + this._getElement().classList.add(CLASS_NAME_SHOW$5); this._emulateAnimation(function () { execute(callback); }); }; - _proto10.hide = function hide(callback) { - var _this19 = this; + _proto8.hide = function hide(callback) { + var _this15 = this; if (!this._config.isVisible) { execute(callback); return; } this._getElement().classList.remove(CLASS_NAME_SHOW$5); this._emulateAnimation(function () { - _this19.dispose(); + _this15.dispose(); execute(callback); }); - }; - _proto10.dispose = function dispose() { - if (!this._isAppended) { - return; - } - EventHandler.off(this._element, EVENT_MOUSEDOWN); - this._element.remove(); - this._isAppended = false; } // Private ; - _proto10._getElement = function _getElement() { + _proto8._getElement = function _getElement() { if (!this._element) { var backdrop = document.createElement('div'); backdrop.className = this._config.className; @@ -4004,113 +3930,98 @@ } return this._element; }; - _proto10._configAfterMerge = function _configAfterMerge(config) { - // use getElement() with the default "body" to get a fresh Element on each instantiation + _proto8._getConfig = function _getConfig(config) { + config = _extends({}, Default$7, typeof config === 'object' ? config : {}); // use getElement() with the default "body" to get a fresh Element on each instantiation config.rootElement = getElement(config.rootElement); + typeCheckConfig(NAME$8, config, DefaultType$7); return config; }; - _proto10._append = function _append() { - var _this20 = this; + _proto8._append = function _append() { + var _this16 = this; if (this._isAppended) { return; } - var element = this._getElement(); - this._config.rootElement.append(element); - EventHandler.on(element, EVENT_MOUSEDOWN, function () { - execute(_this20._config.clickCallback); + this._config.rootElement.append(this._getElement()); + EventHandler.on(this._getElement(), EVENT_MOUSEDOWN, function () { + execute(_this16._config.clickCallback); }); this._isAppended = true; }; - _proto10._emulateAnimation = function _emulateAnimation(callback) { + _proto8.dispose = function dispose() { + if (!this._isAppended) { + return; + } + EventHandler.off(this._element, EVENT_MOUSEDOWN); + this._element.remove(); + this._isAppended = false; + }; + _proto8._emulateAnimation = function _emulateAnimation(callback) { executeAfterTransition(callback, this._getElement(), this._config.isAnimated); }; - _createClass(Backdrop, null, [{ - key: "Default", - get: function get() { - return Default$8; - } - }, { - key: "DefaultType", - get: function get() { - return DefaultType$8; - } - }, { - key: "NAME", - get: function get() { - return NAME$9; - } - }]); - return Backdrop; - }(Config); + return _createClass(Backdrop); + }(); /** * -------------------------------------------------------------------------- - * Bootstrap (v5.2.2): util/focustrap.js + * Bootstrap (v5.1.3): util/focustrap.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ - /** - * Constants - */ - var NAME$8 = 'focustrap'; - var DATA_KEY$5 = 'bs.focustrap'; - var EVENT_KEY$5 = "." + DATA_KEY$5; - var EVENT_FOCUSIN$2 = "focusin" + EVENT_KEY$5; - var EVENT_KEYDOWN_TAB = "keydown.tab" + EVENT_KEY$5; + var Default$6 = { + trapElement: null, + // The element to trap focus inside of + autofocus: true + }; + var DefaultType$6 = { + trapElement: 'element', + autofocus: 'boolean' + }; + var NAME$7 = 'focustrap'; + var DATA_KEY$7 = 'bs.focustrap'; + var EVENT_KEY$7 = "." + DATA_KEY$7; + var EVENT_FOCUSIN$1 = "focusin" + EVENT_KEY$7; + var EVENT_KEYDOWN_TAB = "keydown.tab" + EVENT_KEY$7; var TAB_KEY = 'Tab'; var TAB_NAV_FORWARD = 'forward'; var TAB_NAV_BACKWARD = 'backward'; - var Default$7 = { - autofocus: true, - trapElement: null // The element to trap focus inside of - }; - var DefaultType$7 = { - autofocus: 'boolean', - trapElement: 'element' - }; - /** - * Class definition - */ - var FocusTrap = /*#__PURE__*/ function (_Config4) { - _inheritsLoose(FocusTrap, _Config4); - + var FocusTrap = /*#__PURE__*/ function () { function FocusTrap(config) { - var _this21; - _this21 = _Config4.call(this) || this; - _this21._config = _this21._getConfig(config); - _this21._isActive = false; - _this21._lastTabNavDirection = null; - return _this21; - } // Getters - var _proto11 = FocusTrap.prototype; - // Public - _proto11.activate = function activate() { - var _this22 = this; + this._config = this._getConfig(config); + this._isActive = false; + this._lastTabNavDirection = null; + } + var _proto9 = FocusTrap.prototype; + _proto9.activate = function activate() { + var _this17 = this; + var _this$_config = this._config, + trapElement = _this$_config.trapElement, + autofocus = _this$_config.autofocus; if (this._isActive) { return; } - if (this._config.autofocus) { - this._config.trapElement.focus(); + if (autofocus) { + trapElement.focus(); } - EventHandler.off(document, EVENT_KEY$5); // guard against infinite focus loop - EventHandler.on(document, EVENT_FOCUSIN$2, function (event) { - return _this22._handleFocusin(event); + EventHandler.off(document, EVENT_KEY$7); // guard against infinite focus loop + EventHandler.on(document, EVENT_FOCUSIN$1, function (event) { + return _this17._handleFocusin(event); }); EventHandler.on(document, EVENT_KEYDOWN_TAB, function (event) { - return _this22._handleKeydown(event); + return _this17._handleKeydown(event); }); this._isActive = true; }; - _proto11.deactivate = function deactivate() { + _proto9.deactivate = function deactivate() { if (!this._isActive) { return; } this._isActive = false; - EventHandler.off(document, EVENT_KEY$5); + EventHandler.off(document, EVENT_KEY$7); } // Private ; - _proto11._handleFocusin = function _handleFocusin(event) { + _proto9._handleFocusin = function _handleFocusin(event) { + var target = event.target; var trapElement = this._config.trapElement; - if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) { + if (target === document || target === trapElement || trapElement.contains(target)) { return; } var elements = SelectorEngine.focusableChildren(trapElement); @@ -4122,54 +4033,56 @@ elements[0].focus(); } }; - _proto11._handleKeydown = function _handleKeydown(event) { + _proto9._handleKeydown = function _handleKeydown(event) { if (event.key !== TAB_KEY) { return; } this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD; }; - _createClass(FocusTrap, null, [{ - key: "Default", - get: function get() { - return Default$7; - } - }, { - key: "DefaultType", - get: function get() { - return DefaultType$7; - } - }, { - key: "NAME", - get: function get() { - return NAME$8; - } - }]); - return FocusTrap; - }(Config); + _proto9._getConfig = function _getConfig(config) { + config = _extends({}, Default$6, typeof config === 'object' ? config : {}); + typeCheckConfig(NAME$7, config, DefaultType$6); + return config; + }; + return _createClass(FocusTrap); + }(); /** * -------------------------------------------------------------------------- - * Bootstrap (v5.2.2): modal.js + * Bootstrap (v5.1.3): modal.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ /** + * ------------------------------------------------------------------------ * Constants + * ------------------------------------------------------------------------ */ - var NAME$7 = 'modal'; - var DATA_KEY$4 = 'bs.modal'; - var EVENT_KEY$4 = "." + DATA_KEY$4; - var DATA_API_KEY$2 = '.data-api'; + var NAME$6 = 'modal'; + var DATA_KEY$6 = 'bs.modal'; + var EVENT_KEY$6 = "." + DATA_KEY$6; + var DATA_API_KEY$3 = '.data-api'; var ESCAPE_KEY$1 = 'Escape'; - var EVENT_HIDE$4 = "hide" + EVENT_KEY$4; - var EVENT_HIDE_PREVENTED$1 = "hidePrevented" + EVENT_KEY$4; - var EVENT_HIDDEN$4 = "hidden" + EVENT_KEY$4; - var EVENT_SHOW$4 = "show" + EVENT_KEY$4; - var EVENT_SHOWN$4 = "shown" + EVENT_KEY$4; - var EVENT_RESIZE$1 = "resize" + EVENT_KEY$4; - var EVENT_CLICK_DISMISS = "click.dismiss" + EVENT_KEY$4; - var EVENT_MOUSEDOWN_DISMISS = "mousedown.dismiss" + EVENT_KEY$4; - var EVENT_KEYDOWN_DISMISS$1 = "keydown.dismiss" + EVENT_KEY$4; - var EVENT_CLICK_DATA_API$2 = "click" + EVENT_KEY$4 + DATA_API_KEY$2; + var Default$5 = { + backdrop: true, + keyboard: true, + focus: true + }; + var DefaultType$5 = { + backdrop: '(boolean|string)', + keyboard: 'boolean', + focus: 'boolean' + }; + var EVENT_HIDE$3 = "hide" + EVENT_KEY$6; + var EVENT_HIDE_PREVENTED = "hidePrevented" + EVENT_KEY$6; + var EVENT_HIDDEN$3 = "hidden" + EVENT_KEY$6; + var EVENT_SHOW$3 = "show" + EVENT_KEY$6; + var EVENT_SHOWN$3 = "shown" + EVENT_KEY$6; + var EVENT_RESIZE = "resize" + EVENT_KEY$6; + var EVENT_CLICK_DISMISS = "click.dismiss" + EVENT_KEY$6; + var EVENT_KEYDOWN_DISMISS$1 = "keydown.dismiss" + EVENT_KEY$6; + var EVENT_MOUSEUP_DISMISS = "mouseup.dismiss" + EVENT_KEY$6; + var EVENT_MOUSEDOWN_DISMISS = "mousedown.dismiss" + EVENT_KEY$6; + var EVENT_CLICK_DATA_API$2 = "click" + EVENT_KEY$6 + DATA_API_KEY$3; var CLASS_NAME_OPEN = 'modal-open'; var CLASS_NAME_FADE$3 = 'fade'; var CLASS_NAME_SHOW$4 = 'show'; @@ -4178,105 +4091,121 @@ var SELECTOR_DIALOG = '.modal-dialog'; var SELECTOR_MODAL_BODY = '.modal-body'; var SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle="modal"]'; - var Default$6 = { - backdrop: true, - focus: true, - keyboard: true - }; - var DefaultType$6 = { - backdrop: '(boolean|string)', - focus: 'boolean', - keyboard: 'boolean' - }; /** - * Class definition + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ */ var Modal = /*#__PURE__*/ function (_BaseComponent6) { - _inheritsLoose(Modal, _BaseComponent6); - function Modal(element, config) { - var _this23; - _this23 = _BaseComponent6.call(this, element, config) || this; - _this23._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, _this23._element); - _this23._backdrop = _this23._initializeBackDrop(); - _this23._focustrap = _this23._initializeFocusTrap(); - _this23._isShown = false; - _this23._isTransitioning = false; - _this23._scrollBar = new ScrollBarHelper(); - _this23._addEventListeners(); - return _this23; + var _this18; + _this18 = _BaseComponent6.call(this, element) || this; + _this18._config = _this18._getConfig(config); + _this18._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, _this18._element); + _this18._backdrop = _this18._initializeBackDrop(); + _this18._focustrap = _this18._initializeFocusTrap(); + _this18._isShown = false; + _this18._ignoreBackdropClick = false; + _this18._isTransitioning = false; + _this18._scrollBar = new ScrollBarHelper(); + return _this18; } // Getters - var _proto12 = Modal.prototype; + _inherits(Modal, _BaseComponent6); + var _proto10 = Modal.prototype; // Public - _proto12.toggle = function toggle(relatedTarget) { + _proto10.toggle = function toggle(relatedTarget) { return this._isShown ? this.hide() : this.show(relatedTarget); }; - _proto12.show = function show(relatedTarget) { - var _this24 = this; + _proto10.show = function show(relatedTarget) { + var _this19 = this; if (this._isShown || this._isTransitioning) { return; } - var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, { + var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, { relatedTarget: relatedTarget }); if (showEvent.defaultPrevented) { return; } this._isShown = true; - this._isTransitioning = true; + if (this._isAnimated()) { + this._isTransitioning = true; + } this._scrollBar.hide(); document.body.classList.add(CLASS_NAME_OPEN); this._adjustDialog(); - this._backdrop.show(function () { - return _this24._showElement(relatedTarget); + this._setEscapeEvent(); + this._setResizeEvent(); + EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, function () { + EventHandler.one(_this19._element, EVENT_MOUSEUP_DISMISS, function (event) { + if (event.target === _this19._element) { + _this19._ignoreBackdropClick = true; + } + }); + }); + this._showBackdrop(function () { + return _this19._showElement(relatedTarget); }); }; - _proto12.hide = function hide() { - var _this25 = this; + _proto10.hide = function hide() { + var _this20 = this; if (!this._isShown || this._isTransitioning) { return; } - var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4); + var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3); if (hideEvent.defaultPrevented) { return; } this._isShown = false; - this._isTransitioning = true; + var isAnimated = this._isAnimated(); + if (isAnimated) { + this._isTransitioning = true; + } + this._setEscapeEvent(); + this._setResizeEvent(); this._focustrap.deactivate(); this._element.classList.remove(CLASS_NAME_SHOW$4); + EventHandler.off(this._element, EVENT_CLICK_DISMISS); + EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS); this._queueCallback(function () { - return _this25._hideModal(); - }, this._element, this._isAnimated()); + return _this20._hideModal(); + }, this._element, isAnimated); }; - _proto12.dispose = function dispose() { - for (var _i7 = 0, _arr = [window, this._dialog]; _i7 < _arr.length; _i7++) { - var htmlElement = _arr[_i7]; - EventHandler.off(htmlElement, EVENT_KEY$4); - } + _proto10.dispose = function dispose() { + [window, this._dialog].forEach(function (htmlElement) { + return EventHandler.off(htmlElement, EVENT_KEY$6); + }); this._backdrop.dispose(); this._focustrap.deactivate(); - _BaseComponent6.prototype.dispose.call(this); + _superPropGet(Modal, "dispose", this)([]); }; - _proto12.handleUpdate = function handleUpdate() { + _proto10.handleUpdate = function handleUpdate() { this._adjustDialog(); } // Private ; - _proto12._initializeBackDrop = function _initializeBackDrop() { + _proto10._initializeBackDrop = function _initializeBackDrop() { return new Backdrop({ isVisible: Boolean(this._config.backdrop), - // 'static' option will be translated to true, and booleans will keep their value, + // 'static' option will be translated to true, and booleans will keep their value isAnimated: this._isAnimated() }); }; - _proto12._initializeFocusTrap = function _initializeFocusTrap() { + _proto10._initializeFocusTrap = function _initializeFocusTrap() { return new FocusTrap({ trapElement: this._element }); }; - _proto12._showElement = function _showElement(relatedTarget) { - var _this26 = this; - // try to append dynamic modal - if (!document.body.contains(this._element)) { + _proto10._getConfig = function _getConfig(config) { + config = _extends({}, Default$5, Manipulator.getDataAttributes(this._element), typeof config === 'object' ? config : {}); + typeCheckConfig(NAME$6, config, DefaultType$5); + return config; + }; + _proto10._showElement = function _showElement(relatedTarget) { + var _this21 = this; + var isAnimated = this._isAnimated(); + var modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog); + if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) { + // Don't move modal's DOM position document.body.append(this._element); } this._element.style.display = 'block'; @@ -4284,59 +4213,51 @@ this._element.setAttribute('aria-modal', true); this._element.setAttribute('role', 'dialog'); this._element.scrollTop = 0; - var modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog); if (modalBody) { modalBody.scrollTop = 0; } - reflow(this._element); + if (isAnimated) { + reflow(this._element); + } this._element.classList.add(CLASS_NAME_SHOW$4); var transitionComplete = function transitionComplete() { - if (_this26._config.focus) { - _this26._focustrap.activate(); + if (_this21._config.focus) { + _this21._focustrap.activate(); } - _this26._isTransitioning = false; - EventHandler.trigger(_this26._element, EVENT_SHOWN$4, { + _this21._isTransitioning = false; + EventHandler.trigger(_this21._element, EVENT_SHOWN$3, { relatedTarget: relatedTarget }); }; - this._queueCallback(transitionComplete, this._dialog, this._isAnimated()); + this._queueCallback(transitionComplete, this._dialog, isAnimated); }; - _proto12._addEventListeners = function _addEventListeners() { - var _this27 = this; - EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, function (event) { - if (event.key !== ESCAPE_KEY$1) { - return; - } - if (_this27._config.keyboard) { - event.preventDefault(); - _this27.hide(); - return; - } - _this27._triggerBackdropTransition(); - }); - EventHandler.on(window, EVENT_RESIZE$1, function () { - if (_this27._isShown && !_this27._isTransitioning) { - _this27._adjustDialog(); - } - }); - EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, function (event) { - // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks - EventHandler.one(_this27._element, EVENT_CLICK_DISMISS, function (event2) { - if (_this27._element !== event.target || _this27._element !== event2.target) { - return; - } - if (_this27._config.backdrop === 'static') { - _this27._triggerBackdropTransition(); - return; - } - if (_this27._config.backdrop) { - _this27.hide(); + _proto10._setEscapeEvent = function _setEscapeEvent() { + var _this22 = this; + if (this._isShown) { + EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, function (event) { + if (_this22._config.keyboard && event.key === ESCAPE_KEY$1) { + event.preventDefault(); + _this22.hide(); + } else if (!_this22._config.keyboard && event.key === ESCAPE_KEY$1) { + _this22._triggerBackdropTransition(); } }); - }); + } else { + EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS$1); + } + }; + _proto10._setResizeEvent = function _setResizeEvent() { + var _this23 = this; + if (this._isShown) { + EventHandler.on(window, EVENT_RESIZE, function () { + return _this23._adjustDialog(); + }); + } else { + EventHandler.off(window, EVENT_RESIZE); + } }; - _proto12._hideModal = function _hideModal() { - var _this28 = this; + _proto10._hideModal = function _hideModal() { + var _this24 = this; this._element.style.display = 'none'; this._element.setAttribute('aria-hidden', true); this._element.removeAttribute('aria-modal'); @@ -4344,55 +4265,75 @@ this._isTransitioning = false; this._backdrop.hide(function () { document.body.classList.remove(CLASS_NAME_OPEN); - _this28._resetAdjustments(); - _this28._scrollBar.reset(); - EventHandler.trigger(_this28._element, EVENT_HIDDEN$4); + _this24._resetAdjustments(); + _this24._scrollBar.reset(); + EventHandler.trigger(_this24._element, EVENT_HIDDEN$3); }); }; - _proto12._isAnimated = function _isAnimated() { + _proto10._showBackdrop = function _showBackdrop(callback) { + var _this25 = this; + EventHandler.on(this._element, EVENT_CLICK_DISMISS, function (event) { + if (_this25._ignoreBackdropClick) { + _this25._ignoreBackdropClick = false; + return; + } + if (event.target !== event.currentTarget) { + return; + } + if (_this25._config.backdrop === true) { + _this25.hide(); + } else if (_this25._config.backdrop === 'static') { + _this25._triggerBackdropTransition(); + } + }); + this._backdrop.show(callback); + }; + _proto10._isAnimated = function _isAnimated() { return this._element.classList.contains(CLASS_NAME_FADE$3); }; - _proto12._triggerBackdropTransition = function _triggerBackdropTransition() { - var _this29 = this; - var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1); + _proto10._triggerBackdropTransition = function _triggerBackdropTransition() { + var _this26 = this; + var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED); if (hideEvent.defaultPrevented) { return; } - var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; - var initialOverflowY = this._element.style.overflowY; // return if the following background transition hasn't yet completed - if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) { + var _this$_element = this._element, + classList = _this$_element.classList, + scrollHeight = _this$_element.scrollHeight, + style = _this$_element.style; + var isModalOverflowing = scrollHeight > document.documentElement.clientHeight; // return if the following background transition hasn't yet completed + if (!isModalOverflowing && style.overflowY === 'hidden' || classList.contains(CLASS_NAME_STATIC)) { return; } if (!isModalOverflowing) { - this._element.style.overflowY = 'hidden'; + style.overflowY = 'hidden'; } - this._element.classList.add(CLASS_NAME_STATIC); + classList.add(CLASS_NAME_STATIC); this._queueCallback(function () { - _this29._element.classList.remove(CLASS_NAME_STATIC); - _this29._queueCallback(function () { - _this29._element.style.overflowY = initialOverflowY; - }, _this29._dialog); + classList.remove(CLASS_NAME_STATIC); + if (!isModalOverflowing) { + _this26._queueCallback(function () { + style.overflowY = ''; + }, _this26._dialog); + } }, this._dialog); this._element.focus(); - } - /** - * The following methods are used to handle overflowing modals - */ + } // ---------------------------------------------------------------------- + // the following methods are used to handle overflowing modals + // ---------------------------------------------------------------------- ; - _proto12._adjustDialog = function _adjustDialog() { + _proto10._adjustDialog = function _adjustDialog() { var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; var scrollbarWidth = this._scrollBar.getWidth(); var isBodyOverflowing = scrollbarWidth > 0; - if (isBodyOverflowing && !isModalOverflowing) { - var property = isRTL() ? 'paddingLeft' : 'paddingRight'; - this._element.style[property] = scrollbarWidth + "px"; + if (!isBodyOverflowing && isModalOverflowing && !isRTL() || isBodyOverflowing && !isModalOverflowing && isRTL()) { + this._element.style.paddingLeft = scrollbarWidth + "px"; } - if (!isBodyOverflowing && isModalOverflowing) { - var _property = isRTL() ? 'paddingRight' : 'paddingLeft'; - this._element.style[_property] = scrollbarWidth + "px"; + if (isBodyOverflowing && !isModalOverflowing && !isRTL() || !isBodyOverflowing && isModalOverflowing && isRTL()) { + this._element.style.paddingRight = scrollbarWidth + "px"; } }; - _proto12._resetAdjustments = function _resetAdjustments() { + _proto10._resetAdjustments = function _resetAdjustments() { this._element.style.paddingLeft = ''; this._element.style.paddingRight = ''; } // Static @@ -4409,211 +4350,205 @@ data[config](relatedTarget); }); }; - _createClass(Modal, null, [{ + return _createClass(Modal, null, [{ key: "Default", get: function get() { - return Default$6; - } - }, { - key: "DefaultType", - get: function get() { - return DefaultType$6; + return Default$5; } }, { key: "NAME", get: function get() { - return NAME$7; + return NAME$6; } }]); - return Modal; }(BaseComponent); /** - * Data API implementation + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ */ EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) { - var _this30 = this; + var _this27 = this; var target = getElementFromSelector(this); if (['A', 'AREA'].includes(this.tagName)) { event.preventDefault(); } - EventHandler.one(target, EVENT_SHOW$4, function (showEvent) { + EventHandler.one(target, EVENT_SHOW$3, function (showEvent) { if (showEvent.defaultPrevented) { // only register focus restorer if modal will actually get shown return; } - EventHandler.one(target, EVENT_HIDDEN$4, function () { - if (isVisible(_this30)) { - _this30.focus(); + EventHandler.one(target, EVENT_HIDDEN$3, function () { + if (isVisible(_this27)) { + _this27.focus(); } }); - }); // avoid conflict when clicking modal toggler while another one is open - var alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1); - if (alreadyOpen) { - Modal.getInstance(alreadyOpen).hide(); + }); // avoid conflict when clicking moddal toggler while another one is open + var allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1); + if (allReadyOpen) { + Modal.getInstance(allReadyOpen).hide(); } var data = Modal.getOrCreateInstance(target); data.toggle(this); }); enableDismissTrigger(Modal); /** + * ------------------------------------------------------------------------ * jQuery + * ------------------------------------------------------------------------ + * add .Modal to jQuery only if jQuery is present */ defineJQueryPlugin(Modal); /** * -------------------------------------------------------------------------- - * Bootstrap (v5.2.2): offcanvas.js + * Bootstrap (v5.1.3): offcanvas.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ /** + * ------------------------------------------------------------------------ * Constants + * ------------------------------------------------------------------------ */ - var NAME$6 = 'offcanvas'; - var DATA_KEY$3 = 'bs.offcanvas'; - var EVENT_KEY$3 = "." + DATA_KEY$3; - var DATA_API_KEY$1 = '.data-api'; - var EVENT_LOAD_DATA_API$2 = "load" + EVENT_KEY$3 + DATA_API_KEY$1; + var NAME$5 = 'offcanvas'; + var DATA_KEY$5 = 'bs.offcanvas'; + var EVENT_KEY$5 = "." + DATA_KEY$5; + var DATA_API_KEY$2 = '.data-api'; + var EVENT_LOAD_DATA_API$1 = "load" + EVENT_KEY$5 + DATA_API_KEY$2; var ESCAPE_KEY = 'Escape'; - var CLASS_NAME_SHOW$3 = 'show'; - var CLASS_NAME_SHOWING$1 = 'showing'; - var CLASS_NAME_HIDING = 'hiding'; - var CLASS_NAME_BACKDROP = 'offcanvas-backdrop'; - var OPEN_SELECTOR = '.offcanvas.show'; - var EVENT_SHOW$3 = "show" + EVENT_KEY$3; - var EVENT_SHOWN$3 = "shown" + EVENT_KEY$3; - var EVENT_HIDE$3 = "hide" + EVENT_KEY$3; - var EVENT_HIDE_PREVENTED = "hidePrevented" + EVENT_KEY$3; - var EVENT_HIDDEN$3 = "hidden" + EVENT_KEY$3; - var EVENT_RESIZE = "resize" + EVENT_KEY$3; - var EVENT_CLICK_DATA_API$1 = "click" + EVENT_KEY$3 + DATA_API_KEY$1; - var EVENT_KEYDOWN_DISMISS = "keydown.dismiss" + EVENT_KEY$3; - var SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="offcanvas"]'; - var Default$5 = { + var Default$4 = { backdrop: true, keyboard: true, scroll: false }; - var DefaultType$5 = { - backdrop: '(boolean|string)', + var DefaultType$4 = { + backdrop: 'boolean', keyboard: 'boolean', scroll: 'boolean' }; + var CLASS_NAME_SHOW$3 = 'show'; + var CLASS_NAME_BACKDROP = 'offcanvas-backdrop'; + var OPEN_SELECTOR = '.offcanvas.show'; + var EVENT_SHOW$2 = "show" + EVENT_KEY$5; + var EVENT_SHOWN$2 = "shown" + EVENT_KEY$5; + var EVENT_HIDE$2 = "hide" + EVENT_KEY$5; + var EVENT_HIDDEN$2 = "hidden" + EVENT_KEY$5; + var EVENT_CLICK_DATA_API$1 = "click" + EVENT_KEY$5 + DATA_API_KEY$2; + var EVENT_KEYDOWN_DISMISS = "keydown.dismiss" + EVENT_KEY$5; + var SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="offcanvas"]'; /** - * Class definition + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ */ var Offcanvas = /*#__PURE__*/ function (_BaseComponent7) { - _inheritsLoose(Offcanvas, _BaseComponent7); - function Offcanvas(element, config) { - var _this31; - _this31 = _BaseComponent7.call(this, element, config) || this; - _this31._isShown = false; - _this31._backdrop = _this31._initializeBackDrop(); - _this31._focustrap = _this31._initializeFocusTrap(); - _this31._addEventListeners(); - return _this31; + var _this28; + _this28 = _BaseComponent7.call(this, element) || this; + _this28._config = _this28._getConfig(config); + _this28._isShown = false; + _this28._backdrop = _this28._initializeBackDrop(); + _this28._focustrap = _this28._initializeFocusTrap(); + _this28._addEventListeners(); + return _this28; } // Getters - var _proto13 = Offcanvas.prototype; + _inherits(Offcanvas, _BaseComponent7); + var _proto11 = Offcanvas.prototype; // Public - _proto13.toggle = function toggle(relatedTarget) { + _proto11.toggle = function toggle(relatedTarget) { return this._isShown ? this.hide() : this.show(relatedTarget); }; - _proto13.show = function show(relatedTarget) { - var _this32 = this; + _proto11.show = function show(relatedTarget) { + var _this29 = this; if (this._isShown) { return; } - var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, { + var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$2, { relatedTarget: relatedTarget }); if (showEvent.defaultPrevented) { return; } this._isShown = true; + this._element.style.visibility = 'visible'; this._backdrop.show(); if (!this._config.scroll) { new ScrollBarHelper().hide(); } + this._element.removeAttribute('aria-hidden'); this._element.setAttribute('aria-modal', true); this._element.setAttribute('role', 'dialog'); - this._element.classList.add(CLASS_NAME_SHOWING$1); + this._element.classList.add(CLASS_NAME_SHOW$3); var completeCallBack = function completeCallBack() { - if (!_this32._config.scroll || _this32._config.backdrop) { - _this32._focustrap.activate(); + if (!_this29._config.scroll) { + _this29._focustrap.activate(); } - _this32._element.classList.add(CLASS_NAME_SHOW$3); - _this32._element.classList.remove(CLASS_NAME_SHOWING$1); - EventHandler.trigger(_this32._element, EVENT_SHOWN$3, { + EventHandler.trigger(_this29._element, EVENT_SHOWN$2, { relatedTarget: relatedTarget }); }; this._queueCallback(completeCallBack, this._element, true); }; - _proto13.hide = function hide() { - var _this33 = this; + _proto11.hide = function hide() { + var _this30 = this; if (!this._isShown) { return; } - var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3); + var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$2); if (hideEvent.defaultPrevented) { return; } this._focustrap.deactivate(); this._element.blur(); this._isShown = false; - this._element.classList.add(CLASS_NAME_HIDING); + this._element.classList.remove(CLASS_NAME_SHOW$3); this._backdrop.hide(); var completeCallback = function completeCallback() { - _this33._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING); - _this33._element.removeAttribute('aria-modal'); - _this33._element.removeAttribute('role'); - if (!_this33._config.scroll) { + _this30._element.setAttribute('aria-hidden', true); + _this30._element.removeAttribute('aria-modal'); + _this30._element.removeAttribute('role'); + _this30._element.style.visibility = 'hidden'; + if (!_this30._config.scroll) { new ScrollBarHelper().reset(); } - EventHandler.trigger(_this33._element, EVENT_HIDDEN$3); + EventHandler.trigger(_this30._element, EVENT_HIDDEN$2); }; this._queueCallback(completeCallback, this._element, true); }; - _proto13.dispose = function dispose() { + _proto11.dispose = function dispose() { this._backdrop.dispose(); this._focustrap.deactivate(); - _BaseComponent7.prototype.dispose.call(this); + _superPropGet(Offcanvas, "dispose", this)([]); } // Private ; - _proto13._initializeBackDrop = function _initializeBackDrop() { - var _this34 = this; - var clickCallback = function clickCallback() { - if (_this34._config.backdrop === 'static') { - EventHandler.trigger(_this34._element, EVENT_HIDE_PREVENTED); - return; - } - _this34.hide(); - }; // 'static' option will be translated to true, and booleans will keep their value - var isVisible = Boolean(this._config.backdrop); + _proto11._getConfig = function _getConfig(config) { + config = _extends({}, Default$4, Manipulator.getDataAttributes(this._element), typeof config === 'object' ? config : {}); + typeCheckConfig(NAME$5, config, DefaultType$4); + return config; + }; + _proto11._initializeBackDrop = function _initializeBackDrop() { + var _this31 = this; return new Backdrop({ className: CLASS_NAME_BACKDROP, - isVisible: isVisible, + isVisible: this._config.backdrop, isAnimated: true, rootElement: this._element.parentNode, - clickCallback: isVisible ? clickCallback : null + clickCallback: function clickCallback() { + return _this31.hide(); + } }); }; - _proto13._initializeFocusTrap = function _initializeFocusTrap() { + _proto11._initializeFocusTrap = function _initializeFocusTrap() { return new FocusTrap({ trapElement: this._element }); }; - _proto13._addEventListeners = function _addEventListeners() { - var _this35 = this; + _proto11._addEventListeners = function _addEventListeners() { + var _this32 = this; EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, function (event) { - if (event.key !== ESCAPE_KEY) { - return; - } - if (!_this35._config.keyboard) { - EventHandler.trigger(_this35._element, EVENT_HIDE_PREVENTED); - return; + if (_this32._config.keyboard && event.key === ESCAPE_KEY) { + _this32.hide(); } - _this35.hide(); }); } // Static ; @@ -4629,29 +4564,25 @@ data[config](this); }); }; - _createClass(Offcanvas, null, [{ - key: "Default", - get: function get() { - return Default$5; - } - }, { - key: "DefaultType", + return _createClass(Offcanvas, null, [{ + key: "NAME", get: function get() { - return DefaultType$5; + return NAME$5; } }, { - key: "NAME", + key: "Default", get: function get() { - return NAME$6; + return Default$4; } }]); - return Offcanvas; }(BaseComponent); /** - * Data API implementation + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ */ EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) { - var _this36 = this; + var _this33 = this; var target = getElementFromSelector(this); if (['A', 'AREA'].includes(this.tagName)) { event.preventDefault(); @@ -4659,41 +4590,34 @@ if (isDisabled(this)) { return; } - EventHandler.one(target, EVENT_HIDDEN$3, function () { + EventHandler.one(target, EVENT_HIDDEN$2, function () { // focus on trigger when it is closed - if (isVisible(_this36)) { - _this36.focus(); + if (isVisible(_this33)) { + _this33.focus(); } }); // avoid conflict when clicking a toggler of an offcanvas, while another is open - var alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR); - if (alreadyOpen && alreadyOpen !== target) { - Offcanvas.getInstance(alreadyOpen).hide(); + var allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR); + if (allReadyOpen && allReadyOpen !== target) { + Offcanvas.getInstance(allReadyOpen).hide(); } var data = Offcanvas.getOrCreateInstance(target); data.toggle(this); }); - EventHandler.on(window, EVENT_LOAD_DATA_API$2, function () { - for (var _iterator17 = _createForOfIteratorHelperLoose(SelectorEngine.find(OPEN_SELECTOR)), _step17; !(_step17 = _iterator17()).done;) { - var selector = _step17.value; - Offcanvas.getOrCreateInstance(selector).show(); - } - }); - EventHandler.on(window, EVENT_RESIZE, function () { - for (var _iterator18 = _createForOfIteratorHelperLoose(SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')), _step18; !(_step18 = _iterator18()).done;) { - var element = _step18.value; - if (getComputedStyle(element).position !== 'fixed') { - Offcanvas.getOrCreateInstance(element).hide(); - } - } + EventHandler.on(window, EVENT_LOAD_DATA_API$1, function () { + return SelectorEngine.find(OPEN_SELECTOR).forEach(function (el) { + return Offcanvas.getOrCreateInstance(el).show(); + }); }); enableDismissTrigger(Offcanvas); /** + * ------------------------------------------------------------------------ * jQuery + * ------------------------------------------------------------------------ */ defineJQueryPlugin(Offcanvas); /** * -------------------------------------------------------------------------- - * Bootstrap (v5.2.2): util/sanitizer.js + * Bootstrap (v5.1.3): util/sanitizer.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -4702,13 +4626,13 @@ /** * A pattern that recognizes a commonly useful subset of URLs that are safe. * - * Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts + * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts */ var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i; /** * A pattern that matches safe data URLs. Only matches image, video and audio types. * - * Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts + * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts */ var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i; var allowedAttribute = function allowedAttribute(attribute, allowedAttributeList) { @@ -4718,12 +4642,16 @@ return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue)); } return true; - } // Check if a regular expression validates the attribute. - return allowedAttributeList.filter(function (attributeRegex) { + } + var regExp = allowedAttributeList.filter(function (attributeRegex) { return attributeRegex instanceof RegExp; - }).some(function (regex) { - return regex.test(attributeName); - }); + }); // Check if a regular expression validates the attribute. + for (var i = 0, len = regExp.length; i < len; i++) { + if (regExp[i].test(attributeName)) { + return true; + } + } + return false; }; var DefaultAllowlist = { // Global attributes allowed on any supplied element below. @@ -4759,213 +4687,73 @@ ul: [] }; - function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) { - var _ref12; + function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) { + var _ref11; if (!unsafeHtml.length) { return unsafeHtml; } - if (sanitizeFunction && typeof sanitizeFunction === 'function') { - return sanitizeFunction(unsafeHtml); + if (sanitizeFn && typeof sanitizeFn === 'function') { + return sanitizeFn(unsafeHtml); } var domParser = new window.DOMParser(); var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html'); - var elements = (_ref12 = []).concat.apply(_ref12, createdDocument.body.querySelectorAll('*')); - for (var _iterator19 = _createForOfIteratorHelperLoose(elements), _step19; !(_step19 = _iterator19()).done;) { - var _ref13; - var element = _step19.value; + var elements = (_ref11 = []).concat.apply(_ref11, _maybeArrayLike(_toConsumableArray, createdDocument.body.querySelectorAll('*'))); + var _loop2 = function _loop2() { + var _ref12; + var element = elements[i]; var elementName = element.nodeName.toLowerCase(); if (!Object.keys(allowList).includes(elementName)) { element.remove(); - continue; + return 1; // continue } - var attributeList = (_ref13 = []).concat.apply(_ref13, element.attributes); + var attributeList = (_ref12 = []).concat.apply(_ref12, _maybeArrayLike(_toConsumableArray, element.attributes)); var allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []); - for (var _iterator20 = _createForOfIteratorHelperLoose(attributeList), _step20; !(_step20 = _iterator20()).done;) { - var attribute = _step20.value; + attributeList.forEach(function (attribute) { if (!allowedAttribute(attribute, allowedAttributes)) { element.removeAttribute(attribute.nodeName); } - } + }); + }; + for (var i = 0, len = elements.length; i < len; i++) { + if (_loop2()) continue; } return createdDocument.body.innerHTML; } /** * -------------------------------------------------------------------------- - * Bootstrap (v5.2.2): util/template-factory.js + * Bootstrap (v5.1.3): tooltip.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ /** + * ------------------------------------------------------------------------ * Constants + * ------------------------------------------------------------------------ */ - var NAME$5 = 'TemplateFactory'; - var Default$4 = { - allowList: DefaultAllowlist, - content: {}, - // { selector : text , selector2 : text2 , } - extraClass: '', - html: false, - sanitize: true, - sanitizeFn: null, - template: '
' - }; - var DefaultType$4 = { - allowList: 'object', - content: 'object', - extraClass: '(string|function)', + var NAME$4 = 'tooltip'; + var DATA_KEY$4 = 'bs.tooltip'; + var EVENT_KEY$4 = "." + DATA_KEY$4; + var CLASS_PREFIX$1 = 'bs-tooltip'; + var DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']); + var DefaultType$3 = { + animation: 'boolean', + template: 'string', + title: '(string|element|function)', + trigger: 'string', + delay: '(number|object)', html: 'boolean', + selector: '(string|boolean)', + placement: '(string|function)', + offset: '(array|string|function)', + container: '(string|element|boolean)', + fallbackPlacements: 'array', + boundary: '(string|element)', + customClass: '(string|function)', sanitize: 'boolean', sanitizeFn: '(null|function)', - template: 'string' - }; - var DefaultContentType = { - entry: '(string|element|function|null)', - selector: '(string|element)' + allowList: 'object', + popperConfig: '(null|object|function)' }; - /** - * Class definition - */ - var TemplateFactory = /*#__PURE__*/ function (_Config5) { - _inheritsLoose(TemplateFactory, _Config5); - - function TemplateFactory(config) { - var _this37; - _this37 = _Config5.call(this) || this; - _this37._config = _this37._getConfig(config); - return _this37; - } // Getters - var _proto14 = TemplateFactory.prototype; - // Public - _proto14.getContent = function getContent() { - var _this38 = this; - return Object.values(this._config.content).map(function (config) { - return _this38._resolvePossibleFunction(config); - }).filter(Boolean); - }; - _proto14.hasContent = function hasContent() { - return this.getContent().length > 0; - }; - _proto14.changeContent = function changeContent(content) { - this._checkContent(content); - this._config.content = _extends({}, this._config.content, content); - return this; - }; - _proto14.toHtml = function toHtml() { - var templateWrapper = document.createElement('div'); - templateWrapper.innerHTML = this._maybeSanitize(this._config.template); - for (var _i8 = 0, _Object$entries2 = Object.entries(this._config.content); _i8 < _Object$entries2.length; _i8++) { - var _Object$entries2$_i = _Object$entries2[_i8], - selector = _Object$entries2$_i[0], - text = _Object$entries2$_i[1]; - this._setContent(templateWrapper, text, selector); - } - var template = templateWrapper.children[0]; - var extraClass = this._resolvePossibleFunction(this._config.extraClass); - if (extraClass) { - var _template$classList; - (_template$classList = template.classList).add.apply(_template$classList, extraClass.split(' ')); - } - return template; - } // Private - ; - _proto14._typeCheckConfig = function _typeCheckConfig(config) { - _Config5.prototype._typeCheckConfig.call(this, config); - this._checkContent(config.content); - }; - _proto14._checkContent = function _checkContent(arg) { - for (var _i9 = 0, _Object$entries3 = Object.entries(arg); _i9 < _Object$entries3.length; _i9++) { - var _Object$entries3$_i = _Object$entries3[_i9], - selector = _Object$entries3$_i[0], - content = _Object$entries3$_i[1]; - _Config5.prototype._typeCheckConfig.call(this, { - selector: selector, - entry: content - }, DefaultContentType); - } - }; - _proto14._setContent = function _setContent(template, content, selector) { - var templateElement = SelectorEngine.findOne(selector, template); - if (!templateElement) { - return; - } - content = this._resolvePossibleFunction(content); - if (!content) { - templateElement.remove(); - return; - } - if (isElement$1(content)) { - this._putElementInTemplate(getElement(content), templateElement); - return; - } - if (this._config.html) { - templateElement.innerHTML = this._maybeSanitize(content); - return; - } - templateElement.textContent = content; - }; - _proto14._maybeSanitize = function _maybeSanitize(arg) { - return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg; - }; - _proto14._resolvePossibleFunction = function _resolvePossibleFunction(arg) { - return typeof arg === 'function' ? arg(this) : arg; - }; - _proto14._putElementInTemplate = function _putElementInTemplate(element, templateElement) { - if (this._config.html) { - templateElement.innerHTML = ''; - templateElement.append(element); - return; - } - templateElement.textContent = element.textContent; - }; - _createClass(TemplateFactory, null, [{ - key: "Default", - get: function get() { - return Default$4; - } - }, { - key: "DefaultType", - get: function get() { - return DefaultType$4; - } - }, { - key: "NAME", - get: function get() { - return NAME$5; - } - }]); - return TemplateFactory; - }(Config); - /** - * -------------------------------------------------------------------------- - * Bootstrap (v5.2.2): tooltip.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - /** - * Constants - */ - var NAME$4 = 'tooltip'; - var DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']); - var CLASS_NAME_FADE$2 = 'fade'; - var CLASS_NAME_MODAL = 'modal'; - var CLASS_NAME_SHOW$2 = 'show'; - var SELECTOR_TOOLTIP_INNER = '.tooltip-inner'; - var SELECTOR_MODAL = "." + CLASS_NAME_MODAL; - var EVENT_MODAL_HIDE = 'hide.bs.modal'; - var TRIGGER_HOVER = 'hover'; - var TRIGGER_FOCUS = 'focus'; - var TRIGGER_CLICK = 'click'; - var TRIGGER_MANUAL = 'manual'; - var EVENT_HIDE$2 = 'hide'; - var EVENT_HIDDEN$2 = 'hidden'; - var EVENT_SHOW$2 = 'show'; - var EVENT_SHOWN$2 = 'shown'; - var EVENT_INSERTED = 'inserted'; - var EVENT_CLICK$1 = 'click'; - var EVENT_FOCUSIN$1 = 'focusin'; - var EVENT_FOCUSOUT$1 = 'focusout'; - var EVENT_MOUSEENTER = 'mouseenter'; - var EVENT_MOUSELEAVE = 'mouseleave'; var AttachmentMap = { AUTO: 'auto', TOP: 'top', @@ -4974,280 +4762,309 @@ LEFT: isRTL() ? 'right' : 'left' }; var Default$3 = { - allowList: DefaultAllowlist, animation: true, - boundary: 'clippingParents', - container: false, - customClass: '', + template: '', + trigger: 'hover focus', + title: '', delay: 0, - fallbackPlacements: ['top', 'right', 'bottom', 'left'], html: false, - offset: [0, 0], + selector: false, placement: 'top', - popperConfig: null, + offset: [0, 0], + container: false, + fallbackPlacements: ['top', 'right', 'bottom', 'left'], + boundary: 'clippingParents', + customClass: '', sanitize: true, sanitizeFn: null, - selector: false, - template: '', - title: '', - trigger: 'hover focus' + allowList: DefaultAllowlist, + popperConfig: null }; - var DefaultType$3 = { - allowList: 'object', - animation: 'boolean', - boundary: '(string|element)', - container: '(string|element|boolean)', - customClass: '(string|function)', - delay: '(number|object)', - fallbackPlacements: 'array', - html: 'boolean', - offset: '(array|string|function)', - placement: '(string|function)', - popperConfig: '(null|object|function)', - sanitize: 'boolean', - sanitizeFn: '(null|function)', - selector: '(string|boolean)', - template: 'string', - title: '(string|element|function)', - trigger: 'string' + var Event$2 = { + HIDE: "hide" + EVENT_KEY$4, + HIDDEN: "hidden" + EVENT_KEY$4, + SHOW: "show" + EVENT_KEY$4, + SHOWN: "shown" + EVENT_KEY$4, + INSERTED: "inserted" + EVENT_KEY$4, + CLICK: "click" + EVENT_KEY$4, + FOCUSIN: "focusin" + EVENT_KEY$4, + FOCUSOUT: "focusout" + EVENT_KEY$4, + MOUSEENTER: "mouseenter" + EVENT_KEY$4, + MOUSELEAVE: "mouseleave" + EVENT_KEY$4 }; + var CLASS_NAME_FADE$2 = 'fade'; + var CLASS_NAME_MODAL = 'modal'; + var CLASS_NAME_SHOW$2 = 'show'; + var HOVER_STATE_SHOW = 'show'; + var HOVER_STATE_OUT = 'out'; + var SELECTOR_TOOLTIP_INNER = '.tooltip-inner'; + var SELECTOR_MODAL = "." + CLASS_NAME_MODAL; + var EVENT_MODAL_HIDE = 'hide.bs.modal'; + var TRIGGER_HOVER = 'hover'; + var TRIGGER_FOCUS = 'focus'; + var TRIGGER_CLICK = 'click'; + var TRIGGER_MANUAL = 'manual'; /** - * Class definition + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ */ var Tooltip = /*#__PURE__*/ function (_BaseComponent8) { - _inheritsLoose(Tooltip, _BaseComponent8); - function Tooltip(element, config) { - var _this39; + var _this34; if (typeof Popper === 'undefined') { throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)'); } - _this39 = _BaseComponent8.call(this, element, config) || this; // Private - _this39._isEnabled = true; - _this39._timeout = 0; - _this39._isHovered = null; - _this39._activeTrigger = {}; - _this39._popper = null; - _this39._templateFactory = null; - _this39._newContent = null; // Protected - _this39.tip = null; - _this39._setListeners(); - if (!_this39._config.selector) { - _this39._fixTitle(); - } - return _this39; + _this34 = _BaseComponent8.call(this, element) || this; // private + _this34._isEnabled = true; + _this34._timeout = 0; + _this34._hoverState = ''; + _this34._activeTrigger = {}; + _this34._popper = null; // Protected + _this34._config = _this34._getConfig(config); + _this34.tip = null; + _this34._setListeners(); + return _this34; } // Getters - var _proto15 = Tooltip.prototype; + _inherits(Tooltip, _BaseComponent8); + var _proto12 = Tooltip.prototype; // Public - _proto15.enable = function enable() { + _proto12.enable = function enable() { this._isEnabled = true; }; - _proto15.disable = function disable() { + _proto12.disable = function disable() { this._isEnabled = false; }; - _proto15.toggleEnabled = function toggleEnabled() { + _proto12.toggleEnabled = function toggleEnabled() { this._isEnabled = !this._isEnabled; }; - _proto15.toggle = function toggle() { + _proto12.toggle = function toggle(event) { if (!this._isEnabled) { return; } - this._activeTrigger.click = !this._activeTrigger.click; - if (this._isShown()) { - this._leave(); - return; + if (event) { + var context = this._initializeOnDelegatedTarget(event); + context._activeTrigger.click = !context._activeTrigger.click; + if (context._isWithActiveTrigger()) { + context._enter(null, context); + } else { + context._leave(null, context); + } + } else { + if (this.getTipElement().classList.contains(CLASS_NAME_SHOW$2)) { + this._leave(null, this); + return; + } + this._enter(null, this); } - this._enter(); }; - _proto15.dispose = function dispose() { + _proto12.dispose = function dispose() { clearTimeout(this._timeout); EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); if (this.tip) { this.tip.remove(); } - if (this._element.getAttribute('data-bs-original-title')) { - this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title')); - } this._disposePopper(); - _BaseComponent8.prototype.dispose.call(this); + _superPropGet(Tooltip, "dispose", this)([]); }; - _proto15.show = function show() { - var _this40 = this; + _proto12.show = function show() { + var _this35 = this; if (this._element.style.display === 'none') { throw new Error('Please use show on visible elements'); } - if (!(this._isWithContent() && this._isEnabled)) { + if (!(this.isWithContent() && this._isEnabled)) { return; } - var showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2)); - var shadowRoot = findShadowRoot(this._element); - var isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element); + var showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW); + var shadowRoot = _findShadowRoot(this._element); + var isInTheDom = shadowRoot === null ? this._element.ownerDocument.documentElement.contains(this._element) : shadowRoot.contains(this._element); if (showEvent.defaultPrevented || !isInTheDom) { return; - } // todo v6 remove this OR make it optional - if (this.tip) { + } // A trick to recreate a tooltip in case a new title is given by using the NOT documented `data-bs-original-title` + // This will be removed later in favor of a `setContent` method + if (this.constructor.NAME === 'tooltip' && this.tip && this.getTitle() !== this.tip.querySelector(SELECTOR_TOOLTIP_INNER).innerHTML) { + this._disposePopper(); this.tip.remove(); this.tip = null; } - var tip = this._getTipElement(); - this._element.setAttribute('aria-describedby', tip.getAttribute('id')); + var tip = this.getTipElement(); + var tipId = getUID(this.constructor.NAME); + tip.setAttribute('id', tipId); + this._element.setAttribute('aria-describedby', tipId); + if (this._config.animation) { + tip.classList.add(CLASS_NAME_FADE$2); + } + var placement = typeof this._config.placement === 'function' ? this._config.placement.call(this, tip, this._element) : this._config.placement; + var attachment = this._getAttachment(placement); + this._addAttachmentClass(attachment); var container = this._config.container; + Data.set(tip, this.constructor.DATA_KEY, this); if (!this._element.ownerDocument.documentElement.contains(this.tip)) { container.append(tip); - EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED)); + EventHandler.trigger(this._element, this.constructor.Event.INSERTED); } if (this._popper) { this._popper.update(); } else { - this._popper = this._createPopper(tip); - } - tip.classList.add(CLASS_NAME_SHOW$2); // If this is a touch-enabled device we add extra + this._popper = createPopper(this._element, tip, this._getPopperConfig(attachment)); + } + tip.classList.add(CLASS_NAME_SHOW$2); + var customClass = this._resolvePossibleFunction(this._config.customClass); + if (customClass) { + var _tip$classList; + (_tip$classList = tip.classList).add.apply(_tip$classList, _maybeArrayLike(_toConsumableArray, customClass.split(' '))); + } // If this is a touch-enabled device we add extra // empty mouseover listeners to the body's immediate children; // only needed because of broken event delegation on iOS // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html if ('ontouchstart' in document.documentElement) { - for (var _iterator21 = _createForOfIteratorHelperLoose((_ref14 = []).concat.apply(_ref14, document.body.children)), _step21; !(_step21 = _iterator21()).done;) { - var _ref14; - var element = _step21.value; + var _ref13; + (_ref13 = []).concat.apply(_ref13, _maybeArrayLike(_toConsumableArray, document.body.children)).forEach(function (element) { EventHandler.on(element, 'mouseover', noop); - } + }); } var complete = function complete() { - EventHandler.trigger(_this40._element, _this40.constructor.eventName(EVENT_SHOWN$2)); - if (_this40._isHovered === false) { - _this40._leave(); + var prevHoverState = _this35._hoverState; + _this35._hoverState = null; + EventHandler.trigger(_this35._element, _this35.constructor.Event.SHOWN); + if (prevHoverState === HOVER_STATE_OUT) { + _this35._leave(null, _this35); } - _this40._isHovered = false; }; - this._queueCallback(complete, this.tip, this._isAnimated()); + var isAnimated = this.tip.classList.contains(CLASS_NAME_FADE$2); + this._queueCallback(complete, this.tip, isAnimated); }; - _proto15.hide = function hide() { - var _this41 = this; - if (!this._isShown()) { + _proto12.hide = function hide() { + var _this36 = this; + if (!this._popper) { return; } - var hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2)); + var tip = this.getTipElement(); + var complete = function complete() { + if (_this36._isWithActiveTrigger()) { + return; + } + if (_this36._hoverState !== HOVER_STATE_SHOW) { + tip.remove(); + } + _this36._cleanTipClass(); + _this36._element.removeAttribute('aria-describedby'); + EventHandler.trigger(_this36._element, _this36.constructor.Event.HIDDEN); + _this36._disposePopper(); + }; + var hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE); if (hideEvent.defaultPrevented) { return; } - var tip = this._getTipElement(); tip.classList.remove(CLASS_NAME_SHOW$2); // If this is a touch-enabled device we remove the extra // empty mouseover listeners we added for iOS support if ('ontouchstart' in document.documentElement) { - for (var _iterator22 = _createForOfIteratorHelperLoose((_ref15 = []).concat.apply(_ref15, document.body.children)), _step22; !(_step22 = _iterator22()).done;) { - var _ref15; - var element = _step22.value; - EventHandler.off(element, 'mouseover', noop); - } + var _ref14; + (_ref14 = []).concat.apply(_ref14, _maybeArrayLike(_toConsumableArray, document.body.children)).forEach(function (element) { + return EventHandler.off(element, 'mouseover', noop); + }); } this._activeTrigger[TRIGGER_CLICK] = false; this._activeTrigger[TRIGGER_FOCUS] = false; this._activeTrigger[TRIGGER_HOVER] = false; - this._isHovered = null; // it is a trick to support manual triggering - var complete = function complete() { - if (_this41._isWithActiveTrigger()) { - return; - } - if (!_this41._isHovered) { - tip.remove(); - } - _this41._element.removeAttribute('aria-describedby'); - EventHandler.trigger(_this41._element, _this41.constructor.eventName(EVENT_HIDDEN$2)); - _this41._disposePopper(); - }; - this._queueCallback(complete, this.tip, this._isAnimated()); + var isAnimated = this.tip.classList.contains(CLASS_NAME_FADE$2); + this._queueCallback(complete, this.tip, isAnimated); + this._hoverState = ''; }; - _proto15.update = function update() { - if (this._popper) { + _proto12.update = function update() { + if (this._popper !== null) { this._popper.update(); } } // Protected ; - _proto15._isWithContent = function _isWithContent() { - return Boolean(this._getTitle()); + _proto12.isWithContent = function isWithContent() { + return Boolean(this.getTitle()); }; - _proto15._getTipElement = function _getTipElement() { - if (!this.tip) { - this.tip = this._createTipElement(this._newContent || this._getContentForTemplate()); - } + _proto12.getTipElement = function getTipElement() { + if (this.tip) { + return this.tip; + } + var element = document.createElement('div'); + element.innerHTML = this._config.template; + var tip = element.children[0]; + this.setContent(tip); + tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2); + this.tip = tip; return this.tip; }; - _proto15._createTipElement = function _createTipElement(content) { - var tip = this._getTemplateFactory(content).toHtml(); // todo: remove this check on v6 - if (!tip) { - return null; - } - tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2); // todo: on v6 the following can be achieved with CSS only - tip.classList.add("bs-" + this.constructor.NAME + "-auto"); - var tipId = getUID(this.constructor.NAME).toString(); - tip.setAttribute('id', tipId); - if (this._isAnimated()) { - tip.classList.add(CLASS_NAME_FADE$2); - } - return tip; + _proto12.setContent = function setContent(tip) { + this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TOOLTIP_INNER); }; - _proto15.setContent = function setContent(content) { - this._newContent = content; - if (this._isShown()) { - this._disposePopper(); - this.show(); - } + _proto12._sanitizeAndSetContent = function _sanitizeAndSetContent(template, content, selector) { + var templateElement = SelectorEngine.findOne(selector, template); + if (!content && templateElement) { + templateElement.remove(); + return; + } // we use append for html objects to maintain js events + this.setElementContent(templateElement, content); }; - _proto15._getTemplateFactory = function _getTemplateFactory(content) { - if (this._templateFactory) { - this._templateFactory.changeContent(content); + _proto12.setElementContent = function setElementContent(element, content) { + if (element === null) { + return; + } + if (isElement$1(content)) { + content = getElement(content); // content is a DOM node or a jQuery + if (this._config.html) { + if (content.parentNode !== element) { + element.innerHTML = ''; + element.append(content); + } + } else { + element.textContent = content.textContent; + } + return; + } + if (this._config.html) { + if (this._config.sanitize) { + content = sanitizeHtml(content, this._config.allowList, this._config.sanitizeFn); + } + element.innerHTML = content; } else { - this._templateFactory = new TemplateFactory(_extends({}, this._config, { - // the `content` var has to be after `this._config` - // to override config.content in case of popover - content: content, - extraClass: this._resolvePossibleFunction(this._config.customClass) - })); + element.textContent = content; } - return this._templateFactory; }; - _proto15._getContentForTemplate = function _getContentForTemplate() { - var _ref16; - return _ref16 = {}, _ref16[SELECTOR_TOOLTIP_INNER] = this._getTitle(), _ref16; + _proto12.getTitle = function getTitle() { + var title = this._element.getAttribute('data-bs-original-title') || this._config.title; + return this._resolvePossibleFunction(title); }; - _proto15._getTitle = function _getTitle() { - return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title'); + _proto12.updateAttachment = function updateAttachment(attachment) { + if (attachment === 'right') { + return 'end'; + } + if (attachment === 'left') { + return 'start'; + } + return attachment; } // Private ; - _proto15._initializeOnDelegatedTarget = function _initializeOnDelegatedTarget(event) { - return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig()); - }; - _proto15._isAnimated = function _isAnimated() { - return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE$2); - }; - _proto15._isShown = function _isShown() { - return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW$2); + _proto12._initializeOnDelegatedTarget = function _initializeOnDelegatedTarget(event, context) { + return context || this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig()); }; - _proto15._createPopper = function _createPopper(tip) { - var placement = typeof this._config.placement === 'function' ? this._config.placement.call(this, tip, this._element) : this._config.placement; - var attachment = AttachmentMap[placement.toUpperCase()]; - return createPopper(this._element, tip, this._getPopperConfig(attachment)); - }; - _proto15._getOffset = function _getOffset() { - var _this42 = this; + _proto12._getOffset = function _getOffset() { + var _this37 = this; var offset = this._config.offset; if (typeof offset === 'string') { - return offset.split(',').map(function (value) { - return Number.parseInt(value, 10); + return offset.split(',').map(function (val) { + return Number.parseInt(val, 10); }); } if (typeof offset === 'function') { return function (popperData) { - return offset(popperData, _this42._element); + return offset(popperData, _this37._element); }; } return offset; }; - _proto15._resolvePossibleFunction = function _resolvePossibleFunction(arg) { - return typeof arg === 'function' ? arg.call(this._element) : arg; + _proto12._resolvePossibleFunction = function _resolvePossibleFunction(content) { + return typeof content === 'function' ? content.call(this._element) : content; }; - _proto15._getPopperConfig = function _getPopperConfig(attachment) { - var _this43 = this; + _proto12._getPopperConfig = function _getPopperConfig(attachment) { + var _this38 = this; var defaultBsPopperConfig = { placement: attachment, modifiers: [{ @@ -5271,108 +5088,129 @@ element: "." + this.constructor.NAME + "-arrow" } }, { - name: 'preSetPlacement', + name: 'onChange', enabled: true, - phase: 'beforeMain', + phase: 'afterWrite', fn: function fn(data) { - // Pre-set Popper's placement attribute in order to read the arrow sizes properly. - // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement - _this43._getTipElement().setAttribute('data-popper-placement', data.state.placement); + return _this38._handlePopperPlacementChange(data); } - }] + }], + onFirstUpdate: function onFirstUpdate(data) { + if (data.options.placement !== data.placement) { + _this38._handlePopperPlacementChange(data); + } + } }; return _extends({}, defaultBsPopperConfig, typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig); }; - _proto15._setListeners = function _setListeners() { - var _this44 = this; + _proto12._addAttachmentClass = function _addAttachmentClass(attachment) { + this.getTipElement().classList.add(this._getBasicClassPrefix() + "-" + this.updateAttachment(attachment)); + }; + _proto12._getAttachment = function _getAttachment(placement) { + return AttachmentMap[placement.toUpperCase()]; + }; + _proto12._setListeners = function _setListeners() { + var _this39 = this; var triggers = this._config.trigger.split(' '); - for (var _iterator23 = _createForOfIteratorHelperLoose(triggers), _step23; !(_step23 = _iterator23()).done;) { - var trigger = _step23.value; + triggers.forEach(function (trigger) { if (trigger === 'click') { - EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, function (event) { - var context = _this44._initializeOnDelegatedTarget(event); - context.toggle(); + EventHandler.on(_this39._element, _this39.constructor.Event.CLICK, _this39._config.selector, function (event) { + return _this39.toggle(event); }); } else if (trigger !== TRIGGER_MANUAL) { - var eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1); - var eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1); - EventHandler.on(this._element, eventIn, this._config.selector, function (event) { - var context = _this44._initializeOnDelegatedTarget(event); - context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true; - context._enter(); + var eventIn = trigger === TRIGGER_HOVER ? _this39.constructor.Event.MOUSEENTER : _this39.constructor.Event.FOCUSIN; + var eventOut = trigger === TRIGGER_HOVER ? _this39.constructor.Event.MOUSELEAVE : _this39.constructor.Event.FOCUSOUT; + EventHandler.on(_this39._element, eventIn, _this39._config.selector, function (event) { + return _this39._enter(event); }); - EventHandler.on(this._element, eventOut, this._config.selector, function (event) { - var context = _this44._initializeOnDelegatedTarget(event); - context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget); - context._leave(); + EventHandler.on(_this39._element, eventOut, _this39._config.selector, function (event) { + return _this39._leave(event); }); } - } + }); this._hideModalHandler = function () { - if (_this44._element) { - _this44.hide(); + if (_this39._element) { + _this39.hide(); } }; EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); + if (this._config.selector) { + this._config = _extends({}, this._config, { + trigger: 'manual', + selector: '' + }); + } else { + this._fixTitle(); + } }; - _proto15._fixTitle = function _fixTitle() { + _proto12._fixTitle = function _fixTitle() { var title = this._element.getAttribute('title'); - if (!title) { - return; - } - if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) { - this._element.setAttribute('aria-label', title); + var originalTitleType = typeof this._element.getAttribute('data-bs-original-title'); + if (title || originalTitleType !== 'string') { + this._element.setAttribute('data-bs-original-title', title || ''); + if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) { + this._element.setAttribute('aria-label', title); + } + this._element.setAttribute('title', ''); } - this._element.setAttribute('data-bs-original-title', title); // DO NOT USE IT. Is only for backwards compatibility - this._element.removeAttribute('title'); }; - _proto15._enter = function _enter() { - var _this45 = this; - if (this._isShown() || this._isHovered) { - this._isHovered = true; + _proto12._enter = function _enter(event, context) { + context = this._initializeOnDelegatedTarget(event, context); + if (event) { + context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true; + } + if (context.getTipElement().classList.contains(CLASS_NAME_SHOW$2) || context._hoverState === HOVER_STATE_SHOW) { + context._hoverState = HOVER_STATE_SHOW; return; } - this._isHovered = true; - this._setTimeout(function () { - if (_this45._isHovered) { - _this45.show(); + clearTimeout(context._timeout); + context._hoverState = HOVER_STATE_SHOW; + if (!context._config.delay || !context._config.delay.show) { + context.show(); + return; + } + context._timeout = setTimeout(function () { + if (context._hoverState === HOVER_STATE_SHOW) { + context.show(); } - }, this._config.delay.show); + }, context._config.delay.show); }; - _proto15._leave = function _leave() { - var _this46 = this; - if (this._isWithActiveTrigger()) { + _proto12._leave = function _leave(event, context) { + context = this._initializeOnDelegatedTarget(event, context); + if (event) { + context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget); + } + if (context._isWithActiveTrigger()) { return; } - this._isHovered = false; - this._setTimeout(function () { - if (!_this46._isHovered) { - _this46.hide(); + clearTimeout(context._timeout); + context._hoverState = HOVER_STATE_OUT; + if (!context._config.delay || !context._config.delay.hide) { + context.hide(); + return; + } + context._timeout = setTimeout(function () { + if (context._hoverState === HOVER_STATE_OUT) { + context.hide(); } - }, this._config.delay.hide); - }; - _proto15._setTimeout = function _setTimeout(handler, timeout) { - clearTimeout(this._timeout); - this._timeout = setTimeout(handler, timeout); + }, context._config.delay.hide); }; - _proto15._isWithActiveTrigger = function _isWithActiveTrigger() { - return Object.values(this._activeTrigger).includes(true); - }; - _proto15._getConfig = function _getConfig(config) { - var dataAttributes = Manipulator.getDataAttributes(this._element); - for (var _i10 = 0, _Object$keys5 = Object.keys(dataAttributes); _i10 < _Object$keys5.length; _i10++) { - var dataAttribute = _Object$keys5[_i10]; - if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) { - delete dataAttributes[dataAttribute]; + _proto12._isWithActiveTrigger = function _isWithActiveTrigger() { + for (var trigger in this._activeTrigger) { + if (this._activeTrigger[trigger]) { + return true; } } - config = _extends({}, dataAttributes, typeof config === 'object' && config ? config : {}); - config = this._mergeConfigObj(config); - config = this._configAfterMerge(config); - this._typeCheckConfig(config); - return config; + return false; }; - _proto15._configAfterMerge = function _configAfterMerge(config) { + _proto12._getConfig = function _getConfig(config) { + var dataAttributes = Manipulator.getDataAttributes(this._element); + Object.keys(dataAttributes).forEach(function (dataAttr) { + if (DISALLOWED_ATTRIBUTES.has(dataAttr)) { + delete dataAttributes[dataAttr]; + } + }); + config = _extends({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {}); config.container = config.container === false ? document.body : getElement(config.container); if (typeof config.delay === 'number') { config.delay = { @@ -5386,22 +5224,48 @@ if (typeof config.content === 'number') { config.content = config.content.toString(); } + typeCheckConfig(NAME$4, config, this.constructor.DefaultType); + if (config.sanitize) { + config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn); + } return config; }; - _proto15._getDelegateConfig = function _getDelegateConfig() { + _proto12._getDelegateConfig = function _getDelegateConfig() { var config = {}; for (var key in this._config) { if (this.constructor.Default[key] !== this._config[key]) { config[key] = this._config[key]; } - } - config.selector = false; - config.trigger = 'manual'; // In the future can be replaced with: + } // In the future can be replaced with: // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]]) // `Object.fromEntries(keysWithDifferentValues)` return config; }; - _proto15._disposePopper = function _disposePopper() { + _proto12._cleanTipClass = function _cleanTipClass() { + var tip = this.getTipElement(); + var basicClassPrefixRegex = new RegExp("(^|\\s)" + this._getBasicClassPrefix() + "\\S+", 'g'); + var tabClass = tip.getAttribute('class').match(basicClassPrefixRegex); + if (tabClass !== null && tabClass.length > 0) { + tabClass.map(function (token) { + return token.trim(); + }).forEach(function (tClass) { + return tip.classList.remove(tClass); + }); + } + }; + _proto12._getBasicClassPrefix = function _getBasicClassPrefix() { + return CLASS_PREFIX$1; + }; + _proto12._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) { + var state = popperData.state; + if (!state) { + return; + } + this.tip = state.elements.popper; + this._cleanTipClass(); + this._addAttachmentClass(this._getAttachment(state.placement)); + }; + _proto12._disposePopper = function _disposePopper() { if (this._popper) { this._popper.destroy(); this._popper = null; @@ -5411,95 +5275,121 @@ Tooltip.jQueryInterface = function jQueryInterface(config) { return this.each(function () { var data = Tooltip.getOrCreateInstance(this, config); - if (typeof config !== 'string') { - return; - } - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError("No method named \"" + config + "\""); + } + data[config](); } - data[config](); }); }; - _createClass(Tooltip, null, [{ + return _createClass(Tooltip, null, [{ key: "Default", get: function get() { return Default$3; } }, { - key: "DefaultType", + key: "NAME", get: function get() { - return DefaultType$3; + return NAME$4; } }, { - key: "NAME", + key: "Event", get: function get() { - return NAME$4; + return Event$2; + } + }, { + key: "DefaultType", + get: function get() { + return DefaultType$3; } }]); - return Tooltip; }(BaseComponent); /** + * ------------------------------------------------------------------------ * jQuery + * ------------------------------------------------------------------------ + * add .Tooltip to jQuery only if jQuery is present */ defineJQueryPlugin(Tooltip); /** * -------------------------------------------------------------------------- - * Bootstrap (v5.2.2): popover.js + * Bootstrap (v5.1.3): popover.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ /** + * ------------------------------------------------------------------------ * Constants + * ------------------------------------------------------------------------ */ var NAME$3 = 'popover'; - var SELECTOR_TITLE = '.popover-header'; - var SELECTOR_CONTENT = '.popover-body'; + var DATA_KEY$3 = 'bs.popover'; + var EVENT_KEY$3 = "." + DATA_KEY$3; + var CLASS_PREFIX = 'bs-popover'; var Default$2 = _extends({}, Tooltip.Default, { - content: '', - offset: [0, 8], placement: 'right', - template: '', - trigger: 'click' + offset: [0, 8], + trigger: 'click', + content: '', + template: '' }); var DefaultType$2 = _extends({}, Tooltip.DefaultType, { - content: '(null|string|element|function)' + content: '(string|element|function)' }); + var Event$1 = { + HIDE: "hide" + EVENT_KEY$3, + HIDDEN: "hidden" + EVENT_KEY$3, + SHOW: "show" + EVENT_KEY$3, + SHOWN: "shown" + EVENT_KEY$3, + INSERTED: "inserted" + EVENT_KEY$3, + CLICK: "click" + EVENT_KEY$3, + FOCUSIN: "focusin" + EVENT_KEY$3, + FOCUSOUT: "focusout" + EVENT_KEY$3, + MOUSEENTER: "mouseenter" + EVENT_KEY$3, + MOUSELEAVE: "mouseleave" + EVENT_KEY$3 + }; + var SELECTOR_TITLE = '.popover-header'; + var SELECTOR_CONTENT = '.popover-body'; /** - * Class definition + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ */ var Popover = /*#__PURE__*/ function (_Tooltip) { - _inheritsLoose(Popover, _Tooltip); - function Popover() { return _Tooltip.apply(this, arguments) || this; } - var _proto16 = Popover.prototype; + _inherits(Popover, _Tooltip); + var _proto13 = Popover.prototype; // Overrides - _proto16._isWithContent = function _isWithContent() { - return this._getTitle() || this._getContent(); + _proto13.isWithContent = function isWithContent() { + return this.getTitle() || this._getContent(); + }; + _proto13.setContent = function setContent(tip) { + this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TITLE); + this._sanitizeAndSetContent(tip, this._getContent(), SELECTOR_CONTENT); } // Private ; - _proto16._getContentForTemplate = function _getContentForTemplate() { - var _ref17; - return _ref17 = {}, _ref17[SELECTOR_TITLE] = this._getTitle(), _ref17[SELECTOR_CONTENT] = this._getContent(), _ref17; - }; - _proto16._getContent = function _getContent() { + _proto13._getContent = function _getContent() { return this._resolvePossibleFunction(this._config.content); + }; + _proto13._getBasicClassPrefix = function _getBasicClassPrefix() { + return CLASS_PREFIX; } // Static ; Popover.jQueryInterface = function jQueryInterface(config) { return this.each(function () { var data = Popover.getOrCreateInstance(this, config); - if (typeof config !== 'string') { - return; - } - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError("No method named \"" + config + "\""); + } + data[config](); } - data[config](); }); }; - _createClass(Popover, null, [{ + return _createClass(Popover, null, [{ key: "Default", get: // Getters @@ -5507,236 +5397,202 @@ return Default$2; } }, { - key: "DefaultType", + key: "NAME", get: function get() { - return DefaultType$2; + return NAME$3; } }, { - key: "NAME", + key: "Event", get: function get() { - return NAME$3; + return Event$1; + } + }, { + key: "DefaultType", + get: function get() { + return DefaultType$2; } }]); - return Popover; }(Tooltip); /** + * ------------------------------------------------------------------------ * jQuery + * ------------------------------------------------------------------------ + * add .Popover to jQuery only if jQuery is present */ defineJQueryPlugin(Popover); /** * -------------------------------------------------------------------------- - * Bootstrap (v5.2.2): scrollspy.js + * Bootstrap (v5.1.3): scrollspy.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ /** + * ------------------------------------------------------------------------ * Constants + * ------------------------------------------------------------------------ */ var NAME$2 = 'scrollspy'; var DATA_KEY$2 = 'bs.scrollspy'; var EVENT_KEY$2 = "." + DATA_KEY$2; - var DATA_API_KEY = '.data-api'; + var DATA_API_KEY$1 = '.data-api'; + var Default$1 = { + offset: 10, + method: 'auto', + target: '' + }; + var DefaultType$1 = { + offset: 'number', + method: 'string', + target: '(string|element)' + }; var EVENT_ACTIVATE = "activate" + EVENT_KEY$2; - var EVENT_CLICK = "click" + EVENT_KEY$2; - var EVENT_LOAD_DATA_API$1 = "load" + EVENT_KEY$2 + DATA_API_KEY; + var EVENT_SCROLL = "scroll" + EVENT_KEY$2; + var EVENT_LOAD_DATA_API = "load" + EVENT_KEY$2 + DATA_API_KEY$1; var CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'; var CLASS_NAME_ACTIVE$1 = 'active'; var SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]'; - var SELECTOR_TARGET_LINKS = '[href]'; - var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'; + var SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group'; var SELECTOR_NAV_LINKS = '.nav-link'; var SELECTOR_NAV_ITEMS = '.nav-item'; var SELECTOR_LIST_ITEMS = '.list-group-item'; - var SELECTOR_LINK_ITEMS = SELECTOR_NAV_LINKS + ", " + SELECTOR_NAV_ITEMS + " > " + SELECTOR_NAV_LINKS + ", " + SELECTOR_LIST_ITEMS; - var SELECTOR_DROPDOWN = '.dropdown'; + var SELECTOR_LINK_ITEMS = SELECTOR_NAV_LINKS + ", " + SELECTOR_LIST_ITEMS + ", ." + CLASS_NAME_DROPDOWN_ITEM; + var SELECTOR_DROPDOWN$1 = '.dropdown'; var SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle'; - var Default$1 = { - offset: null, - // TODO: v6 @deprecated, keep it for backwards compatibility reasons - rootMargin: '0px 0px -25%', - smoothScroll: false, - target: null, - threshold: [0.1, 0.5, 1] - }; - var DefaultType$1 = { - offset: '(number|null)', - // TODO v6 @deprecated, keep it for backwards compatibility reasons - rootMargin: 'string', - smoothScroll: 'boolean', - target: 'element', - threshold: 'array' - }; + var METHOD_OFFSET = 'offset'; + var METHOD_POSITION = 'position'; /** - * Class definition + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ */ var ScrollSpy = /*#__PURE__*/ function (_BaseComponent9) { - _inheritsLoose(ScrollSpy, _BaseComponent9); - function ScrollSpy(element, config) { - var _this47; - _this47 = _BaseComponent9.call(this, element, config) || this; // this._element is the observablesContainer and config.target the menu links wrapper - _this47._targetLinks = new Map(); - _this47._observableSections = new Map(); - _this47._rootElement = getComputedStyle(_this47._element).overflowY === 'visible' ? null : _this47._element; - _this47._activeTarget = null; - _this47._observer = null; - _this47._previousScrollData = { - visibleEntryTop: 0, - parentScrollTop: 0 - }; - _this47.refresh(); // initialize - return _this47; + var _this40; + _this40 = _BaseComponent9.call(this, element) || this; + _this40._scrollElement = _this40._element.tagName === 'BODY' ? window : _this40._element; + _this40._config = _this40._getConfig(config); + _this40._offsets = []; + _this40._targets = []; + _this40._activeTarget = null; + _this40._scrollHeight = 0; + EventHandler.on(_this40._scrollElement, EVENT_SCROLL, function () { + return _this40._process(); + }); + _this40.refresh(); + _this40._process(); + return _this40; } // Getters - var _proto17 = ScrollSpy.prototype; + _inherits(ScrollSpy, _BaseComponent9); + var _proto14 = ScrollSpy.prototype; // Public - _proto17.refresh = function refresh() { - this._initializeTargetsAndObservables(); - this._maybeEnableSmoothScroll(); - if (this._observer) { - this._observer.disconnect(); - } else { - this._observer = this._getNewObserver(); - } - for (var _iterator24 = _createForOfIteratorHelperLoose(this._observableSections.values()), _step24; !(_step24 = _iterator24()).done;) { - var section = _step24.value; - this._observer.observe(section); - } + _proto14.refresh = function refresh() { + var _this41 = this; + var autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION; + var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method; + var offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0; + this._offsets = []; + this._targets = []; + this._scrollHeight = this._getScrollHeight(); + var targets = SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target); + targets.map(function (element) { + var targetSelector = getSelectorFromElement(element); + var target = targetSelector ? SelectorEngine.findOne(targetSelector) : null; + if (target) { + var targetBCR = target.getBoundingClientRect(); + if (targetBCR.width || targetBCR.height) { + return [Manipulator[offsetMethod](target).top + offsetBase, targetSelector]; + } + } + return null; + }).filter(function (item) { + return item; + }).sort(function (a, b) { + return a[0] - b[0]; + }).forEach(function (item) { + _this41._offsets.push(item[0]); + _this41._targets.push(item[1]); + }); }; - _proto17.dispose = function dispose() { - this._observer.disconnect(); - _BaseComponent9.prototype.dispose.call(this); + _proto14.dispose = function dispose() { + EventHandler.off(this._scrollElement, EVENT_KEY$2); + _superPropGet(ScrollSpy, "dispose", this)([]); } // Private ; - _proto17._configAfterMerge = function _configAfterMerge(config) { - // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case - config.target = getElement(config.target) || document.body; // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only - config.rootMargin = config.offset ? config.offset + "px 0px -30%" : config.rootMargin; - if (typeof config.threshold === 'string') { - config.threshold = config.threshold.split(',').map(function (value) { - return Number.parseFloat(value); - }); - } + _proto14._getConfig = function _getConfig(config) { + config = _extends({}, Default$1, Manipulator.getDataAttributes(this._element), typeof config === 'object' && config ? config : {}); + config.target = getElement(config.target) || document.documentElement; + typeCheckConfig(NAME$2, config, DefaultType$1); return config; }; - _proto17._maybeEnableSmoothScroll = function _maybeEnableSmoothScroll() { - var _this48 = this; - if (!this._config.smoothScroll) { - return; - } // unregister any previous listeners - EventHandler.off(this._config.target, EVENT_CLICK); - EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, function (event) { - var observableSection = _this48._observableSections.get(event.target.hash); - if (observableSection) { - event.preventDefault(); - var root = _this48._rootElement || window; - var height = observableSection.offsetTop - _this48._element.offsetTop; - if (root.scrollTo) { - root.scrollTo({ - top: height, - behavior: 'smooth' - }); - return; - } // Chrome 60 doesn't support `scrollTo` - root.scrollTop = height; - } - }); + _proto14._getScrollTop = function _getScrollTop() { + return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop; }; - _proto17._getNewObserver = function _getNewObserver() { - var _this49 = this; - var options = { - root: this._rootElement, - threshold: this._config.threshold, - rootMargin: this._config.rootMargin - }; - return new IntersectionObserver(function (entries) { - return _this49._observerCallback(entries); - }, options); - } // The logic of selection - ; - _proto17._observerCallback = function _observerCallback(entries) { - var _this50 = this; - var targetElement = function targetElement(entry) { - return _this50._targetLinks.get("#" + entry.target.id); - }; - var activate = function activate(entry) { - _this50._previousScrollData.visibleEntryTop = entry.target.offsetTop; - _this50._process(targetElement(entry)); - }; - var parentScrollTop = (this._rootElement || document.documentElement).scrollTop; - var userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop; - this._previousScrollData.parentScrollTop = parentScrollTop; - for (var _iterator25 = _createForOfIteratorHelperLoose(entries), _step25; !(_step25 = _iterator25()).done;) { - var entry = _step25.value; - if (!entry.isIntersecting) { - this._activeTarget = null; - this._clearActiveClass(targetElement(entry)); - continue; - } - var entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop; // if we are scrolling down, pick the bigger offsetTop - if (userScrollsDown && entryIsLowerThanPrevious) { - activate(entry); // if parent isn't scrolled, let's keep the first visible item, breaking the iteration - if (!parentScrollTop) { - return; - } - continue; - } // if we are scrolling up, pick the smallest offsetTop - if (!userScrollsDown && !entryIsLowerThanPrevious) { - activate(entry); - } - } + _proto14._getScrollHeight = function _getScrollHeight() { + return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); }; - _proto17._initializeTargetsAndObservables = function _initializeTargetsAndObservables() { - this._targetLinks = new Map(); - this._observableSections = new Map(); - var targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target); - for (var _iterator26 = _createForOfIteratorHelperLoose(targetLinks), _step26; !(_step26 = _iterator26()).done;) { - var anchor = _step26.value; - // ensure that the anchor has an id and is not disabled - if (!anchor.hash || isDisabled(anchor)) { - continue; - } - var observableSection = SelectorEngine.findOne(anchor.hash, this._element); // ensure that the observableSection exists & is visible - if (isVisible(observableSection)) { - this._targetLinks.set(anchor.hash, anchor); - this._observableSections.set(anchor.hash, observableSection); - } - } + _proto14._getOffsetHeight = function _getOffsetHeight() { + return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height; }; - _proto17._process = function _process(target) { - if (this._activeTarget === target) { + _proto14._process = function _process() { + var scrollTop = this._getScrollTop() + this._config.offset; + var scrollHeight = this._getScrollHeight(); + var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight(); + if (this._scrollHeight !== scrollHeight) { + this.refresh(); + } + if (scrollTop >= maxScroll) { + var target = this._targets[this._targets.length - 1]; + if (this._activeTarget !== target) { + this._activate(target); + } return; } - this._clearActiveClass(this._config.target); - this._activeTarget = target; - target.classList.add(CLASS_NAME_ACTIVE$1); - this._activateParents(target); - EventHandler.trigger(this._element, EVENT_ACTIVATE, { - relatedTarget: target - }); - }; - _proto17._activateParents = function _activateParents(target) { - // Activate dropdown parents - if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) { - SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1); + if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) { + this._activeTarget = null; + this._clear(); return; } - for (var _iterator27 = _createForOfIteratorHelperLoose(SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)), _step27; !(_step27 = _iterator27()).done;) { - var listGroup = _step27.value; - // Set triggered links parents as active - // With both