j1-template 2021.3.2 → 2022.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (276) hide show
  1. checksums.yaml +4 -4
  2. data/_includes/themes/j1/blocks/ads/ad.html +14 -14
  3. data/_includes/themes/j1/layouts/content_generator_news_panel_posts.html +4 -4
  4. data/_includes/themes/j1/layouts/content_generator_post.html +4 -4
  5. data/_includes/themes/j1/modules/connectors/analytic/google-analytics.html +3 -13
  6. data/_includes/themes/j1/modules/connectors/comment/hyvor.html +4 -5
  7. data/_includes/themes/j1/modules/navigator/generator.html +9 -11
  8. data/_includes/themes/j1/modules/search/docsearch.html +1 -1
  9. data/_includes/themes/j1/procedures/global/create_bs_button.proc +5 -5
  10. data/_includes/themes/j1/procedures/global/create_word_cloud.proc +5 -3
  11. data/_includes/themes/j1/procedures/layouts/module_writer.proc +1 -1
  12. data/_includes/themes/j1/procedures/posts/collate_timeline.proc +3 -3
  13. data/_includes/themes/j1/procedures/posts/create_series_header.proc +1 -1
  14. data/_layouts/default.html +66 -22
  15. data/_layouts/home.html +1 -1
  16. data/_layouts/raw.html +2 -1
  17. data/assets/data/article_navigator/index.html +1 -1
  18. data/assets/data/authclient.html +11 -11
  19. data/assets/data/banner.html +7 -25
  20. data/assets/data/cookieconsent.html +20 -20
  21. data/assets/data/{fam.html → fab.html} +42 -24
  22. data/assets/data/gallery_customizer.html +6 -6
  23. data/assets/data/menu.html +13 -13
  24. data/assets/data/mmenu.html +2 -2
  25. data/assets/data/panel.html +17 -23
  26. data/assets/data/private.json +1 -1
  27. data/assets/data/quicklinks.html +6 -7
  28. data/assets/data/rtext_resizer.html +1 -1
  29. data/assets/data/themes.bootswatch.json +75 -0
  30. data/assets/data/themes.json +6 -6
  31. data/assets/data/translator.html +23 -23
  32. data/assets/error_pages/HTTP445.html +110 -0
  33. data/assets/themes/j1/adapter/js/bmd.js +1 -1
  34. data/assets/themes/j1/adapter/js/clipboard.js +1 -1
  35. data/assets/themes/j1/adapter/js/cookieConsent.js +19 -10
  36. data/assets/themes/j1/adapter/js/{fam.js → fab.js} +121 -116
  37. data/assets/themes/j1/adapter/js/j1.js +258 -190
  38. data/assets/themes/j1/adapter/js/mmenu.js +18 -24
  39. data/assets/themes/j1/adapter/js/navigator.js +6 -4
  40. data/assets/themes/j1/adapter/js/themer.js +13 -4
  41. data/assets/themes/j1/adapter/js/toccer.js +37 -76
  42. data/assets/themes/j1/adapter/js/translator.js +10 -2
  43. data/assets/themes/j1/core/country-flags/css/theme/uno.min.css +15 -0
  44. data/assets/themes/j1/core/css/icon-fonts/mdi.css +22307 -0
  45. data/assets/themes/j1/core/css/icon-fonts/mdi.min.css +1 -0
  46. data/assets/themes/j1/core/css/icon-fonts/mdil.css +1222 -0
  47. data/assets/themes/j1/core/css/icon-fonts/mdil.min.css +1 -0
  48. data/assets/themes/j1/core/css/icon-fonts/twemoji.css +4 -0
  49. data/assets/themes/j1/core/css/themes/bootstrap/bootstrap.css +5341 -4730
  50. data/assets/themes/j1/core/css/themes/bootstrap/bootstrap.min.css +3 -1
  51. data/assets/themes/j1/core/css/themes/theme_vapor/bootstrap.css +8301 -0
  52. data/assets/themes/j1/core/css/themes/theme_vapor/bootstrap.min.css +3 -0
  53. data/assets/themes/j1/core/css/themes/{uno-dark → unodark}/bootstrap.css +5284 -4646
  54. data/assets/themes/j1/core/css/themes/unodark/bootstrap.min.css +3 -0
  55. data/assets/themes/j1/core/css/themes/{uno-light → unolight}/bootstrap.css +12188 -12734
  56. data/assets/themes/j1/core/css/themes/unolight/bootstrap.min.css +23 -0
  57. data/assets/themes/j1/core/css/vendor.css +2 -28
  58. data/assets/themes/j1/core/css/vendor.min.css +1 -1
  59. data/assets/themes/j1/core/js/template.js +111 -29
  60. data/assets/themes/j1/core/js/template.min.js +1 -1
  61. data/assets/themes/j1/core/js/template.min.js.map +1 -1
  62. data/assets/themes/j1/modules/bmd/js/bmd.js +2280 -0
  63. data/assets/themes/j1/modules/bmd/js/bmd.min.js +20 -0
  64. data/assets/themes/j1/modules/bootstrap/js/bootstrap.js +5072 -0
  65. data/assets/themes/j1/modules/bootstrap/js/bootstrap.min.js +7 -0
  66. data/assets/themes/j1/modules/bootstrap/js/bootstrap.min.js.map +1 -0
  67. data/assets/themes/j1/modules/cookieConsent/js/cookieConsent.js +19 -17
  68. data/assets/themes/j1/modules/cookieConsent/js/cookieConsent.min.js +1 -1
  69. data/assets/themes/j1/modules/cryptoJS/js/aes.js +35 -0
  70. data/assets/themes/j1/modules/cryptoJS/js/aes.min.js +35 -0
  71. data/assets/themes/j1/modules/cryptoJS/js/hmac-md5.js +21 -0
  72. data/assets/themes/j1/modules/cryptoJS/js/hmac-ripemd160.js +31 -0
  73. data/assets/themes/j1/modules/cryptoJS/js/hmac-sha1.js +17 -0
  74. data/assets/themes/j1/modules/cryptoJS/js/hmac-sha224.js +19 -0
  75. data/assets/themes/j1/modules/cryptoJS/js/hmac-sha256.js +18 -0
  76. data/assets/themes/j1/modules/cryptoJS/js/hmac-sha3.js +21 -0
  77. data/assets/themes/j1/modules/cryptoJS/js/hmac-sha384.js +27 -0
  78. data/assets/themes/j1/modules/cryptoJS/js/hmac-sha512.js +25 -0
  79. data/assets/themes/j1/modules/cryptoJS/js/md5.js +19 -0
  80. data/assets/themes/j1/modules/cryptoJS/js/pbkdf2.js +19 -0
  81. data/assets/themes/j1/modules/cryptoJS/js/rabbit-legacy.js +36 -0
  82. data/assets/themes/j1/modules/cryptoJS/js/rabbit.js +36 -0
  83. data/assets/themes/j1/modules/cryptoJS/js/rc4.js +33 -0
  84. data/assets/themes/j1/modules/cryptoJS/js/ripemd160.js +29 -0
  85. data/assets/themes/j1/modules/cryptoJS/js/sha1.js +15 -0
  86. data/assets/themes/j1/modules/cryptoJS/js/sha224.js +17 -0
  87. data/assets/themes/j1/modules/cryptoJS/js/sha256.js +16 -0
  88. data/assets/themes/j1/modules/cryptoJS/js/sha3.js +19 -0
  89. data/assets/themes/j1/modules/cryptoJS/js/sha384.js +25 -0
  90. data/assets/themes/j1/modules/cryptoJS/js/sha512.js +23 -0
  91. data/assets/themes/j1/modules/cryptoJS/js/tripledes.js +51 -0
  92. data/assets/themes/j1/modules/deeplAPI/js/deeplAPI.2.js +460 -0
  93. data/assets/themes/j1/modules/deeplAPI/js/deeplAPI.js +379 -353
  94. data/assets/themes/j1/modules/deeplAPI/js/deeplAPI.min.js +1 -1
  95. data/assets/themes/j1/modules/{fam/css/theme/uno/fam.css → fab/css/theme/uno/fab.css} +32 -28
  96. data/assets/themes/j1/modules/{fam/css/theme/uno/fam.min.css → fab/css/theme/uno/fab.min.css} +3 -3
  97. data/assets/themes/j1/modules/{materialize → fab}/js/cash.js +20 -2
  98. data/assets/themes/j1/modules/{fam/js/fam.js → fab/js/fab.js} +4 -2
  99. data/assets/themes/j1/modules/gtag-opt-in/js/gtag-opt-in.js +107 -0
  100. data/assets/themes/j1/modules/{util/js/gtag-opt-in.js → gtag-opt-in/js/gtag-opt-in.min.js} +15 -1
  101. data/assets/themes/j1/modules/lightGallery/js/modules/lg-thumbnail.min.js +4 -1
  102. data/assets/themes/j1/modules/materialize/js/autocomplete.js +1 -1
  103. data/assets/themes/j1/modules/materialize/js/bin/materialize.js +12374 -0
  104. data/assets/themes/j1/modules/materialize/js/bin/materialize.min.js +6 -0
  105. data/assets/themes/j1/modules/materialize/js/global.js +1 -1
  106. data/assets/themes/j1/modules/materialize/js/select.js +1 -1
  107. data/assets/themes/j1/modules/materialize/js/{tapTarget.js → tapTarget.cash.js} +1 -1
  108. data/assets/themes/j1/modules/materialize/js/tapTarget.jQuery.js +187 -0
  109. data/assets/themes/j1/modules/msDropdown/css/themes/uno/msDropdown.css +278 -0
  110. data/assets/themes/j1/modules/popper/js/popper.js +1670 -2346
  111. data/assets/themes/j1/modules/popper/js/popper.min.js +6 -4
  112. data/assets/themes/j1/modules/popper/js/popper.min.js.map +1 -1
  113. data/assets/themes/j1/modules/scroller/js/scroller.js +6 -6
  114. data/assets/themes/j1/modules/scroller/js/scroller.min.js +1 -1
  115. data/assets/themes/j1/modules/translator/js/translator.js +6 -2
  116. data/assets/themes/j1/modules/translator/js/translator.min.js +1 -1
  117. data/assets/themes/j1/modules/twemoji/js/picker/twemoji-picker.js +2 -2
  118. data/assets/themes/j1/modules/twemoji/js/picker/twemoji-picker.min.js +1 -1
  119. data/exe/j1 +6 -7
  120. data/lib/j1/commands/generate.rb +15 -16
  121. data/lib/j1/version.rb +1 -1
  122. data/lib/starter_web/Gemfile +7 -1
  123. data/lib/starter_web/_config.yml +21 -24
  124. data/lib/starter_web/_data/_defaults/j1_config.yml +1 -1
  125. data/lib/starter_web/_data/_defaults/private.yml +3 -2
  126. data/lib/starter_web/_data/_defaults/resources.yml +1 -1
  127. data/lib/starter_web/_data/blocks/banner.yml +71 -68
  128. data/lib/starter_web/_data/blocks/defaults/banner.yml +5 -5
  129. data/lib/starter_web/_data/blocks/defaults/panel.yml +3 -3
  130. data/lib/starter_web/_data/blocks/panel.yml +171 -73
  131. data/lib/starter_web/_data/builder/defaults/_blog_navigator.yml +396 -0
  132. data/lib/starter_web/_data/builder/defaults/blog_navigator.yml +77 -64
  133. data/lib/starter_web/_data/j1_config.yml +3 -3
  134. data/lib/starter_web/_data/layouts/article_navigator.yml +1 -1
  135. data/lib/starter_web/_data/layouts/blog_archive.yml +1 -1
  136. data/lib/starter_web/_data/layouts/collection.yml +1 -1
  137. data/lib/starter_web/_data/layouts/default.yml +1 -1
  138. data/lib/starter_web/_data/layouts/home.yml +6 -26
  139. data/lib/starter_web/_data/layouts/news_panel_posts.yml +1 -1
  140. data/lib/starter_web/_data/layouts/page.yml +1 -1
  141. data/lib/starter_web/_data/layouts/post.yml +1 -1
  142. data/lib/starter_web/_data/modules/defaults/attics.yml +1 -1
  143. data/lib/starter_web/_data/modules/defaults/{fam.yml → fab.yml} +8 -7
  144. data/lib/starter_web/_data/modules/defaults/navigator.yml +3 -0
  145. data/lib/starter_web/_data/modules/defaults/rtable.yml +2 -1
  146. data/lib/starter_web/_data/modules/defaults/scoller.yml +33 -0
  147. data/lib/starter_web/_data/modules/defaults/themer.yml +1 -1
  148. data/lib/starter_web/_data/modules/defaults/toccer.yml +5 -4
  149. data/lib/starter_web/_data/modules/{fam.yml → fab.yml} +31 -31
  150. data/lib/starter_web/_data/modules/scroller.yml +2 -2
  151. data/lib/starter_web/_data/modules/toccer.yml +3 -5
  152. data/lib/starter_web/_data/modules/translator.yml +3 -3
  153. data/lib/starter_web/_data/private.yml +3 -2
  154. data/lib/starter_web/_data/resources.yml +72 -33
  155. data/lib/starter_web/_includes/attributes.asciidoc +121 -122
  156. data/lib/starter_web/_plugins/encodeBase64.rb +46 -0
  157. data/lib/starter_web/_plugins/encryptAES.rb +53 -0
  158. data/lib/starter_web/_plugins/filters.rb +2 -1
  159. data/lib/starter_web/_plugins/lunr_index.rb +1 -1
  160. data/lib/starter_web/_plugins/minifyJSON.rb +2 -2
  161. data/lib/starter_web/assets/images/pages/roundtrip/500_themes/themes-menu-1280x800.jpg +0 -0
  162. data/lib/starter_web/collections/posts/public/featured/_posts/0000-00-00-welcome-to-j1.adoc.erb +1 -4
  163. data/lib/starter_web/collections/posts/public/featured/_posts/2021-01-01-about-cookies.adoc +2 -2
  164. data/lib/starter_web/collections/posts/public/featured/_posts/2021-02-01-site-generators.adoc +2 -2
  165. data/lib/starter_web/collections/posts/public/featured/_posts/2021-03-03-about-j1.adoc +2 -2
  166. data/lib/starter_web/collections/posts/public/series/_posts/2020-01-01-post-wiki-series.adoc +1 -1
  167. data/lib/starter_web/collections/posts/public/series/_posts/2020-01-02-post-wiki-series.adoc +1 -1
  168. data/lib/starter_web/collections/posts/public/series/_posts/2020-01-03-post-wiki-series.adoc +2 -2
  169. data/lib/starter_web/index.html +1 -1
  170. data/lib/starter_web/package.json +1 -1
  171. data/lib/starter_web/pages/_test_pages/100_side-bar-tester.adoc +244 -0
  172. data/lib/starter_web/pages/_test_pages/_includes/attributes.asciidoc +110 -0
  173. data/lib/starter_web/pages/_test_pages/_includes/documents/100_gistblock.asciidoc +28 -0
  174. data/lib/starter_web/pages/_test_pages/_includes/documents/410_bottom_info.asciidoc +14 -0
  175. data/lib/starter_web/pages/_test_pages/_includes/documents/410_bottom_left_warning.asciidoc +11 -0
  176. data/lib/starter_web/pages/_test_pages/_includes/documents/410_bottom_right_danger.asciidoc +11 -0
  177. data/lib/starter_web/pages/_test_pages/_includes/documents/410_central_success.asciidoc +11 -0
  178. data/lib/starter_web/pages/_test_pages/_includes/documents/410_full_height_left_info.asciidoc +11 -0
  179. data/lib/starter_web/pages/_test_pages/_includes/documents/410_full_height_right_success.asciidoc +11 -0
  180. data/lib/starter_web/pages/_test_pages/_includes/documents/410_table_bs_modal_examples.asciidoc +47 -0
  181. data/lib/starter_web/pages/_test_pages/_includes/documents/410_top_info.asciidoc +11 -0
  182. data/lib/starter_web/pages/_test_pages/_includes/documents/410_top_left_info.asciidoc +11 -0
  183. data/lib/starter_web/pages/_test_pages/_includes/documents/410_top_right_success.asciidoc +11 -0
  184. data/lib/starter_web/pages/_test_pages/_includes/documents/419_advanced_modals_demo.asciidoc +337 -0
  185. data/lib/starter_web/pages/_test_pages/_includes/documents/tables/bs_modal_examples.asciidoc +47 -0
  186. data/lib/starter_web/pages/_test_pages/accordion-01-tester.adoc +220 -0
  187. data/lib/starter_web/pages/_test_pages/accordion-02-tester.adoc +177 -0
  188. data/lib/starter_web/pages/_test_pages/accordion-03-tester.adoc +148 -0
  189. data/lib/starter_web/pages/_test_pages/attribute-changes-01-tester.adoc +226 -0
  190. data/lib/starter_web/pages/_test_pages/backdrop-tester.adoc +109 -0
  191. data/lib/starter_web/pages/_test_pages/button-tester-1.adoc +127 -0
  192. data/lib/starter_web/pages/_test_pages/card-tester.adoc +128 -0
  193. data/lib/starter_web/pages/_test_pages/cookieConsent.adoc +96 -0
  194. data/lib/starter_web/pages/_test_pages/deepl.0.adoc +258 -0
  195. data/lib/starter_web/pages/_test_pages/deepl.adoc +204 -0
  196. data/lib/starter_web/pages/_test_pages/desandro-button.adoc +171 -0
  197. data/lib/starter_web/pages/_test_pages/desandro.adoc +147 -0
  198. data/lib/starter_web/pages/_test_pages/flipcard-1-tester.adoc +308 -0
  199. data/lib/starter_web/pages/_test_pages/formular-01-tester.adoc +167 -0
  200. data/lib/starter_web/pages/_test_pages/formular-02-tester.adoc +727 -0
  201. data/lib/starter_web/pages/_test_pages/google-translate-tester.0.adoc +113 -0
  202. data/lib/starter_web/pages/_test_pages/google-translate-tester.1.adoc +233 -0
  203. data/lib/starter_web/pages/_test_pages/google-translate-tester.3.adoc +149 -0
  204. data/lib/starter_web/pages/_test_pages/google-translate-tester.4.adoc +239 -0
  205. data/lib/starter_web/pages/_test_pages/infinite-scroll-tester-2.adoc +183 -0
  206. data/lib/starter_web/pages/_test_pages/infinite-scroll-tester-3.adoc +235 -0
  207. data/lib/starter_web/pages/_test_pages/infinite-scroll-tester-4.adoc +222 -0
  208. data/lib/starter_web/pages/_test_pages/infinite-scroll-tester-5.adoc +119 -0
  209. data/lib/starter_web/pages/_test_pages/infinite-scroll-tester.1.adoc +236 -0
  210. data/lib/starter_web/pages/_test_pages/infinite-scroll-tester.adoc +225 -0
  211. data/lib/starter_web/pages/_test_pages/list-group-tester.adoc +265 -0
  212. data/lib/starter_web/pages/_test_pages/tictok.adoc +127 -0
  213. data/lib/starter_web/pages/public/about/about_site.adoc +1 -1
  214. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/000_intro.adoc +1 -1
  215. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/100_converter.adoc +1 -1
  216. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/200_themes.adoc +1 -1
  217. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/documentation.a2p +1 -1
  218. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/documentation.adoc +2 -2
  219. data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/multi.adoc +2 -2
  220. data/lib/starter_web/pages/public/asciidoc_skeletons/simple-document/simple.adoc +2 -2
  221. data/lib/starter_web/pages/public/blog/navigator/archive/categoryview.html +5 -5
  222. data/lib/starter_web/pages/public/blog/navigator/archive/dateview.html +4 -4
  223. data/lib/starter_web/pages/public/blog/navigator/archive/tagview.html +4 -3
  224. data/lib/starter_web/pages/public/blog/navigator/archive.html +4 -4
  225. data/lib/starter_web/pages/public/blog/navigator/index.html +1 -1
  226. data/lib/starter_web/pages/public/learn/quickstart.adoc +3 -3
  227. data/lib/starter_web/pages/public/learn/roundtrip/100_present_images.adoc +2 -2
  228. data/lib/starter_web/pages/public/learn/roundtrip/100_present_videos.adoc +2 -2
  229. data/lib/starter_web/pages/public/learn/roundtrip/200_typography.adoc +6 -7
  230. data/lib/starter_web/pages/public/learn/roundtrip/300_icon_fonts.adoc +2 -2
  231. data/lib/starter_web/pages/public/learn/roundtrip/400_asciidoc_extensions.adoc +2 -2
  232. data/lib/starter_web/pages/public/learn/roundtrip/410_bs_modals_extentions.adoc +3 -3
  233. data/lib/starter_web/pages/public/learn/roundtrip/420_responsive_tables_extensions.adoc +2 -2
  234. data/lib/starter_web/pages/public/learn/roundtrip/500_themes.adoc +4 -4
  235. data/lib/starter_web/pages/public/learn/roundtrip/600_quicksearch.adoc +13 -11
  236. data/lib/starter_web/pages/public/learn/roundtrip/_includes/attributes.asciidoc +1 -1
  237. data/lib/starter_web/pages/public/learn/roundtrip/_includes/documents/410_bottom_info.asciidoc +3 -3
  238. data/lib/starter_web/pages/public/learn/roundtrip/_includes/documents/410_bottom_left_warning.asciidoc +1 -1
  239. data/lib/starter_web/pages/public/learn/roundtrip/_includes/documents/410_bottom_right_danger.asciidoc +1 -1
  240. data/lib/starter_web/pages/public/learn/roundtrip/_includes/documents/410_central_success.asciidoc +1 -1
  241. data/lib/starter_web/pages/public/learn/roundtrip/_includes/documents/410_full_height_left_info.asciidoc +1 -1
  242. data/lib/starter_web/pages/public/learn/roundtrip/_includes/documents/410_full_height_right_success.asciidoc +1 -1
  243. data/lib/starter_web/pages/public/learn/roundtrip/_includes/documents/410_top_info.asciidoc +1 -1
  244. data/lib/starter_web/pages/public/learn/roundtrip/_includes/documents/410_top_left_info.asciidoc +1 -1
  245. data/lib/starter_web/pages/public/learn/roundtrip/_includes/documents/410_top_right_success.asciidoc +1 -1
  246. data/lib/starter_web/pages/public/learn/roundtrip/_includes/documents/419_advanced_modals_demo.asciidoc +51 -51
  247. data/lib/starter_web/pages/public/learn/where_to_go.adoc +3 -3
  248. data/lib/starter_web/pages/public/legal/de/100_copyright.adoc +3 -3
  249. data/lib/starter_web/pages/public/legal/de/100_impress.adoc +3 -3
  250. data/lib/starter_web/pages/public/legal/de/300_privacy.adoc +7 -7
  251. data/lib/starter_web/pages/public/legal/de/400_comment_policy.adoc +3 -3
  252. data/lib/starter_web/pages/public/legal/en/100_copyright.adoc +3 -3
  253. data/lib/starter_web/pages/public/legal/en/200_impress.adoc +3 -3
  254. data/lib/starter_web/pages/public/legal/en/300_privacy.adoc +6 -7
  255. data/lib/starter_web/pages/public/legal/en/400_comment_policy.adoc +3 -3
  256. data/lib/starter_web/pages/public/manuals/dropdown-help.adoc +1 -1
  257. data/lib/starter_web/pages/public/panels/intro_panel/_includes/attributes.asciidoc +55 -0
  258. data/lib/starter_web/pages/public/panels/intro_panel/panel.adoc +53 -5
  259. data/lib/starter_web/pages/public/previewer/preview_bootstrap_theme.adoc +1688 -686
  260. data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
  261. data/lib/starter_web/utilsrv/package.json +1 -1
  262. metadata +107 -29
  263. data/assets/themes/j1/core/css/themes/uno-dark/bootstrap.min.css +0 -1
  264. data/assets/themes/j1/core/css/themes/uno-light/bootstrap.min.css +0 -23
  265. data/assets/themes/j1/modules/bmd/css/bootstrap-material-design.css +0 -12177
  266. data/assets/themes/j1/modules/bmd/css/bootstrap-material-design.min.css +0 -8
  267. data/assets/themes/j1/modules/bmd/js/bootstrap-material-design.full.js +0 -6930
  268. data/assets/themes/j1/modules/bmd/js/bootstrap-material-design.js +0 -6936
  269. data/assets/themes/j1/modules/bmd/js/bootstrap-material-design.js.map +0 -1
  270. data/assets/themes/j1/modules/bmd/js/bootstrap-material-design.min.js +0 -1
  271. data/assets/themes/j1/modules/popper/js/popper.js.map +0 -1
  272. data/assets/themes/j1/modules/util/js/domready.js +0 -146
  273. data/lib/j1/commands/help.rb +0 -32
  274. data/lib/j1/commands/module.rb +0 -69
  275. data/lib/starter_web/_data/blocks/defaults/panel.1.yml +0 -256
  276. data/lib/starter_web/_data/blocks/defaults/panel.2.yml +0 -250
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../js/src/util/index.js","../../js/src/dom/event-handler.js","../../js/src/dom/data.js","../../js/src/base-component.js","../../js/src/util/component-functions.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/dom/manipulator.js","../../js/src/dom/selector-engine.js","../../js/src/util/swipe.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/dropdown.js","../../js/src/util/scrollbar.js","../../js/src/util/backdrop.js","../../js/src/util/focustrap.js","../../js/src/modal.js","../../js/src/offcanvas.js","../../js/src/util/sanitizer.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/index.umd.js"],"names":["TRANSITION_END","getSelector","element","selector","getAttribute","hrefAttr","includes","startsWith","split","trim","getSelectorFromElement","document","querySelector","getElementFromSelector","triggerTransitionEnd","dispatchEvent","Event","isElement","obj","jquery","nodeType","getElement","length","typeCheckConfig","componentName","config","configTypes","property","Object","keys","expectedTypes","value","valueType","prototype","toString","call","match","toLowerCase","RegExp","test","TypeError","toUpperCase","isVisible","getClientRects","getComputedStyle","getPropertyValue","isDisabled","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","parentNode","noop","reflow","offsetHeight","getjQuery","jQuery","window","body","DOMContentLoadedCallbacks","isRTL","dir","defineJQueryPlugin","plugin","callback","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","readyState","addEventListener","push","execute","executeAfterTransition","transitionElement","waitForTransition","emulatedDuration","transitionDuration","transitionDelay","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","getTransitionDurationFromElement","called","handler","target","removeEventListener","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","index","indexOf","listLength","Math","max","min","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","customEventsRegex","nativeEvents","Set","getUidEvent","uid","getEvent","findHandler","events","delegationSelector","uidEventList","event","originalHandler","normalizeParams","originalTypeEvent","delegationFn","delegation","typeEvent","getTypeEvent","has","addHandler","oneOff","wrapFn","relatedTarget","delegateTarget","this","handlers","previousFn","replace","domElements","querySelectorAll","i","EventHandler","off","type","apply","bootstrapDelegationHandler","bootstrapHandler","removeHandler","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","on","one","inNamespace","isNamespace","elementEvent","slice","keyHandlers","trigger","args","isNative","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","evt","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","createEvent","initEvent","CustomEvent","cancelable","key","defineProperty","get","preventDefault","elementMap","Map","Data","set","instance","instanceMap","size","console","error","Array","from","remove","delete","BaseComponent","constructor","_element","DATA_KEY","dispose","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","static","getInstance","VERSION","Error","enableDismissTrigger","component","method","clickEvent","tagName","closest","getOrCreateInstance","Alert","close","_destroyElement","each","data","undefined","SELECTOR_DATA_TOGGLE","Button","toggle","setAttribute","normalizeData","val","normalizeDataKey","chr","button","Manipulator","setDataAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","bsKeys","dataset","filter","pureKey","charAt","getDataAttribute","offset","rect","getBoundingClientRect","top","pageYOffset","left","pageXOffset","position","offsetTop","offsetLeft","SelectorEngine","find","concat","Element","findOne","children","child","matches","parents","ancestor","prev","previous","previousElementSibling","next","nextElementSibling","focusableChildren","focusables","map","join","el","Default","leftCallback","rightCallback","endCallback","DefaultType","Swipe","isSupported","_config","_getConfig","_deltaX","_supportPointerEvents","PointerEvent","_initEvents","_start","_eventIsPointerPenTouch","clientX","touches","_end","_handleSwipe","_move","absDeltaX","abs","direction","add","pointerType","navigator","maxTouchPoints","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLID","CLASS_NAME_ACTIVE","SELECTOR_ACTIVE_ITEM","KEY_TO_DIRECTION","ArrowLeft","ArrowRight","interval","keyboard","slide","pause","wrap","touch","Carousel","super","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","_swipeHelper","_indicatorsElement","_addEventListeners","_slide","nextWhenVisible","hidden","cycle","clearInterval","_updateInterval","setInterval","visibilityState","bind","to","activeIndex","_getItemIndex","order","_keydown","_addTouchEventListeners","itemImg","swipeConfig","clearTimeout","_getItemByOrder","isNext","_triggerSlideEvent","eventDirectionName","targetIndex","fromIndex","_setActiveIndicatorElement","activeIndicator","indicators","indicator","parseInt","elementInterval","defaultInterval","directionOrOrder","_directionToOrder","activeElementIndex","nextElement","nextElementIndex","isCycling","directionalClassName","orderClassName","_orderToDirection","triggerSlidEvent","completeCallBack","action","ride","carouselInterface","slideIndex","dataApiClickHandler","carousels","carousel","CLASS_NAME_SHOW","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","parent","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElem","_initializeChildren","_addAriaAndCollapsedClass","_isShown","hide","show","activeChildren","_getFirstLevelChildren","activeInstance","dimension","_getDimension","style","scrollSize","selected","triggerArray","isOpen","selectorElements","ESCAPE_KEY","SPACE_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","REGEXP_KEYDOWN","EVENT_CLICK_DATA_API","EVENT_KEYDOWN_DATA_API","SELECTOR_MENU","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","boundary","reference","display","popperConfig","autoClose","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","getParentFromElement","_createPopper","focus","_completeHide","destroy","update","Popper","referenceElement","_getPopperConfig","isDisplayStatic","modifiers","modifier","enabled","createPopper","_getPlacement","parentDropdown","isEnd","_getOffset","popperData","defaultBsPopperConfig","placement","options","_selectMenuItem","items","toggles","context","composedPath","isMenuTarget","isActive","stopPropagation","getToggleButton","clearMenus","dataApiKeydownHandler","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","ScrollBarHelper","getWidth","documentWidth","clientWidth","innerWidth","width","_disableOverFlow","_setElementAttributes","calculatedValue","reset","_resetElementAttributes","isOverflowing","_saveInitialAttribute","overflow","styleProp","scrollbarWidth","_applyManipulationCallback","actualValue","removeProperty","callBack","sel","EVENT_MOUSEDOWN","className","rootElement","clickCallback","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","backdrop","createElement","append","TAB_NAV_BACKWARD","trapElement","autofocus","FocusTrap","_isActive","_lastTabNavDirection","activate","_handleFocusin","_handleKeydown","deactivate","elements","shiftKey","EVENT_HIDDEN","EVENT_SHOW","EVENT_RESIZE","EVENT_CLICK_DISMISS","EVENT_KEYDOWN_DISMISS","EVENT_MOUSEDOWN_DISMISS","CLASS_NAME_OPEN","CLASS_NAME_STATIC","Modal","_dialog","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","_ignoreBackdropClick","_scrollBar","_isAnimated","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","_hideModal","htmlElement","handleUpdate","modalBody","scrollTop","_triggerBackdropTransition","_resetAdjustments","currentTarget","scrollHeight","isModalOverflowing","clientHeight","overflowY","isBodyOverflowing","paddingLeft","paddingRight","showEvent","allReadyOpen","OPEN_SELECTOR","scroll","Offcanvas","visibility","blur","alreadyOpen","uriAttributes","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","attribute","allowedAttributeList","attributeName","nodeName","nodeValue","attributeRegex","some","regex","sanitizeHtml","unsafeHtml","allowList","sanitizeFn","createdDocument","DOMParser","parseFromString","elementName","attributeList","allowedAttributes","innerHTML","DISALLOWED_ATTRIBUTES","CLASS_NAME_FADE","HOVER_STATE_SHOW","HOVER_STATE_OUT","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","animation","template","title","delay","html","container","fallbackPlacements","customClass","sanitize","a","area","b","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","_initializeOnDelegatedTarget","click","_isWithActiveTrigger","_enter","_leave","getTipElement","_hideModalHandler","_disposePopper","isWithContent","shadowRoot","isInTheDom","ownerDocument","getTitle","tipId","prefix","floor","random","getElementById","getUID","attachment","_getAttachment","_addAttachmentClass","_resolvePossibleFunction","prevHoverState","_cleanTipClass","setContent","_sanitizeAndSetContent","content","templateElement","setElementContent","textContent","updateAttachment","_getDelegateConfig","phase","_handlePopperPlacementChange","onFirstUpdate","_getBasicClassPrefix","triggers","eventIn","eventOut","_fixTitle","originalTitleType","dataAttributes","dataAttr","basicClassPrefixRegex","tabClass","tClass","token","state","popper","Popover","_getContent","SELECTOR_LINK_ITEMS","METHOD_POSITION","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targets","targetSelector","targetBCR","height","item","sort","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","queries","link","listGroup","navItem","activeNodes","node","spy","SELECTOR_ACTIVE","SELECTOR_ACTIVE_UL","Tab","listElement","itemSelector","hideEvent","complete","active","isTransitioning","_transitionComplete","dropdownChild","dropdownElement","dropdown","CLASS_NAME_HIDE","CLASS_NAME_SHOWING","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","_onInteraction","isInteracting"],"mappings":"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","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nconst toType = obj => {\n if (obj === null || obj === undefined) {\n return `${obj}`\n }\n\n return Object.prototype.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID)\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target')\n\n if (!selector || selector === '#') {\n let hrefAttr = element.getAttribute('href')\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttr || (!hrefAttr.includes('#') && !hrefAttr.startsWith('.'))) {\n return null\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {\n hrefAttr = `#${hrefAttr.split('#')[1]}`\n }\n\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null\n }\n\n return selector\n}\n\nconst getSelectorFromElement = element => {\n const selector = getSelector(element)\n\n if (selector) {\n return document.querySelector(selector) ? selector : null\n }\n\n return null\n}\n\nconst getElementFromSelector = element => {\n const selector = getSelector(element)\n\n return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration)\n const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = obj => {\n if (!obj || typeof obj !== 'object') {\n return false\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0]\n }\n\n return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n // it's a jQuery object or a node element\n if (isElement(obj)) {\n return obj.jquery ? obj[0] : obj\n }\n\n if (typeof obj === 'string' && obj.length > 0) {\n return document.querySelector(obj)\n }\n\n return null\n}\n\nconst typeCheckConfig = (componentName, config, configTypes) => {\n for (const property of Object.keys(configTypes)) {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && isElement(value) ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(\n `${componentName.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n }\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n}\n\nconst isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true\n }\n\n if (element.classList.contains('disabled')) {\n return true\n }\n\n if (typeof element.disabled !== 'undefined') {\n return element.disabled\n }\n\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n element.offsetHeight // eslint-disable-line no-unused-expressions\n}\n\nconst getjQuery = () => {\n const { jQuery } = window\n\n if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return jQuery\n }\n\n return null\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n for (const callback of DOMContentLoadedCallbacks) {\n callback()\n }\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\n const JQUERY_NO_CONFLICT = $.fn[name]\n $.fn[name] = plugin.jQueryInterface\n $.fn[name].Constructor = plugin\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT\n return plugin.jQueryInterface\n }\n }\n })\n}\n\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n if (index === -1) {\n return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n }\n\n const listLength = list.length\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n defineJQueryPlugin,\n execute,\n executeAfterTransition,\n findShadowRoot,\n getElement,\n getElementFromSelector,\n getjQuery,\n getNextActiveElement,\n getSelectorFromElement,\n getTransitionDurationFromElement,\n getUID,\n isDisabled,\n isElement,\n isRTL,\n isVisible,\n noop,\n onDOMContentLoaded,\n reflow,\n triggerTransitionEnd,\n typeCheckConfig\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index'\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n}\nconst customEventsRegex = /^(mouseenter|mouseleave)/i\nconst nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll'\n])\n\n/**\n * Private methods\n */\n\nfunction getUidEvent(element, uid) {\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getEvent(element) {\n const uid = getUidEvent(element)\n\n element.uidEvent = uid\n eventRegistry[uid] = eventRegistry[uid] || {}\n\n return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n event.delegateTarget = element\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(element, [event])\n }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector)\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n for (let i = domElements.length; i--;) {\n if (domElements[i] === target) {\n event.delegateTarget = target\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, selector, fn)\n }\n\n return fn.apply(target, [event])\n }\n }\n }\n\n // To please ESLint\n return null\n }\n}\n\nfunction findHandler(events, handler, delegationSelector = null) {\n const uidEventList = Object.keys(events)\n\n for (const uidEvent of uidEventList) {\n const event = events[uidEvent]\n\n if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {\n return event\n }\n }\n\n return null\n}\n\nfunction normalizeParams(originalTypeEvent, handler, delegationFn) {\n const delegation = typeof handler === 'string'\n const originalHandler = delegation ? delegationFn : handler\n let typeEvent = getTypeEvent(originalTypeEvent)\n const isNative = nativeEvents.has(typeEvent)\n\n if (!isNative) {\n typeEvent = originalTypeEvent\n }\n\n return [delegation, originalHandler, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n if (!handler) {\n handler = delegationFn\n delegationFn = null\n }\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (customEventsRegex.test(originalTypeEvent)) {\n const wrapFn = fn => {\n return function (event) {\n if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n return fn.call(this, event)\n }\n }\n }\n\n if (delegationFn) {\n delegationFn = wrapFn(delegationFn)\n } else {\n handler = wrapFn(handler)\n }\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const events = getEvent(element)\n const handlers = events[typeEvent] || (events[typeEvent] = {})\n const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null)\n\n if (previousFn) {\n previousFn.oneOff = previousFn.oneOff && oneOff\n\n return\n }\n\n const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''))\n const fn = delegation ?\n bootstrapDelegationHandler(element, handler, delegationFn) :\n bootstrapHandler(element, handler)\n\n fn.delegationSelector = delegation ? handler : null\n fn.originalHandler = originalHandler\n fn.oneOff = oneOff\n fn.uidEvent = uid\n handlers[uid] = fn\n\n element.addEventListener(typeEvent, fn, delegation)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n if (!fn) {\n return\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {}\n\n for (const handlerKey of Object.keys(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n const event = storeElementEvent[handlerKey]\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n }\n}\n\nfunction getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace(stripNameRegex, '')\n return customEvents[event] || event\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, false)\n },\n\n one(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, true)\n },\n\n off(element, originalTypeEvent, handler, delegationFn) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const inNamespace = typeEvent !== originalTypeEvent\n const events = getEvent(element)\n const isNamespace = originalTypeEvent.startsWith('.')\n\n if (typeof originalHandler !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!events || !events[typeEvent]) {\n return\n }\n\n removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null)\n return\n }\n\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n }\n }\n\n const storeElementEvent = events[typeEvent] || {}\n for (const keyHandlers of Object.keys(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n const event = storeElementEvent[keyHandlers]\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n }\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null\n }\n\n const $ = getjQuery()\n const typeEvent = getTypeEvent(event)\n const inNamespace = event !== typeEvent\n const isNative = nativeEvents.has(typeEvent)\n\n let jQueryEvent\n let bubbles = true\n let nativeDispatch = true\n let defaultPrevented = false\n let evt = null\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args)\n\n $(element).trigger(jQueryEvent)\n bubbles = !jQueryEvent.isPropagationStopped()\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n defaultPrevented = jQueryEvent.isDefaultPrevented()\n }\n\n if (isNative) {\n evt = document.createEvent('HTMLEvents')\n evt.initEvent(typeEvent, bubbles, true)\n } else {\n evt = new CustomEvent(event, { bubbles, cancelable: true })\n }\n\n // merge custom information in our event\n if (typeof args !== 'undefined') {\n for (const key of Object.keys(args)) {\n Object.defineProperty(evt, key, {\n get() {\n return args[key]\n }\n })\n }\n }\n\n if (defaultPrevented) {\n evt.preventDefault()\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt)\n }\n\n if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {\n jQueryEvent.preventDefault()\n }\n\n return evt\n }\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map()\n\nexport default {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map())\n }\n\n const instanceMap = elementMap.get(element)\n\n // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n return\n }\n\n instanceMap.set(key, instance)\n },\n\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null\n }\n\n return null\n },\n\n remove(element, key) {\n if (!elementMap.has(element)) {\n return\n }\n\n const instanceMap = elementMap.get(element)\n\n instanceMap.delete(key)\n\n // free up element references if there are no instances left for an element\n if (instanceMap.size === 0) {\n elementMap.delete(element)\n }\n }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data'\nimport {\n executeAfterTransition,\n getElement\n} from './util/index'\nimport EventHandler from './dom/event-handler'\n\n/**\n * Constants\n */\n\nconst VERSION = '5.1.3'\n\n/**\n * Class definition\n */\n\nclass BaseComponent {\n constructor(element) {\n element = getElement(element)\n\n if (!element) {\n return\n }\n\n this._element = element\n Data.set(this._element, this.constructor.DATA_KEY, this)\n }\n\n // Public\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY)\n EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n for (const propertyName of Object.getOwnPropertyNames(this)) {\n this[propertyName] = null\n }\n }\n\n _queueCallback(callback, element, isAnimated = true) {\n executeAfterTransition(callback, element, isAnimated)\n }\n\n // Static\n static getInstance(element) {\n return Data.get(getElement(element), this.DATA_KEY)\n }\n\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n }\n\n static get VERSION() {\n return VERSION\n }\n\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\" for each component!')\n }\n\n static get DATA_KEY() {\n return `bs.${this.NAME}`\n }\n\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`\n }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { getElementFromSelector, isDisabled } from './index'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n const clickEvent = `click.dismiss${component.EVENT_KEY}`\n const name = component.NAME\n\n EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n const target = getElementFromSelector(this) || this.closest(`.${name}`)\n const instance = component.getOrCreateInstance(target)\n\n // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n instance[method]()\n })\n}\n\nexport {\n enableDismissTrigger\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * Constants\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME\n }\n\n // Public\n close() {\n const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n if (closeEvent.defaultPrevented) {\n return\n }\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n }\n\n // Private\n _destroyElement() {\n this._element.remove()\n EventHandler.trigger(this._element, EVENT_CLOSED)\n this.dispose()\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Alert.getOrCreateInstance(this)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close')\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Alert)\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Button.getOrCreateInstance(this)\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n event.preventDefault()\n\n const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n const data = Button.getOrCreateInstance(button)\n\n data.toggle()\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Button)\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(val) {\n if (val === 'true') {\n return true\n }\n\n if (val === 'false') {\n return false\n }\n\n if (val === Number(val).toString()) {\n return Number(val)\n }\n\n if (val === '' || val === 'null') {\n return null\n }\n\n return val\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {}\n }\n\n const attributes = {}\n const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs'))\n\n for (const key of bsKeys) {\n let pureKey = key.replace(/^bs/, '')\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n attributes[pureKey] = normalizeData(element.dataset[key])\n }\n\n return attributes\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n },\n\n offset(element) {\n const rect = element.getBoundingClientRect()\n\n return {\n top: rect.top + window.pageYOffset,\n left: rect.left + window.pageXOffset\n }\n },\n\n position(element) {\n return {\n top: element.offsetTop,\n left: element.offsetLeft\n }\n }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible } from '../util/index'\n\n/**\n * Constants\n */\n\nconst NODE_TEXT = 3\n\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector)\n },\n\n children(element, selector) {\n return [].concat(...element.children).filter(child => child.matches(selector))\n },\n\n parents(element, selector) {\n const parents = []\n let ancestor = element.parentNode\n\n while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {\n if (ancestor.matches(selector)) {\n parents.push(ancestor)\n }\n\n ancestor = ancestor.parentNode\n }\n\n return parents\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous]\n }\n\n previous = previous.previousElementSibling\n }\n\n return []\n },\n\n next(element, selector) {\n let next = element.nextElementSibling\n\n while (next) {\n if (next.matches(selector)) {\n return [next]\n }\n\n next = next.nextElementSibling\n }\n\n return []\n },\n\n focusableChildren(element) {\n const focusables = [\n 'a',\n 'button',\n 'input',\n 'textarea',\n 'select',\n 'details',\n '[tabindex]',\n '[contenteditable=\"true\"]'\n ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(', ')\n\n return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { execute, typeCheckConfig } from './index'\n\n/**\n * Constants\n */\n\nconst NAME = 'swipe'\nconst EVENT_KEY = '.bs.swipe'\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n leftCallback: null,\n rightCallback: null,\n endCallback: null\n}\n\nconst DefaultType = {\n leftCallback: '(function|null)',\n rightCallback: '(function|null)',\n endCallback: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Swipe {\n constructor(element, config) {\n this._element = element\n\n if (!element || !Swipe.isSupported()) {\n return\n }\n\n this._config = this._getConfig(config)\n this._deltaX = 0\n this._supportPointerEvents = Boolean(window.PointerEvent)\n this._initEvents()\n }\n\n // Public\n dispose() {\n EventHandler.off(this._element, EVENT_KEY)\n }\n\n // Private\n _start(event) {\n if (!this._supportPointerEvents) {\n this._deltaX = event.touches[0].clientX\n\n return\n }\n\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX\n }\n }\n\n _end(event) {\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX - this._deltaX\n }\n\n this._handleSwipe()\n execute(this._config.endCallback)\n }\n\n _move(event) {\n this._deltaX = event.touches && event.touches.length > 1 ?\n 0 :\n event.touches[0].clientX - this._deltaX\n }\n\n _handleSwipe() {\n const absDeltaX = Math.abs(this._deltaX)\n\n if (absDeltaX <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltaX / this._deltaX\n\n this._deltaX = 0\n\n if (!direction) {\n return\n }\n\n execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n }\n\n _initEvents() {\n if (this._supportPointerEvents) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event))\n EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event))\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event))\n EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event))\n }\n }\n\n _getConfig(config) {\n config = {\n ...Default,\n ...(typeof config === 'object' ? config : {})\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _eventIsPointerPenTouch(event) {\n return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n }\n\n // Static\n static isSupported() {\n return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n }\n}\n\nexport default Swipe\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n getNextActiveElement,\n isRTL,\n isVisible,\n reflow,\n triggerTransitionEnd,\n typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport Swipe from './util/swipe'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_ITEM = '.active.carousel-item'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_INDICATOR = '[data-bs-target]'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst KEY_TO_DIRECTION = {\n [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst Default = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n}\n\nconst DefaultType = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._items = null\n this._interval = null\n this._activeElement = null\n this._isPaused = false\n this._isSliding = false\n this.touchTimeout = null\n this._swipeHelper = null\n\n this._config = this._getConfig(config)\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n this._addEventListeners()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n next() {\n this._slide(ORDER_NEXT)\n }\n\n nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next()\n }\n }\n\n prev() {\n this._slide(ORDER_PREV)\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {\n triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config && this._config.interval && !this._isPaused) {\n this._updateInterval()\n\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n return\n }\n\n if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const order = index > activeIndex ?\n ORDER_NEXT :\n ORDER_PREV\n\n this._slide(order, this._items[index])\n }\n\n dispose() {\n if (this._swipeHelper) {\n this._swipeHelper.dispose()\n }\n\n super.dispose()\n }\n\n // Private\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {})\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER, event => this.pause(event))\n EventHandler.on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event))\n }\n\n if (this._config.touch && Swipe.isSupported()) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n for (const itemImg of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n EventHandler.on(itemImg, EVENT_DRAG_START, event => event.preventDefault())\n }\n\n const endCallBack = () => {\n if (this._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n\n this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n }\n\n const swipeConfig = {\n leftCallback: () => this._slide(DIRECTION_LEFT),\n rightCallback: () => this._slide(DIRECTION_RIGHT),\n endCallback: endCallBack\n }\n\n this._swipeHelper = new Swipe(this._element, swipeConfig)\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n const direction = KEY_TO_DIRECTION[event.key]\n if (direction) {\n event.preventDefault()\n this._slide(direction)\n }\n }\n\n _getItemIndex(element) {\n this._items = element && element.parentNode ?\n SelectorEngine.find(SELECTOR_ITEM, element.parentNode) :\n []\n\n return this._items.indexOf(element)\n }\n\n _getItemByOrder(order, activeElement) {\n const isNext = order === ORDER_NEXT\n return getNextActiveElement(this._items, activeElement, isNext, this._config.wrap)\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element))\n\n return EventHandler.trigger(this._element, EVENT_SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n activeIndicator.removeAttribute('aria-current')\n\n const indicators = SelectorEngine.find(SELECTOR_INDICATOR, this._indicatorsElement)\n\n for (const indicator of indicators) {\n if (Number.parseInt(indicator.getAttribute('data-bs-slide-to'), 10) === this._getItemIndex(element)) {\n indicator.classList.add(CLASS_NAME_ACTIVE)\n indicator.setAttribute('aria-current', 'true')\n break\n }\n }\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n\n if (!element) {\n return\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n if (elementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n this._config.interval = elementInterval\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval\n }\n }\n\n _slide(directionOrOrder, element) {\n const order = this._directionToOrder(directionOrOrder)\n const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || this._getItemByOrder(order, activeElement)\n\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n const isNext = order === ORDER_NEXT\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n const eventDirectionName = this._orderToDirection(order)\n\n if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE)) {\n this._isSliding = false\n return\n }\n\n if (this._isSliding) {\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.defaultPrevented) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return\n }\n\n this._isSliding = true\n\n if (isCycling) {\n this.pause()\n }\n\n this._setActiveIndicatorElement(nextElement)\n this._activeElement = nextElement\n\n const triggerSlidEvent = () => {\n EventHandler.trigger(this._element, EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n }\n\n if (this._element.classList.contains(CLASS_NAME_SLIDE)) {\n nextElement.classList.add(orderClassName)\n\n reflow(nextElement)\n\n activeElement.classList.add(directionalClassName)\n nextElement.classList.add(directionalClassName)\n\n const completeCallBack = () => {\n nextElement.classList.remove(directionalClassName, orderClassName)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n this._isSliding = false\n\n setTimeout(triggerSlidEvent, 0)\n }\n\n this._queueCallback(completeCallBack, activeElement, true)\n } else {\n activeElement.classList.remove(CLASS_NAME_ACTIVE)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n this._isSliding = false\n triggerSlidEvent()\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n _directionToOrder(direction) {\n if (![DIRECTION_RIGHT, DIRECTION_LEFT].includes(direction)) {\n return direction\n }\n\n if (isRTL()) {\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\n }\n\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\n }\n\n _orderToDirection(order) {\n if (![ORDER_NEXT, ORDER_PREV].includes(order)) {\n return order\n }\n\n if (isRTL()) {\n return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\n }\n\n return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\n }\n\n // Static\n static carouselInterface(element, config) {\n const data = Carousel.getOrCreateInstance(element, config)\n\n let { _config } = data\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\n\n if (typeof config === 'number') {\n data.to(config)\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`)\n }\n\n data[action]()\n } else if (_config.interval && _config.ride) {\n data.pause()\n data.cycle()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Carousel.carouselInterface(this, config)\n })\n }\n\n static dataApiClickHandler(event) {\n const target = getElementFromSelector(this)\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return\n }\n\n const config = {\n ...Manipulator.getDataAttributes(target),\n ...Manipulator.getDataAttributes(this)\n }\n const slideIndex = this.getAttribute('data-bs-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel.carouselInterface(target, config)\n\n if (slideIndex) {\n Carousel.getInstance(target).to(slideIndex)\n }\n\n event.preventDefault()\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler)\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n for (const carousel of carousels) {\n Carousel.carouselInterface(carousel, Carousel.getInstance(carousel))\n }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Carousel)\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElement,\n getElementFromSelector,\n getSelectorFromElement,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\nconst Default = {\n toggle: true,\n parent: null\n}\n\nconst DefaultType = {\n toggle: 'boolean',\n parent: '(null|element)'\n}\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._isTransitioning = false\n this._config = this._getConfig(config)\n this._triggerArray = []\n\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (const elem of toggleList) {\n const selector = getSelectorFromElement(elem)\n const filterElement = SelectorEngine.find(selector)\n .filter(foundElem => foundElem === this._element)\n\n if (selector !== null && filterElement.length) {\n this._triggerArray.push(elem)\n }\n }\n\n this._initializeChildren()\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle() {\n if (this._isShown()) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning || this._isShown()) {\n return\n }\n\n let activeChildren = []\n\n // find active children\n if (this._config.parent) {\n activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)\n .filter(element => element !== this._element)\n .map(element => Collapse.getOrCreateInstance(element, { toggle: false }))\n }\n\n if (activeChildren.length && activeChildren[0]._isTransitioning) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n if (startEvent.defaultPrevented) {\n return\n }\n\n for (const activeInstance of activeChildren) {\n activeInstance.hide()\n }\n\n const dimension = this._getDimension()\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE)\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n this._element.style[dimension] = 0\n\n this._addAriaAndCollapsedClass(this._triggerArray, true)\n this._isTransitioning = true\n\n const complete = () => {\n this._isTransitioning = false\n\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n this._element.style[dimension] = ''\n\n EventHandler.trigger(this._element, EVENT_SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n\n this._queueCallback(complete, this._element, true)\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning || !this._isShown()) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n if (startEvent.defaultPrevented) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n reflow(this._element)\n\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n for (const trigger of this._triggerArray) {\n const elem = getElementFromSelector(trigger)\n\n if (elem && !this._isShown(elem)) {\n this._addAriaAndCollapsedClass([trigger], false)\n }\n }\n\n this._isTransitioning = true\n\n const complete = () => {\n this._isTransitioning = false\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.style[dimension] = ''\n\n this._queueCallback(complete, this._element, true)\n }\n\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW)\n }\n\n // Private\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n config.parent = getElement(config.parent)\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n }\n\n _initializeChildren() {\n if (!this._config.parent) {\n return\n }\n\n const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE)\n\n for (const element of children) {\n const selected = getElementFromSelector(element)\n\n if (selected) {\n this._addAriaAndCollapsedClass([element], this._isShown(selected))\n }\n }\n }\n\n _getFirstLevelChildren(selector) {\n const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent)\n // remove children if greater depth\n return SelectorEngine.find(selector, this._config.parent).filter(elem => !children.includes(elem))\n }\n\n _addAriaAndCollapsedClass(triggerArray, isOpen) {\n if (!triggerArray.length) {\n return\n }\n\n for (const elem of triggerArray) {\n if (isOpen) {\n elem.classList.remove(CLASS_NAME_COLLAPSED)\n } else {\n elem.classList.add(CLASS_NAME_COLLAPSED)\n }\n\n elem.setAttribute('aria-expanded', isOpen)\n }\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const _config = {}\n if (typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n const data = Collapse.getOrCreateInstance(this, _config)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n event.preventDefault()\n }\n\n const selector = getSelectorFromElement(this)\n const selectorElements = SelectorEngine.find(selector)\n\n for (const element of selectorElements) {\n Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Collapse)\n\nexport default Collapse\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport {\n defineJQueryPlugin,\n getElement,\n getElementFromSelector,\n getNextActiveElement,\n isDisabled,\n isElement,\n isRTL,\n isVisible,\n noop,\n typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst SPACE_KEY = 'Space'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY}`)\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_NAVBAR = 'navbar'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]'\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'\n\nconst Default = {\n offset: [0, 2],\n boundary: 'clippingParents',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null,\n autoClose: true\n}\n\nconst DefaultType = {\n offset: '(array|string|function)',\n boundary: '(string|element)',\n reference: '(string|element|object)',\n display: 'string',\n popperConfig: '(null|object|function)',\n autoClose: '(boolean|string)'\n}\n\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._popper = null\n this._config = this._getConfig(config)\n this._menu = this._getMenuElement()\n this._inNavbar = this._detectNavbar()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle() {\n return this._isShown() ? this.hide() : this.show()\n }\n\n show() {\n if (isDisabled(this._element) || this._isShown(this._menu)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n const parent = Dropdown.getParentFromElement(this._element)\n // Totally disable Popper for Dropdowns in Navbar\n if (this._inNavbar) {\n Manipulator.setDataAttribute(this._menu, 'popper', 'none')\n } else {\n this._createPopper(parent)\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement && !parent.closest(SELECTOR_NAVBAR_NAV)) {\n for (const elem of [].concat(...document.body.children)) {\n EventHandler.on(elem, 'mouseover', noop)\n }\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n this._menu.classList.add(CLASS_NAME_SHOW)\n this._element.classList.add(CLASS_NAME_SHOW)\n EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n }\n\n hide() {\n if (isDisabled(this._element) || !this._isShown(this._menu)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n this._completeHide(relatedTarget)\n }\n\n dispose() {\n if (this._popper) {\n this._popper.destroy()\n }\n\n super.dispose()\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper) {\n this._popper.update()\n }\n }\n\n // Private\n _completeHide(relatedTarget) {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const elem of [].concat(...document.body.children)) {\n EventHandler.off(elem, 'mouseover', noop)\n }\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._menu.classList.remove(CLASS_NAME_SHOW)\n this._element.classList.remove(CLASS_NAME_SHOW)\n this._element.setAttribute('aria-expanded', 'false')\n Manipulator.removeDataAttribute(this._menu, 'popper')\n EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...Manipulator.getDataAttributes(this._element),\n ...config\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n if (typeof config.reference === 'object' && !isElement(config.reference) &&\n typeof config.reference.getBoundingClientRect !== 'function'\n ) {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n }\n\n return config\n }\n\n _createPopper(parent) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = parent\n } else if (isElement(this._config.reference)) {\n referenceElement = getElement(this._config.reference)\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference\n }\n\n const popperConfig = this._getPopperConfig()\n const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false)\n\n this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n\n if (isDisplayStatic) {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static')\n }\n }\n\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW)\n }\n\n _getMenuElement() {\n return SelectorEngine.next(this._element, SELECTOR_MENU)[0]\n }\n\n _getPlacement() {\n const parentDropdown = this._element.parentNode\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT\n }\n\n // We need to trim the value because custom properties can also include spaces\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n }\n\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n }\n\n _detectNavbar() {\n return this._element.closest(`.${CLASS_NAME_NAVBAR}`) !== null\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(val => Number.parseInt(val, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }]\n }\n\n // Disable Popper if we have a static display\n if (this._config.display === 'static') {\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }]\n }\n\n return {\n ...defaultBsPopperConfig,\n ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n }\n }\n\n _selectMenuItem({ key, target }) {\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(el => isVisible(el))\n\n if (!items.length) {\n return\n }\n\n // if target isn't included in items (e.g. when expanding the dropdown)\n // allow cycling to get the last item in case key equals ARROW_UP_KEY\n getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Dropdown.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n\n static clearMenus(event) {\n if (event && (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY))) {\n return\n }\n\n const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (const toggle of toggles) {\n const context = Dropdown.getInstance(toggle)\n if (!context || context._config.autoClose === false) {\n continue\n }\n\n if (!context._isShown()) {\n continue\n }\n\n const relatedTarget = {\n relatedTarget: context._element\n }\n\n if (event) {\n const composedPath = event.composedPath()\n const isMenuTarget = composedPath.includes(context._menu)\n if (\n composedPath.includes(context._element) ||\n (context._config.autoClose === 'inside' && !isMenuTarget) ||\n (context._config.autoClose === 'outside' && isMenuTarget)\n ) {\n continue\n }\n\n // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n if (context._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n continue\n }\n\n if (event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n }\n\n context._completeHide(relatedTarget)\n }\n }\n\n static getParentFromElement(element) {\n return getElementFromSelector(element) || element.parentNode\n }\n\n static dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ?\n event.key === SPACE_KEY || (event.key !== ESCAPE_KEY &&\n ((event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY) ||\n event.target.closest(SELECTOR_MENU))) :\n !REGEXP_KEYDOWN.test(event.key)) {\n return\n }\n\n const isActive = this.classList.contains(CLASS_NAME_SHOW)\n\n if (!isActive && event.key === ESCAPE_KEY) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (isDisabled(this)) {\n return\n }\n\n const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0]\n const instance = Dropdown.getOrCreateInstance(getToggleButton)\n\n if (event.key === ESCAPE_KEY) {\n instance.hide()\n return\n }\n\n if (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY) {\n if (!isActive) {\n instance.show()\n }\n\n instance._selectMenuItem(event)\n return\n }\n\n if (!isActive || event.key === SPACE_KEY) {\n Dropdown.clearMenus()\n }\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n Dropdown.getOrCreateInstance(this).toggle()\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Dropdown)\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine'\nimport Manipulator from '../dom/manipulator'\nimport { isElement } from './index'\n\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n constructor() {\n this._element = document.body\n }\n\n // Public\n getWidth() {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth\n return Math.abs(window.innerWidth - documentWidth)\n }\n\n hide() {\n const width = this.getWidth()\n this._disableOverFlow()\n // give padding to element to balance the hidden scrollbar width\n this._setElementAttributes(this._element, 'paddingRight', calculatedValue => calculatedValue + width)\n // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width)\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width)\n }\n\n reset() {\n this._resetElementAttributes(this._element, 'overflow')\n this._resetElementAttributes(this._element, 'paddingRight')\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight')\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight')\n }\n\n isOverflowing() {\n return this.getWidth() > 0\n }\n\n // Private\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, 'overflow')\n this._element.style.overflow = 'hidden'\n }\n\n _setElementAttributes(selector, styleProp, callback) {\n const scrollbarWidth = this.getWidth()\n const manipulationCallBack = element => {\n if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return\n }\n\n this._saveInitialAttribute(element, styleProp)\n const calculatedValue = window.getComputedStyle(element)[styleProp]\n element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n _saveInitialAttribute(element, styleProp) {\n const actualValue = element.style[styleProp]\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProp, actualValue)\n }\n }\n\n _resetElementAttributes(selector, styleProp) {\n const manipulationCallBack = element => {\n const value = Manipulator.getDataAttribute(element, styleProp)\n if (typeof value === 'undefined') {\n element.style.removeProperty(styleProp)\n } else {\n Manipulator.removeDataAttribute(element, styleProp)\n element.style[styleProp] = value\n }\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n _applyManipulationCallback(selector, callBack) {\n if (isElement(selector)) {\n callBack(selector)\n } else {\n for (const sel of SelectorEngine.find(selector, this._element)) {\n callBack(sel)\n }\n }\n }\n}\n\nexport default ScrollBarHelper\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { execute, executeAfterTransition, getElement, reflow, typeCheckConfig } from './index'\n\n/**\n * Constants\n */\n\nconst NAME = 'backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nconst Default = {\n className: 'modal-backdrop',\n isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n isAnimated: false,\n rootElement: 'body', // give the choice to place backdrop under different elements\n clickCallback: null\n}\n\nconst DefaultType = {\n className: 'string',\n isVisible: 'boolean',\n isAnimated: 'boolean',\n rootElement: '(element|string)',\n clickCallback: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Backdrop {\n constructor(config) {\n this._config = this._getConfig(config)\n this._isAppended = false\n this._element = null\n }\n\n // Public\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._append()\n\n if (this._config.isAnimated) {\n reflow(this._getElement())\n }\n\n this._getElement().classList.add(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n execute(callback)\n })\n }\n\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n this.dispose()\n execute(callback)\n })\n }\n\n dispose() {\n if (!this._isAppended) {\n return\n }\n\n EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n this._element.remove()\n this._isAppended = false\n }\n\n // Private\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div')\n backdrop.className = this._config.className\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE)\n }\n\n this._element = backdrop\n }\n\n return this._element\n }\n\n _getConfig(config) {\n config = {\n ...Default,\n ...(typeof config === 'object' ? config : {})\n }\n\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = getElement(config.rootElement)\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _append() {\n if (this._isAppended) {\n return\n }\n\n this._config.rootElement.append(this._getElement())\n\n EventHandler.on(this._getElement(), EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback)\n })\n\n this._isAppended = true\n }\n\n _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n }\n}\n\nexport default Backdrop\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport SelectorEngine from '../dom/selector-engine'\nimport { typeCheckConfig } from './index'\n\n/**\n * Constants\n */\n\nconst NAME = 'focustrap'\nconst DATA_KEY = 'bs.focustrap'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`\n\nconst TAB_KEY = 'Tab'\nconst TAB_NAV_FORWARD = 'forward'\nconst TAB_NAV_BACKWARD = 'backward'\n\nconst Default = {\n trapElement: null, // The element to trap focus inside of\n autofocus: true\n}\n\nconst DefaultType = {\n trapElement: 'element',\n autofocus: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass FocusTrap {\n constructor(config) {\n this._config = this._getConfig(config)\n this._isActive = false\n this._lastTabNavDirection = null\n }\n\n // Public\n activate() {\n const { trapElement, autofocus } = this._config\n\n if (this._isActive) {\n return\n }\n\n if (autofocus) {\n trapElement.focus()\n }\n\n EventHandler.off(document, EVENT_KEY) // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event))\n EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event))\n\n this._isActive = true\n }\n\n deactivate() {\n if (!this._isActive) {\n return\n }\n\n this._isActive = false\n EventHandler.off(document, EVENT_KEY)\n }\n\n // Private\n _handleFocusin(event) {\n const { target } = event\n const { trapElement } = this._config\n\n if (target === document || target === trapElement || trapElement.contains(target)) {\n return\n }\n\n const elements = SelectorEngine.focusableChildren(trapElement)\n\n if (elements.length === 0) {\n trapElement.focus()\n } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n elements[elements.length - 1].focus()\n } else {\n elements[0].focus()\n }\n }\n\n _handleKeydown(event) {\n if (event.key !== TAB_KEY) {\n return\n }\n\n this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n }\n\n _getConfig(config) {\n config = {\n ...Default,\n ...(typeof config === 'object' ? config : {})\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n}\n\nexport default FocusTrap\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n isRTL,\n isVisible,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport ScrollBarHelper from './util/scrollbar'\nimport BaseComponent from './base-component'\nimport Backdrop from './util/backdrop'\nimport FocusTrap from './util/focustrap'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * Constants\n */\n\nconst NAME = 'modal'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEY = 'Escape'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst OPEN_SELECTOR = '.modal.show'\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n focus: true\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element)\n this._backdrop = this._initializeBackDrop()\n this._focustrap = this._initializeFocusTrap()\n this._isShown = false\n this._ignoreBackdropClick = false\n this._isTransitioning = false\n this._scrollBar = new ScrollBarHelper()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget\n })\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n\n if (this._isAnimated()) {\n this._isTransitioning = true\n }\n\n this._scrollBar.hide()\n\n document.body.classList.add(CLASS_NAME_OPEN)\n\n this._adjustDialog()\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => {\n EventHandler.one(this._element, EVENT_MOUSEUP_DISMISS, event => {\n if (event.target === this._element) {\n this._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide() {\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._isShown = false\n const isAnimated = this._isAnimated()\n\n if (isAnimated) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n this._focustrap.deactivate()\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n EventHandler.off(this._element, EVENT_CLICK_DISMISS)\n EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS)\n\n this._queueCallback(() => this._hideModal(), this._element, isAnimated)\n }\n\n dispose() {\n for (const htmlElement of [window, this._dialog]) {\n EventHandler.off(htmlElement, EVENT_KEY)\n }\n\n this._backdrop.dispose()\n this._focustrap.deactivate()\n super.dispose()\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop), // 'static' option will be translated to true, and booleans will keep their value\n isAnimated: this._isAnimated()\n })\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n })\n }\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {})\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _showElement(relatedTarget) {\n const isAnimated = this._isAnimated()\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n\n if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.append(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.scrollTop = 0\n\n if (modalBody) {\n modalBody.scrollTop = 0\n }\n\n if (isAnimated) {\n reflow(this._element)\n }\n\n this._element.classList.add(CLASS_NAME_SHOW)\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._focustrap.activate()\n }\n\n this._isTransitioning = false\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget\n })\n }\n\n this._queueCallback(transitionComplete, this._dialog, isAnimated)\n }\n\n _setEscapeEvent() {\n if (this._isShown) {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (this._config.keyboard && event.key === ESCAPE_KEY) {\n event.preventDefault()\n this.hide()\n } else if (!this._config.keyboard && event.key === ESCAPE_KEY) {\n this._triggerBackdropTransition()\n }\n })\n } else {\n EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n EventHandler.on(window, EVENT_RESIZE, () => this._adjustDialog())\n } else {\n EventHandler.off(window, EVENT_RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._isTransitioning = false\n this._backdrop.hide(() => {\n document.body.classList.remove(CLASS_NAME_OPEN)\n this._resetAdjustments()\n this._scrollBar.reset()\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n })\n }\n\n _showBackdrop(callback) {\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, event => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n\n if (event.target !== event.currentTarget) {\n return\n }\n\n if (this._config.backdrop === true) {\n this.hide()\n } else if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition()\n }\n })\n\n this._backdrop.show(callback)\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE)\n }\n\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const { classList, scrollHeight, style } = this._element\n const isModalOverflowing = scrollHeight > document.documentElement.clientHeight\n\n // return if the following background transition hasn't yet completed\n if ((!isModalOverflowing && style.overflowY === 'hidden') || classList.contains(CLASS_NAME_STATIC)) {\n return\n }\n\n if (!isModalOverflowing) {\n style.overflowY = 'hidden'\n }\n\n classList.add(CLASS_NAME_STATIC)\n this._queueCallback(() => {\n classList.remove(CLASS_NAME_STATIC)\n if (!isModalOverflowing) {\n this._queueCallback(() => {\n style.overflowY = ''\n }, this._dialog)\n }\n }, this._dialog)\n\n this._element.focus()\n }\n\n /**\n * The following methods are used to handle overflowing modals\n */\n\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n const scrollbarWidth = this._scrollBar.getWidth()\n const isBodyOverflowing = scrollbarWidth > 0\n\n if ((!isBodyOverflowing && isModalOverflowing && !isRTL()) || (isBodyOverflowing && !isModalOverflowing && isRTL())) {\n this._element.style.paddingLeft = `${scrollbarWidth}px`\n }\n\n if ((isBodyOverflowing && !isModalOverflowing && !isRTL()) || (!isBodyOverflowing && isModalOverflowing && isRTL())) {\n this._element.style.paddingRight = `${scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n // Static\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n const data = Modal.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](relatedTarget)\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = getElementFromSelector(this)\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n EventHandler.one(target, EVENT_SHOW, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n if (isVisible(this)) {\n this.focus()\n }\n })\n })\n\n // avoid conflict when clicking moddal toggler while another one is open\n const allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n if (allReadyOpen) {\n Modal.getInstance(allReadyOpen).hide()\n }\n\n const data = Modal.getOrCreateInstance(target)\n\n data.toggle(this)\n})\n\nenableDismissTrigger(Modal)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Modal)\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n isDisabled,\n isVisible,\n typeCheckConfig\n} from './util/index'\nimport ScrollBarHelper from './util/scrollbar'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport SelectorEngine from './dom/selector-engine'\nimport Manipulator from './dom/manipulator'\nimport Backdrop from './util/backdrop'\nimport FocusTrap from './util/focustrap'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * Constants\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop'\nconst OPEN_SELECTOR = '.offcanvas.show'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n scroll: false\n}\n\nconst DefaultType = {\n backdrop: 'boolean',\n keyboard: 'boolean',\n scroll: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._isShown = false\n this._backdrop = this._initializeBackDrop()\n this._focustrap = this._initializeFocusTrap()\n this._addEventListeners()\n }\n\n // Getters\n static get NAME() {\n return NAME\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n this._element.style.visibility = 'visible'\n\n this._backdrop.show()\n\n if (!this._config.scroll) {\n new ScrollBarHelper().hide()\n }\n\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.classList.add(CLASS_NAME_SHOW)\n\n const completeCallBack = () => {\n if (!this._config.scroll) {\n this._focustrap.activate()\n }\n\n EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n }\n\n this._queueCallback(completeCallBack, this._element, true)\n }\n\n hide() {\n if (!this._isShown) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._focustrap.deactivate()\n this._element.blur()\n this._isShown = false\n this._element.classList.remove(CLASS_NAME_SHOW)\n this._backdrop.hide()\n\n const completeCallback = () => {\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._element.style.visibility = 'hidden'\n\n if (!this._config.scroll) {\n new ScrollBarHelper().reset()\n }\n\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._queueCallback(completeCallback, this._element, true)\n }\n\n dispose() {\n this._backdrop.dispose()\n this._focustrap.deactivate()\n super.dispose()\n }\n\n // Private\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {})\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _initializeBackDrop() {\n return new Backdrop({\n className: CLASS_NAME_BACKDROP,\n isVisible: this._config.backdrop,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: () => this.hide()\n })\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n })\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (this._config.keyboard && event.key === ESCAPE_KEY) {\n this.hide()\n }\n })\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Offcanvas.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = getElementFromSelector(this)\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n // focus on trigger when it is closed\n if (isVisible(this)) {\n this.focus()\n }\n })\n\n // avoid conflict when clicking a toggler of an offcanvas, while another is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n if (alreadyOpen && alreadyOpen !== target) {\n Offcanvas.getInstance(alreadyOpen).hide()\n }\n\n const data = Offcanvas.getOrCreateInstance(target)\n data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const el of SelectorEngine.find(OPEN_SELECTOR)) {\n Offcanvas.getOrCreateInstance(el).show()\n }\n})\n\nenableDismissTrigger(Offcanvas)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Offcanvas)\n\nexport default Offcanvas\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttributes = new Set([\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n])\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst 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\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n const attributeName = attribute.nodeName.toLowerCase()\n\n if (allowedAttributeList.includes(attributeName)) {\n if (uriAttributes.has(attributeName)) {\n return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue))\n }\n\n return true\n }\n\n // Check if a regular expression validates the attribute.\n return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp)\n .some(regex => regex.test(attributeName))\n}\n\nexport const DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {\n if (!unsafeHtml.length) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n for (const element of elements) {\n const elementName = element.nodeName.toLowerCase()\n\n if (!Object.keys(allowList).includes(elementName)) {\n element.remove()\n\n continue\n }\n\n const attributeList = [].concat(...element.attributes)\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || [])\n\n for (const attribute of attributeList) {\n if (!allowedAttribute(attribute, allowedAttributes)) {\n element.removeAttribute(attribute.nodeName)\n }\n }\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport {\n defineJQueryPlugin,\n findShadowRoot,\n getElement,\n getUID,\n isElement,\n isRTL,\n noop,\n typeCheckConfig\n} from './util/index'\nimport { DefaultAllowlist, sanitizeHtml } from './util/sanitizer'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst HOVER_STATE_SHOW = 'show'\nconst HOVER_STATE_OUT = 'out'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL() ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n animation: true,\n template: '<div class=\"tooltip\" role=\"tooltip\">' +\n '<div class=\"tooltip-arrow\"></div>' +\n '<div class=\"tooltip-inner\"></div>' +\n '</div>',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n offset: [0, 0],\n container: false,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n boundary: 'clippingParents',\n customClass: '',\n sanitize: true,\n sanitizeFn: null,\n allowList: DefaultAllowlist,\n popperConfig: null\n}\n\nconst DefaultType = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n offset: '(array|string|function)',\n container: '(string|element|boolean)',\n fallbackPlacements: 'array',\n boundary: '(string|element)',\n customClass: '(string|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n allowList: 'object',\n popperConfig: '(null|object|function)'\n}\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n }\n\n super(element)\n\n // Private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._popper = null\n\n // Protected\n this._config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get Event() {\n return Event\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const context = this._initializeOnDelegatedTarget(event)\n\n context._activeTrigger.click = !context._activeTrigger.click\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context)\n } else {\n context._leave(null, context)\n }\n } else {\n if (this.getTipElement().classList.contains(CLASS_NAME_SHOW)) {\n this._leave(null, this)\n return\n }\n\n this._enter(null, this)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n if (this.tip) {\n this.tip.remove()\n }\n\n this._disposePopper()\n super.dispose()\n }\n\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n if (!(this.isWithContent() && this._isEnabled)) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW)\n const shadowRoot = findShadowRoot(this._element)\n const isInTheDom = shadowRoot === null ?\n this._element.ownerDocument.documentElement.contains(this._element) :\n shadowRoot.contains(this._element)\n\n if (showEvent.defaultPrevented || !isInTheDom) {\n return\n }\n\n // A trick to recreate a tooltip in case a new title is given by using the NOT documented `data-bs-original-title`\n // This will be removed later in favor of a `setContent` method\n if (this.constructor.NAME === 'tooltip' && this.tip && this.getTitle() !== this.tip.querySelector(SELECTOR_TOOLTIP_INNER).innerHTML) {\n this._disposePopper()\n this.tip.remove()\n this.tip = null\n }\n\n const tip = this.getTipElement()\n const tipId = getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this._element.setAttribute('aria-describedby', tipId)\n\n if (this._config.animation) {\n tip.classList.add(CLASS_NAME_FADE)\n }\n\n const placement = typeof this._config.placement === 'function' ?\n this._config.placement.call(this, tip, this._element) :\n this._config.placement\n\n const attachment = this._getAttachment(placement)\n this._addAttachmentClass(attachment)\n\n const { container } = this._config\n Data.set(tip, this.constructor.DATA_KEY, this)\n\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.append(tip)\n EventHandler.trigger(this._element, this.constructor.Event.INSERTED)\n }\n\n if (this._popper) {\n this._popper.update()\n } else {\n this._popper = Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n }\n\n tip.classList.add(CLASS_NAME_SHOW)\n\n const customClass = this._resolvePossibleFunction(this._config.customClass)\n if (customClass) {\n tip.classList.add(...customClass.split(' '))\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop)\n }\n }\n\n const complete = () => {\n const prevHoverState = this._hoverState\n\n this._hoverState = null\n EventHandler.trigger(this._element, this.constructor.Event.SHOWN)\n\n if (prevHoverState === HOVER_STATE_OUT) {\n this._leave(null, this)\n }\n }\n\n const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE)\n this._queueCallback(complete, this.tip, isAnimated)\n }\n\n hide() {\n if (!this._popper) {\n return\n }\n\n const tip = this.getTipElement()\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return\n }\n\n if (this._hoverState !== HOVER_STATE_SHOW) {\n tip.remove()\n }\n\n this._cleanTipClass()\n this._element.removeAttribute('aria-describedby')\n EventHandler.trigger(this._element, this.constructor.Event.HIDDEN)\n\n this._disposePopper()\n }\n\n const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n tip.classList.remove(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop)\n }\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false\n this._activeTrigger[TRIGGER_FOCUS] = false\n this._activeTrigger[TRIGGER_HOVER] = false\n\n const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE)\n this._queueCallback(complete, this.tip, isAnimated)\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.update()\n }\n }\n\n // Protected\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n getTipElement() {\n if (this.tip) {\n return this.tip\n }\n\n const element = document.createElement('div')\n element.innerHTML = this._config.template\n\n const tip = element.children[0]\n this.setContent(tip)\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n\n this.tip = tip\n return this.tip\n }\n\n setContent(tip) {\n this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TOOLTIP_INNER)\n }\n\n _sanitizeAndSetContent(template, content, selector) {\n const templateElement = SelectorEngine.findOne(selector, template)\n\n if (!content && templateElement) {\n templateElement.remove()\n return\n }\n\n // we use append for html objects to maintain js events\n this.setElementContent(templateElement, content)\n }\n\n setElementContent(element, content) {\n if (element === null) {\n return\n }\n\n if (isElement(content)) {\n content = getElement(content)\n\n // content is a DOM node or a jQuery\n if (this._config.html) {\n if (content.parentNode !== element) {\n element.innerHTML = ''\n element.append(content)\n }\n } else {\n element.textContent = content.textContent\n }\n\n return\n }\n\n if (this._config.html) {\n if (this._config.sanitize) {\n content = sanitizeHtml(content, this._config.allowList, this._config.sanitizeFn)\n }\n\n element.innerHTML = content // lgtm [js/xss-through-dom]\n } else {\n element.textContent = content\n }\n }\n\n getTitle() {\n const title = this._element.getAttribute('data-bs-original-title') || this._config.title\n\n return this._resolvePossibleFunction(title)\n }\n\n updateAttachment(attachment) {\n if (attachment === 'right') {\n return 'end'\n }\n\n if (attachment === 'left') {\n return 'start'\n }\n\n return attachment\n }\n\n // Private\n _initializeOnDelegatedTarget(event, context) {\n return context || this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(val => Number.parseInt(val, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _resolvePossibleFunction(content) {\n return typeof content === 'function' ? content.call(this._element) : content\n }\n\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [\n {\n name: 'flip',\n options: {\n fallbackPlacements: this._config.fallbackPlacements\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n },\n {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n },\n {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n },\n {\n name: 'onChange',\n enabled: true,\n phase: 'afterWrite',\n fn: data => this._handlePopperPlacementChange(data)\n }\n ],\n onFirstUpdate: data => {\n if (data.options.placement !== data.placement) {\n this._handlePopperPlacementChange(data)\n }\n }\n }\n\n return {\n ...defaultBsPopperConfig,\n ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n }\n }\n\n _addAttachmentClass(attachment) {\n this.getTipElement().classList.add(`${this._getBasicClassPrefix()}-${this.updateAttachment(attachment)}`)\n }\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n const triggers = this._config.trigger.split(' ')\n\n for (const trigger of triggers) {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.Event.CLICK, this._config.selector, event => this.toggle(event))\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSEENTER :\n this.constructor.Event.FOCUSIN\n const eventOut = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSELEAVE :\n this.constructor.Event.FOCUSOUT\n\n EventHandler.on(this._element, eventIn, this._config.selector, event => this._enter(event))\n EventHandler.on(this._element, eventOut, this._config.selector, event => this._leave(event))\n }\n }\n\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide()\n }\n }\n\n EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n if (this._config.selector) {\n this._config = {\n ...this._config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const title = this._element.getAttribute('title')\n const originalTitleType = typeof this._element.getAttribute('data-bs-original-title')\n\n if (title || originalTitleType !== 'string') {\n this._element.setAttribute('data-bs-original-title', title || '')\n if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) {\n this._element.setAttribute('aria-label', title)\n }\n\n this._element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n context = this._initializeOnDelegatedTarget(event, context)\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = true\n }\n\n if (context.getTipElement().classList.contains(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_SHOW\n\n if (!context._config.delay || !context._config.delay.show) {\n context.show()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show()\n }\n }, context._config.delay.show)\n }\n\n _leave(event, context) {\n context = this._initializeOnDelegatedTarget(event, context)\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = context._element.contains(event.relatedTarget)\n }\n\n if (context._isWithActiveTrigger()) {\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_OUT\n\n if (!context._config.delay || !context._config.delay.hide) {\n context.hide()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide()\n }\n }, context._config.delay.hide)\n }\n\n _isWithActiveTrigger() {\n for (const trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true\n }\n }\n\n return false\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n for (const dataAttr of Object.keys(dataAttributes)) {\n if (DISALLOWED_ATTRIBUTES.has(dataAttr)) {\n delete dataAttributes[dataAttr]\n }\n }\n\n config = {\n ...this.constructor.Default,\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n }\n\n config.container = config.container === false ? document.body : getElement(config.container)\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn)\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n for (const key in this._config) {\n if (this.constructor.Default[key] !== this._config[key]) {\n config[key] = this._config[key]\n }\n }\n\n // In the future can be replaced with:\n // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n // `Object.fromEntries(keysWithDifferentValues)`\n return config\n }\n\n _cleanTipClass() {\n const tip = this.getTipElement()\n const basicClassPrefixRegex = new RegExp(`(^|\\\\s)${this._getBasicClassPrefix()}\\\\S+`, 'g')\n const tabClass = tip.getAttribute('class').match(basicClassPrefixRegex)\n if (tabClass !== null && tabClass.length > 0) {\n for (const tClass of tabClass.map(token => token.trim())) {\n tip.classList.remove(tClass)\n }\n }\n }\n\n _getBasicClassPrefix() {\n return CLASS_PREFIX\n }\n\n _handlePopperPlacementChange(popperData) {\n const { state } = popperData\n\n if (!state) {\n return\n }\n\n this.tip = state.elements.popper\n this._cleanTipClass()\n this._addAttachmentClass(this._getAttachment(state.placement))\n }\n\n _disposePopper() {\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tooltip.getOrCreateInstance(this, config)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport Tooltip from './tooltip'\n\n/**\n * Constants\n */\n\nconst NAME = 'popover'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-popover'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\nconst Default = {\n ...Tooltip.Default,\n placement: 'right',\n offset: [0, 8],\n trigger: 'click',\n content: '',\n template: '<div class=\"popover\" role=\"tooltip\">' +\n '<div class=\"popover-arrow\"></div>' +\n '<h3 class=\"popover-header\"></h3>' +\n '<div class=\"popover-body\"></div>' +\n '</div>'\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content: '(string|element|function)'\n}\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n // Getters\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get Event() {\n return Event\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Overrides\n isWithContent() {\n return this.getTitle() || this._getContent()\n }\n\n setContent(tip) {\n this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TITLE)\n this._sanitizeAndSetContent(tip, this._getContent(), SELECTOR_CONTENT)\n }\n\n // Private\n _getContent() {\n return this._resolvePossibleFunction(this._config.content)\n }\n\n _getBasicClassPrefix() {\n return CLASS_PREFIX\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Popover.getOrCreateInstance(this, config)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Popover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElement,\n getSelectorFromElement,\n typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}, .${CLASS_NAME_DROPDOWN_ITEM}`\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst METHOD_OFFSET = 'offset'\nconst METHOD_POSITION = 'position'\n\nconst Default = {\n offset: 10,\n method: 'auto',\n target: ''\n}\n\nconst DefaultType = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element)\n this._scrollElement = this._element.tagName === 'BODY' ? window : this._element\n this._config = this._getConfig(config)\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n EventHandler.on(this._scrollElement, EVENT_SCROLL, () => this._process())\n\n this.refresh()\n this._process()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window ?\n METHOD_OFFSET :\n METHOD_POSITION\n\n const offsetMethod = this._config.method === 'auto' ?\n autoMethod :\n this._config.method\n\n const offsetBase = offsetMethod === METHOD_POSITION ?\n this._getScrollTop() :\n 0\n\n this._offsets = []\n this._targets = []\n this._scrollHeight = this._getScrollHeight()\n\n const targets = SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target)\n .map(element => {\n const targetSelector = getSelectorFromElement(element)\n const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n return [\n Manipulator[offsetMethod](target).top + offsetBase,\n targetSelector\n ]\n }\n }\n\n return null\n })\n .filter(item => item)\n .sort((a, b) => a[0] - b[0])\n\n for (const item of targets) {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n }\n }\n\n dispose() {\n EventHandler.off(this._scrollElement, EVENT_KEY)\n super.dispose()\n }\n\n // Private\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n config.target = getElement(config.target) || document.documentElement\n\n typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window ?\n this._scrollElement.pageYOffset :\n this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window ?\n window.innerHeight :\n this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n for (let i = this._offsets.length; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n const queries = SELECTOR_LINK_ITEMS.split(',')\n .map(selector => `${selector}[data-bs-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n const link = SelectorEngine.findOne(queries.join(','), this._config.target)\n\n link.classList.add(CLASS_NAME_ACTIVE)\n if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN))\n .classList.add(CLASS_NAME_ACTIVE)\n } else {\n for (const listGroup of SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP)) {\n // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n for (const item of SelectorEngine.prev(listGroup, `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`)) {\n item.classList.add(CLASS_NAME_ACTIVE)\n }\n\n // Handle special case when .nav-link is inside .nav-item\n for (const navItem of SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS)) {\n for (const item of SelectorEngine.children(navItem, SELECTOR_NAV_LINKS)) {\n item.classList.add(CLASS_NAME_ACTIVE)\n }\n }\n }\n }\n\n EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, {\n relatedTarget: target\n })\n }\n\n _clear() {\n const activeNodes = SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target)\n .filter(node => node.classList.contains(CLASS_NAME_ACTIVE))\n\n for (const node of activeNodes) {\n node.classList.remove(CLASS_NAME_ACTIVE)\n }\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = ScrollSpy.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n new ScrollSpy(spy) // eslint-disable-line no-new\n }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(ScrollSpy)\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n isDisabled,\n reflow\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_UL = ':scope > li > .active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active'\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME\n }\n\n // Public\n show() {\n if ((this._element.parentNode &&\n this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n this._element.classList.contains(CLASS_NAME_ACTIVE))) {\n return\n }\n\n let previous\n const target = getElementFromSelector(this._element)\n const listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP)\n\n if (listElement) {\n const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE\n previous = SelectorEngine.find(itemSelector, listElement)\n previous = previous[previous.length - 1]\n }\n\n const hideEvent = previous ?\n EventHandler.trigger(previous, EVENT_HIDE, { relatedTarget: this._element }) :\n null\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget: previous\n })\n\n if (showEvent.defaultPrevented || (hideEvent !== null && hideEvent.defaultPrevented)) {\n return\n }\n\n this._activate(this._element, listElement)\n\n const complete = () => {\n EventHandler.trigger(previous, EVENT_HIDDEN, { relatedTarget: this._element })\n EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget: previous })\n }\n\n if (target) {\n this._activate(target, target.parentNode, complete)\n } else {\n complete()\n }\n }\n\n // Private\n _activate(element, container, callback) {\n const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ?\n SelectorEngine.find(SELECTOR_ACTIVE_UL, container) :\n SelectorEngine.children(container, SELECTOR_ACTIVE)\n\n const active = activeElements[0]\n const isTransitioning = callback && (active && active.classList.contains(CLASS_NAME_FADE))\n\n const complete = () => this._transitionComplete(element, active, callback)\n\n if (active && isTransitioning) {\n active.classList.remove(CLASS_NAME_SHOW)\n this._queueCallback(complete, element, true)\n } else {\n complete()\n }\n }\n\n _transitionComplete(element, active, callback) {\n if (active) {\n active.classList.remove(CLASS_NAME_ACTIVE)\n\n const dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode)\n\n if (dropdownChild) {\n dropdownChild.classList.remove(CLASS_NAME_ACTIVE)\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false)\n }\n }\n\n element.classList.add(CLASS_NAME_ACTIVE)\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true)\n }\n\n reflow(element)\n\n if (element.classList.contains(CLASS_NAME_FADE)) {\n element.classList.add(CLASS_NAME_SHOW)\n }\n\n let parent = element.parentNode\n if (parent && parent.nodeName === 'LI') {\n parent = parent.parentNode\n }\n\n if (parent && parent.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {\n const dropdownElement = element.closest(SELECTOR_DROPDOWN)\n\n if (dropdownElement) {\n for (const dropdown of SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE, dropdownElement)) {\n dropdown.classList.add(CLASS_NAME_ACTIVE)\n }\n }\n\n element.setAttribute('aria-expanded', true)\n }\n\n if (callback) {\n callback()\n }\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tab.getOrCreateInstance(this)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n const data = Tab.getOrCreateInstance(this)\n data.show()\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tab)\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport BaseComponent from './base-component'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * Constants\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n}\n\nconst Default = {\n animation: true,\n autohide: true,\n delay: 5000\n}\n\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._timeout = null\n this._hasMouseInteraction = false\n this._hasKeyboardInteraction = false\n this._setListeners()\n }\n\n // Getters\n static get DefaultType() {\n return DefaultType\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n show() {\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._clearTimeout()\n\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE)\n }\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_SHOWING)\n EventHandler.trigger(this._element, EVENT_SHOWN)\n\n this._maybeScheduleHide()\n }\n\n this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated\n reflow(this._element)\n this._element.classList.add(CLASS_NAME_SHOW)\n this._element.classList.add(CLASS_NAME_SHOWING)\n\n this._queueCallback(complete, this._element, this._config.animation)\n }\n\n hide() {\n if (!this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const complete = () => {\n this._element.classList.add(CLASS_NAME_HIDE) // @deprecated\n this._element.classList.remove(CLASS_NAME_SHOWING)\n this._element.classList.remove(CLASS_NAME_SHOW)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.classList.add(CLASS_NAME_SHOWING)\n this._queueCallback(complete, this._element, this._config.animation)\n }\n\n dispose() {\n this._clearTimeout()\n\n if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n this._element.classList.remove(CLASS_NAME_SHOW)\n }\n\n super.dispose()\n }\n\n // Private\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n return config\n }\n\n _maybeScheduleHide() {\n if (!this._config.autohide) {\n return\n }\n\n if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n return\n }\n\n this._timeout = setTimeout(() => {\n this.hide()\n }, this._config.delay)\n }\n\n _onInteraction(event, isInteracting) {\n switch (event.type) {\n case 'mouseover':\n case 'mouseout':\n this._hasMouseInteraction = isInteracting\n break\n case 'focusin':\n case 'focusout':\n this._hasKeyboardInteraction = isInteracting\n break\n default:\n break\n }\n\n if (isInteracting) {\n this._clearTimeout()\n return\n }\n\n const nextElement = event.relatedTarget\n if (this._element === nextElement || this._element.contains(nextElement)) {\n return\n }\n\n this._maybeScheduleHide()\n }\n\n _setListeners() {\n EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n }\n\n _clearTimeout() {\n clearTimeout(this._timeout)\n this._timeout = null\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Toast.getOrCreateInstance(this, config)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Toast)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Toast)\n\nexport default Toast\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): index.umd.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Alert from './src/alert'\nimport Button from './src/button'\nimport Carousel from './src/carousel'\nimport Collapse from './src/collapse'\nimport Dropdown from './src/dropdown'\nimport Modal from './src/modal'\nimport Offcanvas from './src/offcanvas'\nimport Popover from './src/popover'\nimport ScrollSpy from './src/scrollspy'\nimport Tab from './src/tab'\nimport Toast from './src/toast'\nimport Tooltip from './src/tooltip'\n\nexport default {\n Alert,\n Button,\n Carousel,\n Collapse,\n Dropdown,\n Modal,\n Offcanvas,\n Popover,\n ScrollSpy,\n Tab,\n Toast,\n Tooltip\n}\n"]}