j1-template 2023.9.1 → 2023.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (740) hide show
  1. checksums.yaml +4 -4
  2. data/_includes/themes/j1/layouts/content_generator_collection.html +1 -1
  3. data/_includes/themes/j1/layouts/content_generator_news_panel_posts.html +1 -1
  4. data/_includes/themes/j1/layouts/content_generator_page.html +1 -1
  5. data/_includes/themes/j1/layouts/content_generator_post.html +1 -1
  6. data/_includes/themes/j1/layouts/content_generator_raw.html +1 -1
  7. data/_includes/themes/j1/layouts/layout_metadata_generator.html +1 -1
  8. data/_includes/themes/j1/layouts/layout_module_generator.html +1 -1
  9. data/_includes/themes/j1/layouts/layout_resource_generator.html +1 -1
  10. data/_includes/themes/j1/modules/attics/generator.html +1 -1
  11. data/_includes/themes/j1/modules/navigator/generator.html +1 -1
  12. data/_includes/themes/j1/modules/searcher/generator.html +1 -1
  13. data/_includes/themes/j1/modules/searcher/procedures/topsearch.proc +1 -1
  14. data/_includes/themes/j1/procedures/blocks/footer/boxes/about_box.proc +1 -1
  15. data/_includes/themes/j1/procedures/blocks/footer/boxes/contacts_box.proc +1 -1
  16. data/_includes/themes/j1/procedures/blocks/footer/boxes/issue.proc +1 -1
  17. data/_includes/themes/j1/procedures/blocks/footer/boxes/legal_statements.proc +1 -1
  18. data/_includes/themes/j1/procedures/blocks/footer/boxes/links_box.proc +1 -1
  19. data/_includes/themes/j1/procedures/blocks/footer/boxes/news_box.proc +1 -1
  20. data/_includes/themes/j1/procedures/blocks/footer/boxes/social_media_icons.proc +1 -1
  21. data/_includes/themes/j1/procedures/blocks/get_wave.proc +1 -1
  22. data/_includes/themes/j1/procedures/collections/create_collection_article_preview.proc +1 -1
  23. data/_includes/themes/j1/procedures/collections/pager.proc +1 -1
  24. data/_includes/themes/j1/procedures/global/attributes_loader.proc +1 -1
  25. data/_includes/themes/j1/procedures/global/collect_frontmatter_options.proc +1 -1
  26. data/_includes/themes/j1/procedures/global/collect_page_options.proc +1 -1
  27. data/_includes/themes/j1/procedures/global/create_bs_button.proc +1 -1
  28. data/_includes/themes/j1/procedures/global/create_word_cloud.proc +1 -1
  29. data/_includes/themes/j1/procedures/global/date-german.proc +1 -1
  30. data/_includes/themes/j1/procedures/global/get_category.proc +1 -1
  31. data/_includes/themes/j1/procedures/global/get_category_item.proc +1 -1
  32. data/_includes/themes/j1/procedures/global/get_documents_dir.proc +1 -1
  33. data/_includes/themes/j1/procedures/global/get_page_path.proc +1 -1
  34. data/_includes/themes/j1/procedures/global/get_page_url.proc +1 -1
  35. data/_includes/themes/j1/procedures/global/select_color.proc +1 -1
  36. data/_includes/themes/j1/procedures/global/select_font_size.proc +1 -1
  37. data/_includes/themes/j1/procedures/global/select_icon_size.proc +1 -1
  38. data/_includes/themes/j1/procedures/global/select_location.proc +1 -1
  39. data/_includes/themes/j1/procedures/global/set_base_vars_folders.proc +1 -1
  40. data/_includes/themes/j1/procedures/global/set_env_entry_document.proc +1 -1
  41. data/_includes/themes/j1/procedures/global/set_image_block.proc +1 -1
  42. data/_includes/themes/j1/procedures/global/setup.proc +1 -1
  43. data/_includes/themes/j1/procedures/layouts/content_writer.proc +1 -1
  44. data/_includes/themes/j1/procedures/layouts/default_writer.proc +1 -1
  45. data/_includes/themes/j1/procedures/layouts/module_writer.proc +1 -1
  46. data/_includes/themes/j1/procedures/layouts/resource_writer.proc +1 -1
  47. data/_includes/themes/j1/procedures/posts/collate_calendar.proc +1 -1
  48. data/_includes/themes/j1/procedures/posts/collate_list.proc +1 -1
  49. data/_includes/themes/j1/procedures/posts/collate_timeline.proc +1 -1
  50. data/_includes/themes/j1/procedures/posts/create_ad_block.proc +1 -1
  51. data/_includes/themes/j1/procedures/posts/create_series_header.proc +1 -1
  52. data/_includes/themes/j1/procedures/posts/pager.proc +1 -1
  53. data/_layouts/_home.html +1 -1
  54. data/_layouts/autopage_category.html +1 -1
  55. data/_layouts/autopage_collection.html +1 -1
  56. data/_layouts/autopage_collections_tags.html +1 -1
  57. data/_layouts/autopage_tags.html +1 -1
  58. data/_layouts/collection.html +1 -1
  59. data/_layouts/compress.html +1 -1
  60. data/_layouts/default.html +1 -1
  61. data/_layouts/home.html +1 -1
  62. data/_layouts/news_panel_posts.html +1 -1
  63. data/_layouts/page.html +1 -1
  64. data/_layouts/post.html +1 -1
  65. data/_layouts/raw.html +1 -1
  66. data/apps/public/cc/cc.yml +1 -1
  67. data/assets/data/authclient.html +2 -2
  68. data/assets/data/banner.html +5 -5
  69. data/assets/data/carousel.json +1 -1
  70. data/assets/data/cookieconsent.html +2 -2
  71. data/assets/data/fab.html +2 -2
  72. data/assets/data/footer.html +2 -2
  73. data/assets/data/galeries.html +240 -0
  74. data/assets/data/gallery_customizer.html +2 -2
  75. data/assets/data/iso-639-language-codes-flags.json +1 -1
  76. data/assets/data/iso-639-language-codes.json +1 -1
  77. data/assets/data/j1_config.json +1 -1
  78. data/assets/data/masonry.html +99 -86
  79. data/assets/data/masterslider.html +2 -2
  80. data/assets/data/mdi_icons.json +1 -1
  81. data/assets/data/mdil_icons.json +1 -1
  82. data/assets/data/menu.html +2 -2
  83. data/assets/data/mmenu.html +2 -2
  84. data/assets/data/mmenu_sidebar.html +2 -2
  85. data/assets/data/mmenu_toc.html +2 -2
  86. data/assets/data/panel.html +2 -2
  87. data/assets/data/particles.yml +1 -1
  88. data/assets/data/private.json +1 -1
  89. data/assets/data/quicklinks.html +2 -2
  90. data/assets/data/rtext_resizer.html +2 -2
  91. data/assets/data/slick.html +2 -2
  92. data/assets/data/speak2me.html +11 -9
  93. data/assets/data/themes.bootswatch.json +1 -1
  94. data/assets/data/themes.json +1 -1
  95. data/assets/data/translator.html +2 -2
  96. data/assets/error_pages/HTTP204.html +1 -1
  97. data/assets/error_pages/HTTP400.html +1 -1
  98. data/assets/error_pages/HTTP401.html +1 -1
  99. data/assets/error_pages/HTTP403.html +1 -1
  100. data/assets/error_pages/HTTP404.html +1 -1
  101. data/assets/error_pages/HTTP444.html +1 -1
  102. data/assets/error_pages/HTTP445.html +1 -1
  103. data/assets/error_pages/HTTP446.html +1 -1
  104. data/assets/error_pages/HTTP447.html +1 -1
  105. data/assets/error_pages/HTTP448.html +1 -1
  106. data/assets/error_pages/HTTP500.html +1 -1
  107. data/assets/error_pages/HTTP501.html +1 -1
  108. data/assets/error_pages/HTTP502.html +1 -1
  109. data/assets/error_pages/HTTP503.html +1 -1
  110. data/assets/themes/j1/adapter/js/advertising.js +2 -2
  111. data/assets/themes/j1/adapter/js/algolia.js +2 -2
  112. data/assets/themes/j1/adapter/js/analytics.js +2 -2
  113. data/assets/themes/j1/adapter/js/asciidoctor.js +2 -2
  114. data/assets/themes/j1/adapter/js/attic.js +2 -2
  115. data/assets/themes/j1/adapter/js/bmd.js +2 -2
  116. data/assets/themes/j1/adapter/js/carousel.js +2 -2
  117. data/assets/themes/j1/adapter/js/clipboard.js +2 -2
  118. data/assets/themes/j1/adapter/js/comments.js +2 -2
  119. data/assets/themes/j1/adapter/js/cookieConsent.js +1 -1
  120. data/assets/themes/j1/adapter/js/customFunctions.js +2 -2
  121. data/assets/themes/j1/adapter/js/customModule.js +2 -2
  122. data/assets/themes/j1/adapter/js/dropdowns.js +2 -2
  123. data/assets/themes/j1/adapter/js/fab.js +2 -2
  124. data/assets/themes/j1/adapter/js/framer.js +2 -2
  125. data/assets/themes/j1/adapter/js/gallery.js +325 -0
  126. data/assets/themes/j1/adapter/js/iconPicker.js +2 -2
  127. data/assets/themes/j1/adapter/js/j1.js +2 -2
  128. data/assets/themes/j1/adapter/js/lazyLoader.js +2 -2
  129. data/assets/themes/j1/adapter/js/{justifiedGallery.js → lightGallery.js} +54 -48
  130. data/assets/themes/j1/adapter/js/lightbox.js +2 -2
  131. data/assets/themes/j1/adapter/js/logger.js +2 -2
  132. data/assets/themes/j1/adapter/js/lunr.js +2 -2
  133. data/assets/themes/j1/adapter/js/masonry.js +80 -13
  134. data/assets/themes/j1/adapter/js/masterslider.js +2 -2
  135. data/assets/themes/j1/adapter/js/mmenu.js +2 -2
  136. data/assets/themes/j1/adapter/js/navigator.js +7 -4
  137. data/assets/themes/j1/adapter/js/particles.js +2 -2
  138. data/assets/themes/j1/adapter/js/rangeSlider.js +2 -2
  139. data/assets/themes/j1/adapter/js/rouge.js +2 -2
  140. data/assets/themes/j1/adapter/js/rtable.js +2 -2
  141. data/assets/themes/j1/adapter/js/rtextResizer.js +2 -2
  142. data/assets/themes/j1/adapter/js/scroller.js +2 -2
  143. data/assets/themes/j1/adapter/js/slick.js +1 -1
  144. data/assets/themes/j1/adapter/js/speak2me.js +183 -48
  145. data/assets/themes/j1/adapter/js/themeToggler.js +2 -2
  146. data/assets/themes/j1/adapter/js/themer.js +2 -2
  147. data/assets/themes/j1/adapter/js/toccer.js +2 -2
  148. data/assets/themes/j1/adapter/js/translator.js +1 -1
  149. data/assets/themes/j1/adapter/js/waves.js +2 -2
  150. data/assets/themes/j1/core/country-flags/css/theme/uno.css +1 -1
  151. data/assets/themes/j1/core/country-flags/css/theme/uno.min.css +1 -1
  152. data/assets/themes/j1/core/css/animate.css +2 -2
  153. data/assets/themes/j1/core/css/icon-fonts/fontawesome.css +2 -2
  154. data/assets/themes/j1/core/css/icon-fonts/iconify.css +5 -5
  155. data/assets/themes/j1/core/css/icon-fonts/mdi.css +9 -9
  156. data/assets/themes/j1/core/css/icon-fonts/mdib.css +7 -7
  157. data/assets/themes/j1/core/css/icon-fonts/mdil.css +10 -10
  158. data/assets/themes/j1/core/css/themes/bootstrap/bootstrap.css +1 -1
  159. data/assets/themes/j1/core/css/themes/unodark/bootstrap.css +30 -30
  160. data/assets/themes/j1/core/css/themes/unolight/bootstrap.css +107 -100
  161. data/assets/themes/j1/core/css/themes/unolight/bootstrap.min.css +1 -1
  162. data/assets/themes/j1/core/css/vendor.css +10 -10
  163. data/assets/themes/j1/core/js/template.js +240 -83
  164. data/assets/themes/j1/core/js/template.min.js +6 -6
  165. data/assets/themes/j1/core/js/template.min.js.map +1 -1
  166. data/assets/themes/j1/modules/backstretch/js/backstretch.js +1 -1
  167. data/assets/themes/j1/modules/backstretch/js/backstretch.min.js +1 -1
  168. data/assets/themes/j1/modules/bmd/js/bmd.js +1 -1
  169. data/assets/themes/j1/modules/bmd/js/bmd.min.js +1 -1
  170. data/assets/themes/j1/modules/bootstrap/js/bootstrap.js +2118 -2696
  171. data/assets/themes/j1/modules/bootstrap/js/bootstrap.js.map +1 -0
  172. data/assets/themes/j1/modules/bootstrap/js/bootstrap.min.js +3 -3
  173. data/assets/themes/j1/modules/bootstrap/js/bootstrap.min.js.map +1 -1
  174. data/assets/themes/j1/modules/carousel/css/carousel.css +1 -1
  175. data/assets/themes/j1/modules/carousel/css/carousel.min.css +1 -1
  176. data/assets/themes/j1/modules/carousel/css/carousel_transitions.css +1 -1
  177. data/assets/themes/j1/modules/carousel/css/carousel_transitions.min.css +1 -1
  178. data/assets/themes/j1/modules/carousel/css/theme/uno.css +1 -1
  179. data/assets/themes/j1/modules/carousel/css/theme/uno.min.css +1 -1
  180. data/assets/themes/j1/modules/clipboard/css/theme/uno.css +1 -1
  181. data/assets/themes/j1/modules/clipboard/css/theme/uno.min.css +1 -1
  182. data/assets/themes/j1/modules/dropdowns/css/theme/uno/dropdowns.css +1 -1
  183. data/assets/themes/j1/modules/dropdowns/css/theme/uno/dropdowns.min.css +1 -1
  184. data/assets/themes/j1/modules/dropdowns/js/cash.js +1 -1
  185. data/assets/themes/j1/modules/dropdowns/js/cash.min.js +1 -1
  186. data/assets/themes/j1/modules/dropdowns/js/dropdowns.js +1 -1
  187. data/assets/themes/j1/modules/dropdowns/js/dropdowns.min.js +1 -1
  188. data/assets/themes/j1/modules/fab/js/cash.js +1 -1
  189. data/assets/themes/j1/modules/fab/js/cash.min.js +1 -1
  190. data/assets/themes/j1/modules/fab/js/fab.js +1 -1
  191. data/assets/themes/j1/modules/fab/js/fab.min.js +1 -1
  192. data/assets/themes/j1/modules/iconPicker/css/universal-icon-picker.css +1 -1
  193. data/assets/themes/j1/modules/iconPicker/css/universal-icon-picker.min.css +1 -1
  194. data/assets/themes/j1/modules/iconPicker/js/universal-icon-picker.js +1 -1
  195. data/assets/themes/j1/modules/iconPicker/js/universal-icon-picker.min.js +1 -1
  196. data/assets/themes/j1/modules/iframeResizer/js/client/iframeResizer.contentWindow.min.js +0 -1
  197. data/assets/themes/j1/modules/iframeResizer/js/resizer.min.js +0 -1
  198. data/assets/themes/j1/modules/jquery/js/extensions/hasClass.js +1 -1
  199. data/assets/themes/j1/modules/jquery/js/extensions/hasClass.min.js +1 -1
  200. data/assets/themes/j1/modules/jquery/js/extensions/removeClass.js +1 -1
  201. data/assets/themes/j1/modules/jquery/js/extensions/removeClass.min.js +1 -1
  202. data/assets/themes/j1/modules/justifiedGallery/css/theme/uno.css +1 -1
  203. data/assets/themes/j1/modules/justifiedGallery/css/theme/uno.min.css +1 -1
  204. data/assets/themes/j1/modules/lightGallery/css/lg-transitions.css +984 -0
  205. data/assets/themes/j1/modules/lightGallery/css/lg-transitions.min.css +26 -0
  206. data/assets/themes/j1/modules/lightGallery/css/lightgallery-bundle.css +1627 -0
  207. data/assets/themes/j1/modules/lightGallery/css/lightgallery-bundle.min.css +25 -0
  208. data/assets/themes/j1/modules/lightGallery/css/plugins/lg-autoplay.css +67 -0
  209. data/assets/themes/j1/modules/lightGallery/css/plugins/lg-comments.css +157 -0
  210. data/assets/themes/j1/modules/lightGallery/css/plugins/lg-fullscreen.css +32 -0
  211. data/assets/themes/j1/modules/lightGallery/css/plugins/lg-medium-zoom.css +40 -0
  212. data/assets/themes/j1/modules/lightGallery/css/plugins/lg-pager.css +115 -0
  213. data/assets/themes/j1/modules/lightGallery/css/plugins/lg-rotate.css +74 -0
  214. data/assets/themes/j1/modules/lightGallery/css/plugins/lg-share.css +168 -0
  215. data/assets/themes/j1/modules/lightGallery/css/plugins/lg-thumbnail.css +133 -0
  216. data/assets/themes/j1/modules/lightGallery/css/plugins/lg-video.css +169 -0
  217. data/assets/themes/j1/modules/lightGallery/css/plugins/lg-zoom.css +141 -0
  218. data/assets/themes/j1/modules/lightGallery/css/themes/uno/uno.css +109 -0
  219. data/assets/themes/j1/modules/lightGallery/css/themes/uno/uno.min.css +19 -0
  220. data/assets/themes/j1/modules/lightGallery/{css/fonts → fonts}/lg.svg +35 -28
  221. data/assets/themes/j1/modules/lightGallery/fonts/lg.ttf +0 -0
  222. data/assets/themes/j1/modules/lightGallery/fonts/lg.woff +0 -0
  223. data/assets/themes/j1/modules/lightGallery/fonts/lg.woff2 +0 -0
  224. data/assets/themes/j1/modules/lightGallery/img/loading.gif +0 -0
  225. data/assets/themes/j1/modules/lightGallery/js/lightgallery.js +2759 -0
  226. data/assets/themes/j1/modules/lightGallery/js/lightgallery.min.js +25 -0
  227. data/assets/themes/j1/modules/lightGallery/js/plugins/lg-autoplay.js +275 -0
  228. data/assets/themes/j1/modules/lightGallery/js/plugins/lg-autoplay.min.js +26 -0
  229. data/assets/themes/j1/modules/lightGallery/js/plugins/lg-comment.js +230 -0
  230. data/assets/themes/j1/modules/lightGallery/js/plugins/lg-comment.min.js +26 -0
  231. data/assets/themes/j1/modules/lightGallery/js/plugins/lg-fullscreen.js +160 -0
  232. data/assets/themes/j1/modules/lightGallery/js/plugins/lg-fullscreen.min.js +26 -0
  233. data/assets/themes/j1/modules/lightGallery/js/plugins/lg-hash.js +223 -0
  234. data/assets/themes/j1/modules/lightGallery/js/plugins/lg-hash.min.js +27 -0
  235. data/assets/themes/j1/modules/lightGallery/js/plugins/lg-medium-zoom.js +157 -0
  236. data/assets/themes/j1/modules/lightGallery/js/plugins/lg-medium-zoom.min.js +26 -0
  237. data/assets/themes/j1/modules/lightGallery/js/plugins/lg-pager.js +164 -0
  238. data/assets/themes/j1/modules/lightGallery/js/plugins/lg-pager.min.js +26 -0
  239. data/assets/themes/j1/modules/lightGallery/js/plugins/lg-rotate.js +299 -0
  240. data/assets/themes/j1/modules/lightGallery/js/plugins/lg-rotate.min.js +26 -0
  241. data/assets/themes/j1/modules/lightGallery/js/plugins/lg-share.js +244 -0
  242. data/assets/themes/j1/modules/lightGallery/js/plugins/lg-share.min.js +27 -0
  243. data/assets/themes/j1/modules/lightGallery/js/plugins/lg-thumbnail.js +509 -0
  244. data/assets/themes/j1/modules/lightGallery/js/plugins/lg-thumbnail.min.js +26 -0
  245. data/assets/themes/j1/modules/lightGallery/js/plugins/lg-video.js +585 -0
  246. data/assets/themes/j1/modules/lightGallery/js/plugins/lg-video.min.js +27 -0
  247. data/assets/themes/j1/modules/lightGallery/js/plugins/lg-vimeo-thumbnail.js +207 -0
  248. data/assets/themes/j1/modules/lightGallery/js/plugins/lg-vimeo-thumbnail.min.js +26 -0
  249. data/assets/themes/j1/modules/lightGallery/js/plugins/lg-zoom.js +999 -0
  250. data/assets/themes/j1/modules/lightGallery/js/plugins/lg-zoom.min.js +26 -0
  251. data/assets/themes/j1/modules/lightbox/css/lightbox.css +1 -1
  252. data/assets/themes/j1/modules/lightbox/css/lightbox.min.css +1 -1
  253. data/assets/themes/j1/modules/lightbox/css/theme/uno.css +1 -1
  254. data/assets/themes/j1/modules/lightbox/css/theme/uno.min.css +1 -1
  255. data/assets/themes/j1/modules/lightbox/js/lightbox.js +1 -1
  256. data/assets/themes/j1/modules/lightbox/js/lightbox.min.js +1 -1
  257. data/assets/themes/j1/modules/lunr/js/j1.js +1 -1
  258. data/assets/themes/j1/modules/lunr/js/j1.min.js +1 -1
  259. data/assets/themes/j1/modules/masonry/js/utils/images_loaded.js +439 -0
  260. data/assets/themes/j1/modules/masonry/js/utils/images_loaded.min.js +12 -0
  261. data/assets/themes/j1/modules/masterslider/css/theme/uno.css +1 -1
  262. data/assets/themes/j1/modules/masterslider/css/theme/uno.min.css +1 -1
  263. data/assets/themes/j1/modules/mmenuLight/css/theme/uno/mmenu.css +1 -1
  264. data/assets/themes/j1/modules/mmenuLight/css/theme/uno/mmenu.min.css +1 -1
  265. data/assets/themes/j1/modules/mmenuLight/js/mmenu.js +1 -1
  266. data/assets/themes/j1/modules/mmenuLight/js/mmenu.min.js +1 -1
  267. data/assets/themes/j1/modules/mmenuLight/js/mmenu.polyfills.js +118 -0
  268. data/assets/themes/j1/modules/particles/skies/cavern1.png +0 -0
  269. data/assets/themes/j1/modules/particles/skies/cavern2.png +0 -0
  270. data/assets/themes/j1/modules/particles/skies/chrome.png +0 -0
  271. data/assets/themes/j1/modules/particles/skies/deep-space.jpg +0 -0
  272. data/assets/themes/j1/modules/particles/skies/deepblue.png +0 -0
  273. data/assets/themes/j1/modules/particles/skies/fire.png +0 -0
  274. data/assets/themes/j1/modules/particles/skies/fog.png +0 -0
  275. data/assets/themes/j1/modules/particles/skies/sky1.png +0 -0
  276. data/assets/themes/j1/modules/particles/skies/sky2.png +0 -0
  277. data/assets/themes/j1/modules/particles/skies/sky3.png +0 -0
  278. data/assets/themes/j1/modules/particles/skies/sky4.png +0 -0
  279. data/assets/themes/j1/modules/particles/skies/sky5.png +0 -0
  280. data/assets/themes/j1/modules/particles/skies/space1.png +0 -0
  281. data/assets/themes/j1/modules/particles/skies/space2.png +0 -0
  282. data/assets/themes/j1/modules/particles/skies/space3.png +0 -0
  283. data/assets/themes/j1/modules/particles/skies/starfield.png +0 -0
  284. data/assets/themes/j1/modules/particles/skies/sunorbit.png +0 -0
  285. data/assets/themes/j1/modules/particles/skies/sunset.png +0 -0
  286. data/assets/themes/j1/modules/particles/skies/toxic.png +0 -0
  287. data/assets/themes/j1/modules/particles/skies/underwater1.png +0 -0
  288. data/assets/themes/j1/modules/particles/skies/underwater2.png +0 -0
  289. data/assets/themes/j1/modules/particles/skies/underwater3.png +0 -0
  290. data/assets/themes/j1/modules/particles/skies/wtf.png +0 -0
  291. data/assets/themes/j1/modules/particles/sprites/slime.png +0 -0
  292. data/assets/themes/j1/modules/particles/sprites/slimeeyes.png +0 -0
  293. data/assets/themes/j1/modules/particles/sprites/snake.png +0 -0
  294. data/assets/themes/j1/modules/particles/sprites/snowflakes.png +0 -0
  295. data/assets/themes/j1/modules/particles/sprites/snowflakes_large.png +0 -0
  296. data/assets/themes/j1/modules/popper/js/popper.min.js +0 -1
  297. data/assets/themes/j1/modules/rangeSlider/css/theme/uno/nouislider.css +1 -1
  298. data/assets/themes/j1/modules/rangeSlider/css/theme/uno/nouislider.min.css +1 -1
  299. data/assets/themes/j1/modules/rouge/css/base16/theme.css +1 -1
  300. data/assets/themes/j1/modules/rouge/css/base16/theme.min.css +1 -1
  301. data/assets/themes/j1/modules/rouge/css/base16.dark/theme.css +1 -1
  302. data/assets/themes/j1/modules/rouge/css/base16.dark/theme.min.css +1 -1
  303. data/assets/themes/j1/modules/rouge/css/base16.light/theme.css +1 -1
  304. data/assets/themes/j1/modules/rouge/css/base16.light/theme.min.css +1 -1
  305. data/assets/themes/j1/modules/rouge/css/base16.monokai/theme.css +1 -1
  306. data/assets/themes/j1/modules/rouge/css/base16.monokai/theme.min.css +1 -1
  307. data/assets/themes/j1/modules/rouge/css/base16.monokai.dark/theme.css +1 -1
  308. data/assets/themes/j1/modules/rouge/css/base16.monokai.dark/theme.min.css +1 -1
  309. data/assets/themes/j1/modules/rouge/css/base16.monokai.light/theme.css +1 -1
  310. data/assets/themes/j1/modules/rouge/css/base16.monokai.light/theme.min.css +1 -1
  311. data/assets/themes/j1/modules/rouge/css/base16.solarized/theme.css +1 -1
  312. data/assets/themes/j1/modules/rouge/css/base16.solarized/theme.min.css +1 -1
  313. data/assets/themes/j1/modules/rouge/css/base16.solarized.dark/theme.css +1 -1
  314. data/assets/themes/j1/modules/rouge/css/base16.solarized.dark/theme.min.css +1 -1
  315. data/assets/themes/j1/modules/rouge/css/base16.solarized.light/theme.css +1 -1
  316. data/assets/themes/j1/modules/rouge/css/base16.solarized.light/theme.min.css +1 -1
  317. data/assets/themes/j1/modules/rouge/css/colorful/theme.css +1 -1
  318. data/assets/themes/j1/modules/rouge/css/colorful/theme.min.css +1 -1
  319. data/assets/themes/j1/modules/rouge/css/github/theme.css +1 -1
  320. data/assets/themes/j1/modules/rouge/css/github/theme.min.css +1 -1
  321. data/assets/themes/j1/modules/rouge/css/gruvbox/theme.css +1 -1
  322. data/assets/themes/j1/modules/rouge/css/gruvbox/theme.min.css +1 -1
  323. data/assets/themes/j1/modules/rouge/css/gruvbox.dark/theme.css +1 -1
  324. data/assets/themes/j1/modules/rouge/css/gruvbox.dark/theme.min.css +1 -1
  325. data/assets/themes/j1/modules/rouge/css/gruvbox.light/theme.css +1 -1
  326. data/assets/themes/j1/modules/rouge/css/gruvbox.light/theme.min.css +1 -1
  327. data/assets/themes/j1/modules/rouge/css/igorpro/theme.css +1 -1
  328. data/assets/themes/j1/modules/rouge/css/igorpro/theme.min.css +1 -1
  329. data/assets/themes/j1/modules/rouge/css/molokai/theme.css +1 -1
  330. data/assets/themes/j1/modules/rouge/css/molokai/theme.min.css +1 -1
  331. data/assets/themes/j1/modules/rouge/css/monokai/theme.css +1 -1
  332. data/assets/themes/j1/modules/rouge/css/monokai/theme.min.css +1 -1
  333. data/assets/themes/j1/modules/rouge/css/monokai.sublime/theme.css +1 -1
  334. data/assets/themes/j1/modules/rouge/css/monokai.sublime/theme.min.css +1 -1
  335. data/assets/themes/j1/modules/rouge/css/pastie/theme.css +1 -1
  336. data/assets/themes/j1/modules/rouge/css/pastie/theme.min.css +1 -1
  337. data/assets/themes/j1/modules/rouge/css/thankful_eyes/theme.css +1 -1
  338. data/assets/themes/j1/modules/rouge/css/thankful_eyes/theme.min.css +1 -1
  339. data/assets/themes/j1/modules/rouge/css/themes.txt +1 -1
  340. data/assets/themes/j1/modules/rouge/css/tulip/theme.css +1 -1
  341. data/assets/themes/j1/modules/rouge/css/tulip/theme.min.css +1 -1
  342. data/assets/themes/j1/modules/rouge/css/uno.dark/theme.css +1 -1
  343. data/assets/themes/j1/modules/rouge/css/uno.dark/theme.min.css +1 -1
  344. data/assets/themes/j1/modules/rouge/css/uno.light/theme.css +1 -1
  345. data/assets/themes/j1/modules/rouge/css/uno.light/theme.min.css +1 -1
  346. data/assets/themes/j1/modules/rouge/js/select.js +1 -1
  347. data/assets/themes/j1/modules/rtable/css/theme/uno/rtable.css +1 -1
  348. data/assets/themes/j1/modules/rtable/css/theme/uno/rtable.min.css +1 -1
  349. data/assets/themes/j1/modules/rtable/js/rtable.js +1 -1
  350. data/assets/themes/j1/modules/rtable/js/rtable.min.js +1 -1
  351. data/assets/themes/j1/modules/scroller/css/theme/uno.css +1 -1
  352. data/assets/themes/j1/modules/scroller/css/theme/uno.min.css +1 -1
  353. data/assets/themes/j1/modules/scroller/js/scroller.min.js +1 -1
  354. data/assets/themes/j1/modules/slick/lightbox/css/theme/uno.css +1 -1
  355. data/assets/themes/j1/modules/slick/lightbox/css/theme/uno.min.css +1 -1
  356. data/assets/themes/j1/modules/slick/lightbox/js/slick-lightbox.min.js +0 -1
  357. data/assets/themes/j1/modules/slick/slider/css/theme/uno.css +1 -1
  358. data/assets/themes/j1/modules/slick/slider/css/theme/uno.min.css +1 -1
  359. data/assets/themes/j1/modules/spinner/css/spin.css +1 -1
  360. data/assets/themes/j1/modules/spinner/css/spin.min.css +1 -1
  361. data/assets/themes/j1/modules/spinner/js/spin.js +1 -1
  362. data/assets/themes/j1/modules/spinner/js/spin.min.js +1 -1
  363. data/assets/themes/j1/modules/themeSwitcher/js/switcher.js +1 -1
  364. data/assets/themes/j1/modules/themeSwitcher/js/switcher.min.js +1 -1
  365. data/assets/themes/j1/modules/translator/css/translator.css +1 -1
  366. data/assets/themes/j1/modules/translator/css/translator.min.css +1 -1
  367. data/assets/themes/j1/modules/videojs/css/themes/city.css +74 -74
  368. data/assets/themes/j1/modules/videojs/css/themes/city.min.css +3 -4
  369. data/assets/themes/j1/modules/videojs/css/themes/fantasy.css +3 -3
  370. data/assets/themes/j1/modules/videojs/css/themes/fantasy.min.css +3 -4
  371. data/assets/themes/j1/modules/videojs/css/themes/forest.css +4 -3
  372. data/assets/themes/j1/modules/videojs/css/themes/forest.min.css +3 -4
  373. data/assets/themes/j1/modules/videojs/css/themes/sea.css +2 -2
  374. data/assets/themes/j1/modules/videojs/css/themes/sea.min.css +3 -4
  375. data/assets/themes/j1/modules/videojs/css/themes/uno.css +151 -0
  376. data/assets/themes/j1/modules/videojs/css/themes/uno.min.css +17 -0
  377. data/assets/themes/j1/modules/videojs/css/video-js.css +12 -0
  378. data/assets/themes/j1/modules/videojs/css/video-js.min.css +12 -0
  379. data/assets/themes/j1/modules/videojs/js/plugins/dm/LICENSE +19 -0
  380. data/assets/themes/j1/modules/videojs/js/plugins/dm/README.md +94 -0
  381. data/assets/themes/j1/modules/videojs/js/plugins/dm/api/README.md +7 -0
  382. data/assets/themes/j1/modules/videojs/js/plugins/dm/api/dailymotion.min.js +29 -0
  383. data/assets/themes/j1/modules/videojs/js/plugins/dm/api/dailymotion.player.min.js +80 -0
  384. data/assets/themes/j1/modules/videojs/js/plugins/dm/dailymotion.js +603 -0
  385. data/assets/themes/j1/modules/videojs/js/plugins/dm/dailymotion.min.js +16 -0
  386. data/assets/themes/j1/modules/videojs/js/plugins/dm/examples/dailymotion-controls.html +18 -0
  387. data/assets/themes/j1/modules/videojs/js/plugins/dm/examples/dailymotion-javascript.html +27 -0
  388. data/assets/themes/j1/modules/videojs/js/plugins/dm/examples/dailymotion-playlist.html +19 -0
  389. data/assets/themes/j1/modules/videojs/js/plugins/dm/examples/global-parameters.html +28 -0
  390. data/assets/themes/j1/modules/videojs/js/plugins/dm/examples/simple.html +20 -0
  391. data/assets/themes/j1/modules/videojs/js/plugins/dm/examples/switch.html +37 -0
  392. data/assets/themes/j1/modules/videojs/js/plugins/vm/LICENSE +21 -0
  393. data/assets/themes/j1/modules/videojs/js/plugins/vm/README.md +15 -0
  394. data/assets/themes/j1/modules/videojs/js/plugins/vm/api/README.md +1818 -0
  395. data/assets/themes/j1/modules/videojs/js/plugins/vm/api/player.min.js +23 -0
  396. data/assets/themes/j1/modules/videojs/js/plugins/vm/api/vimeo.js +3562 -0
  397. data/assets/themes/j1/modules/videojs/js/plugins/vm/api/vimeo.min.js +35 -0
  398. data/assets/themes/j1/modules/videojs/js/plugins/vm/examples/index.html +33 -0
  399. data/assets/themes/j1/modules/videojs/js/plugins/vm/examples/player/index.html +37 -0
  400. data/assets/themes/j1/modules/videojs/js/plugins/vm/vimeo.js +521 -0
  401. data/assets/themes/j1/modules/videojs/js/plugins/vm/vimeo.min.js +15 -0
  402. data/assets/themes/j1/modules/videojs/js/plugins/wt/api/Readme.txt +20 -0
  403. data/assets/themes/j1/modules/videojs/js/plugins/wt/api/WistiaPlayer.ts +1617 -0
  404. data/assets/themes/j1/modules/videojs/js/plugins/wt/api/wistia.min.js +2 -0
  405. data/assets/themes/j1/modules/videojs/js/plugins/wt/wistia.js +383 -0
  406. data/assets/themes/j1/modules/videojs/js/plugins/wt/wistia.min.js +18 -0
  407. data/assets/themes/j1/modules/videojs/js/plugins/yt/README.md +115 -0
  408. data/assets/themes/j1/modules/videojs/js/plugins/yt/api/youtube.min.js +20 -0
  409. data/assets/themes/j1/modules/videojs/js/plugins/yt/examples/global-parameters.html +32 -0
  410. data/assets/themes/j1/modules/videojs/js/plugins/yt/examples/simple.html +20 -0
  411. data/assets/themes/j1/modules/videojs/js/plugins/yt/examples/switch.html +37 -0
  412. data/assets/themes/j1/modules/videojs/js/plugins/yt/examples/youtube-controls.html +18 -0
  413. data/assets/themes/j1/modules/videojs/js/plugins/yt/examples/youtube-javascript.html +27 -0
  414. data/assets/themes/j1/modules/videojs/js/plugins/yt/examples/youtube-list.html +19 -0
  415. data/assets/themes/j1/modules/videojs/js/plugins/yt/examples/youtube-playlist.html +19 -0
  416. data/assets/themes/j1/modules/videojs/js/plugins/yt/youtube.js +832 -0
  417. data/assets/themes/j1/modules/videojs/js/plugins/yt/youtube.min.js +16 -0
  418. data/assets/themes/j1/modules/videojs/js/video.js +40610 -32915
  419. data/assets/themes/j1/modules/videojs/js/video.min.js +33 -20
  420. data/lib/j1/version.rb +1 -1
  421. data/lib/j1_app/j1_auth_manager/auth_manager.rb +1 -1
  422. data/lib/j1_app/j1_auth_manager/warden_omniauth.rb +1 -1
  423. data/lib/j1_app/omniauth/strategies/github.rb +1 -1
  424. data/lib/starter_web/Gemfile +3 -3
  425. data/lib/starter_web/README.md +5 -5
  426. data/lib/starter_web/_config.yml +2 -2
  427. data/lib/starter_web/_data/_defaults/categories.yml +1 -1
  428. data/lib/starter_web/_data/_defaults/colors.yml +1 -1
  429. data/lib/starter_web/_data/_defaults/font_sizes.yml +1 -1
  430. data/lib/starter_web/_data/_defaults/j1_config.yml +1 -1
  431. data/lib/starter_web/_data/_defaults/private.yml +1 -1
  432. data/lib/starter_web/_data/_defaults/resources.yml +1 -1
  433. data/lib/starter_web/_data/apps/defaults/justifiedGalleryCustomizer.yml +1 -1
  434. data/lib/starter_web/_data/apps/justifiedGalleryCustomizer.yml +1 -1
  435. data/lib/starter_web/_data/asciidoc2pdf/themes/j1-theme.yml +1 -1
  436. data/lib/starter_web/_data/blocks/banner.yml +1 -1
  437. data/lib/starter_web/_data/blocks/defaults/banner.yml +1 -1
  438. data/lib/starter_web/_data/blocks/defaults/footer.yml +1 -1
  439. data/lib/starter_web/_data/blocks/defaults/panel.yml +1 -1
  440. data/lib/starter_web/_data/blocks/footer.yml +2 -2
  441. data/lib/starter_web/_data/blocks/panel.yml +1 -1
  442. data/lib/starter_web/_data/categories.yml +1 -1
  443. data/lib/starter_web/_data/colors.yml +1 -1
  444. data/lib/starter_web/_data/font_sizes.yml +1 -1
  445. data/lib/starter_web/_data/j1_config.yml +1 -1
  446. data/lib/starter_web/_data/layouts/collection.yml +1 -1
  447. data/lib/starter_web/_data/layouts/default.yml +1 -1
  448. data/lib/starter_web/_data/layouts/home.yml +1 -1
  449. data/lib/starter_web/_data/layouts/news_panel_posts.yml +1 -1
  450. data/lib/starter_web/_data/layouts/page.yml +1 -1
  451. data/lib/starter_web/_data/layouts/post.yml +1 -1
  452. data/lib/starter_web/_data/layouts/raw.yml +1 -1
  453. data/lib/starter_web/_data/modules/advertising.yml +2 -2
  454. data/lib/starter_web/_data/modules/analytics.yml +1 -1
  455. data/lib/starter_web/_data/modules/attics.yml +1 -1
  456. data/lib/starter_web/_data/modules/authentication.yml +1 -1
  457. data/lib/starter_web/_data/modules/blog_navigator.yml +1 -1
  458. data/lib/starter_web/_data/modules/carousel.yml +1 -1
  459. data/lib/starter_web/_data/modules/comments.yml +1 -1
  460. data/lib/starter_web/_data/modules/cookieconsent.yml +1 -1
  461. data/lib/starter_web/_data/modules/cookies.yml +1 -1
  462. data/lib/starter_web/_data/modules/defaults/advertising.yml +1 -1
  463. data/lib/starter_web/_data/modules/defaults/analytics.yml +1 -1
  464. data/lib/starter_web/_data/modules/defaults/attics.yml +1 -1
  465. data/lib/starter_web/_data/modules/defaults/authentication.yml +1 -1
  466. data/lib/starter_web/_data/modules/defaults/blog_navigator.yml +1 -1
  467. data/lib/starter_web/_data/modules/defaults/carousel.yml +1 -1
  468. data/lib/starter_web/_data/modules/defaults/comments.yml +1 -1
  469. data/lib/starter_web/_data/modules/defaults/cookieconsent.yml +1 -1
  470. data/lib/starter_web/_data/modules/defaults/cookies.yml +1 -1
  471. data/lib/starter_web/_data/modules/defaults/dropdowns.yml +1 -1
  472. data/lib/starter_web/_data/modules/defaults/fab.yml +1 -1
  473. data/lib/starter_web/_data/modules/defaults/framer.yml +1 -1
  474. data/lib/starter_web/_data/modules/defaults/{justifiedGallery.yml → gallery.yml} +18 -28
  475. data/lib/starter_web/_data/modules/defaults/iconPicker.yml +1 -1
  476. data/lib/starter_web/_data/modules/defaults/lazyLoader.yml +1 -1
  477. data/lib/starter_web/_data/modules/defaults/lightGallery.yml +8 -6
  478. data/lib/starter_web/_data/modules/defaults/lightbox.yml +1 -1
  479. data/lib/starter_web/_data/modules/defaults/log4javascript.yml +1 -1
  480. data/lib/starter_web/_data/modules/defaults/log4r.yml +1 -1
  481. data/lib/starter_web/_data/modules/defaults/lunr.yml +1 -1
  482. data/lib/starter_web/_data/modules/defaults/masonry.yml +53 -13
  483. data/lib/starter_web/_data/modules/defaults/masterslider.yml +1 -1
  484. data/lib/starter_web/_data/modules/defaults/navigator.yml +1 -1
  485. data/lib/starter_web/_data/modules/defaults/particles.yml +1 -1
  486. data/lib/starter_web/_data/modules/defaults/rangeSlider.yml +1 -1
  487. data/lib/starter_web/_data/modules/defaults/rtable.yml +1 -1
  488. data/lib/starter_web/_data/modules/defaults/scroller.yml +1 -1
  489. data/lib/starter_web/_data/modules/defaults/slick.yml +1 -1
  490. data/lib/starter_web/_data/modules/defaults/speak2me.yml +8 -5
  491. data/lib/starter_web/_data/modules/defaults/theme_toggler.yml +1 -1
  492. data/lib/starter_web/_data/modules/defaults/themer.yml +1 -1
  493. data/lib/starter_web/_data/modules/defaults/toccer.yml +1 -1
  494. data/lib/starter_web/_data/modules/defaults/translator.yml +1 -1
  495. data/lib/starter_web/_data/modules/defaults/waves.yml +1 -1
  496. data/lib/starter_web/_data/modules/dropdowns.yml +1 -1
  497. data/lib/starter_web/_data/modules/fab.yml +1 -1
  498. data/lib/starter_web/_data/modules/framer.yml +1 -1
  499. data/lib/starter_web/_data/modules/gallery.yml +874 -0
  500. data/lib/starter_web/_data/modules/iconPicker.yml +1 -1
  501. data/lib/starter_web/_data/modules/lazyLoader.yml +1 -1
  502. data/lib/starter_web/_data/modules/lightGallery.yml +8 -5
  503. data/lib/starter_web/_data/modules/lightbox.yml +1 -1
  504. data/lib/starter_web/_data/modules/log4javascript.yml +1 -1
  505. data/lib/starter_web/_data/modules/log4r.yml +1 -1
  506. data/lib/starter_web/_data/modules/lunr.yml +1 -1
  507. data/lib/starter_web/_data/modules/masonry.yml +401 -87
  508. data/lib/starter_web/_data/modules/masterslider.yml +1 -1
  509. data/lib/starter_web/_data/modules/navigator.yml +1 -1
  510. data/lib/starter_web/_data/modules/navigator_menu.yml +18 -4
  511. data/lib/starter_web/_data/modules/nbinteract.yml +1 -1
  512. data/lib/starter_web/_data/modules/particles.yml +1 -1
  513. data/lib/starter_web/_data/modules/rangeSlider.yml +1 -1
  514. data/lib/starter_web/_data/modules/rtable.yml +1 -1
  515. data/lib/starter_web/_data/modules/scroller.yml +1 -1
  516. data/lib/starter_web/_data/modules/slick.yml +1 -1
  517. data/lib/starter_web/_data/modules/speak2me.yml +1 -1
  518. data/lib/starter_web/_data/modules/theme_toggler.yml +1 -1
  519. data/lib/starter_web/_data/modules/themer.yml +1 -1
  520. data/lib/starter_web/_data/modules/toccer.yml +1 -1
  521. data/lib/starter_web/_data/modules/translator.yml +1 -1
  522. data/lib/starter_web/_data/modules/waves.yml +1 -1
  523. data/lib/starter_web/_data/plugins/defaults/feed.yml +1 -1
  524. data/lib/starter_web/_data/plugins/defaults/paginator.yml +1 -1
  525. data/lib/starter_web/_data/plugins/defaults/seo-tags.yml +1 -1
  526. data/lib/starter_web/_data/plugins/defaults/sitemap.yml +1 -1
  527. data/lib/starter_web/_data/plugins/feed.yml +1 -1
  528. data/lib/starter_web/_data/plugins/paginator.yml +1 -1
  529. data/lib/starter_web/_data/plugins/seo-tags.yml +1 -1
  530. data/lib/starter_web/_data/plugins/sitemap.yml +1 -1
  531. data/lib/starter_web/_data/private.yml +1 -1
  532. data/lib/starter_web/_data/resources.yml +190 -118
  533. data/lib/starter_web/_data/templates/feed.xml +2 -2
  534. data/lib/starter_web/_data/templates/robots.txt +1 -1
  535. data/lib/starter_web/_data/templates/seo-tags.html +1 -1
  536. data/lib/starter_web/_data/templates/sitemap.xml +1 -1
  537. data/lib/starter_web/_data/utilities/defaults/util_srv.yml +1 -1
  538. data/lib/starter_web/_data/utilities/util_srv.yml +1 -1
  539. data/lib/starter_web/_includes/custom/static/bs5_accordion.html +1 -1
  540. data/lib/starter_web/_includes/custom/templates/bs5_accordion.html +1 -1
  541. data/lib/starter_web/_includes/custom/templates/collection_panel.html +1 -1
  542. data/lib/starter_web/_includes/custom/templates/custom_header.html +1 -1
  543. data/lib/starter_web/_includes/custom/templates/people_panel.html +1 -1
  544. data/lib/starter_web/_includes/google/static/google_ad__your-slot-id.html +1 -1
  545. data/lib/starter_web/_includes/google/templates/google_ads.html +1 -1
  546. data/lib/starter_web/_plugins/asciidoctor/admonition-block-answer.rb +3 -2
  547. data/lib/starter_web/_plugins/asciidoctor/admonition-block-question.rb +7 -6
  548. data/lib/starter_web/_plugins/asciidoctor/banner.rb +8 -5
  549. data/lib/starter_web/_plugins/asciidoctor/callout.rb +10 -8
  550. data/lib/starter_web/_plugins/asciidoctor/carousel-block.rb +14 -8
  551. data/lib/starter_web/_plugins/asciidoctor/conum.rb +3 -1
  552. data/lib/starter_web/_plugins/asciidoctor/dailymotion-block.rb +83 -0
  553. data/lib/starter_web/_plugins/asciidoctor/fab-icon-inline.rb +8 -5
  554. data/lib/starter_web/_plugins/asciidoctor/fas-icon-inline.rb +8 -5
  555. data/lib/starter_web/_plugins/asciidoctor/flag-icon-inline.rb +8 -5
  556. data/lib/starter_web/_plugins/asciidoctor/gallery-block.rb +50 -44
  557. data/lib/starter_web/_plugins/asciidoctor/gist-block.rb +56 -52
  558. data/lib/starter_web/_plugins/asciidoctor/google-ad-block.rb +52 -47
  559. data/lib/starter_web/_plugins/asciidoctor/iconify-icon-inline.rb +8 -5
  560. data/lib/starter_web/_plugins/asciidoctor/lightbox-block.rb +88 -82
  561. data/lib/starter_web/_plugins/asciidoctor/lorem_inline.rb +5 -4
  562. data/lib/starter_web/_plugins/asciidoctor/masonry-block.rb +13 -7
  563. data/lib/starter_web/_plugins/asciidoctor/masterslider-block.rb +54 -48
  564. data/lib/starter_web/_plugins/asciidoctor/mdi-icon-inline.rb +2 -1
  565. data/lib/starter_web/_plugins/asciidoctor/mdib-icon-inline.rb +2 -1
  566. data/lib/starter_web/_plugins/asciidoctor/mdil-icon-inline.rb +2 -1
  567. data/lib/starter_web/_plugins/asciidoctor/panel.rb +9 -5
  568. data/lib/starter_web/_plugins/asciidoctor/placeholder-inline.rb +4 -3
  569. data/lib/starter_web/_plugins/asciidoctor/range-slider-block.rb +49 -44
  570. data/lib/starter_web/_plugins/asciidoctor/shout-block.rb +6 -7
  571. data/lib/starter_web/_plugins/asciidoctor/slick-block.rb +12 -6
  572. data/lib/starter_web/_plugins/asciidoctor/textbook-block.rb +9 -5
  573. data/lib/starter_web/_plugins/asciidoctor/twitter-emoji-inline.rb +4 -1
  574. data/lib/starter_web/_plugins/asciidoctor/video-block.rb +65 -0
  575. data/lib/starter_web/_plugins/asciidoctor/videojs-block.rb +82 -0
  576. data/lib/starter_web/_plugins/asciidoctor/vimeo-block.rb +82 -0
  577. data/lib/starter_web/_plugins/asciidoctor/wistia-block.rb +87 -0
  578. data/lib/starter_web/_plugins/asciidoctor/youtube-block.rb +95 -0
  579. data/lib/starter_web/_plugins/filter/debug.rb +1 -1
  580. data/lib/starter_web/_plugins/filter/encodeBase64.rb +1 -1
  581. data/lib/starter_web/_plugins/filter/encryptAES.rb +1 -1
  582. data/lib/starter_web/_plugins/filter/filters.rb +1 -1
  583. data/lib/starter_web/_plugins/filter/liquify.rb +1 -1
  584. data/lib/starter_web/_plugins/filter/minifyJS.rb +1 -1
  585. data/lib/starter_web/_plugins/filter/minifyJSON.rb +1 -1
  586. data/lib/starter_web/_plugins/filter/prettify.rb +1 -1
  587. data/lib/starter_web/_plugins/filter/xml_prettify.rb +1 -1
  588. data/lib/starter_web/_plugins/helper/symlink_watcher.rb +1 -1
  589. data/lib/starter_web/_plugins/i18n/date.rb +1 -1
  590. data/lib/starter_web/_plugins/index/lunr.rb +2 -2
  591. data/lib/starter_web/_plugins/seo/j1-feed.rb +1 -1
  592. data/lib/starter_web/_plugins/seo/j1-seo-tags.rb +1 -1
  593. data/lib/starter_web/_plugins/seo/j1-sitemap.rb +1 -1
  594. data/lib/starter_web/assets/images/icons/videojs/videojs-logo.png +0 -0
  595. data/lib/starter_web/assets/images/icons/videojs/videojs-poster.png +0 -0
  596. data/lib/starter_web/assets/videos/gallery/_video_james_carpool_caraoke_poster.jpg +0 -0
  597. data/lib/starter_web/assets/videos/gallery/html5/video1-poster.jpg +0 -0
  598. data/lib/starter_web/assets/videos/gallery/html5/video1.subtitles.vtt +39 -0
  599. data/lib/starter_web/assets/videos/gallery/html5/video2-poster.jpg +0 -0
  600. data/lib/starter_web/assets/videos/gallery/html5/303/237video2-poster.jpg +0 -0
  601. data/lib/starter_web/assets/videos/gallery/video1-poster.1920..jpg +0 -0
  602. data/lib/starter_web/assets/videos/gallery/video_adele_last_carpool_caraoke_poster.1920.jpg +0 -0
  603. data/lib/starter_web/assets/videos/gallery/video_adele_last_carpool_caraoke_poster.jpg +0 -0
  604. data/lib/starter_web/assets/videos/gallery/video_gaga-poster.jpg +0 -0
  605. data/lib/starter_web/assets/videos/gallery/video_james_carpool_caraoke_poster.jpg +0 -0
  606. data/lib/starter_web/collections/posts/public/featured/_posts/0000-00-00-welcome-to-j1.adoc.erb +1 -1
  607. data/lib/starter_web/config.ru +1 -1
  608. data/lib/starter_web/dot.gitattributes +1 -1
  609. data/lib/starter_web/dot.nojekyll +1 -1
  610. data/lib/starter_web/package.json +1 -1
  611. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/documents/100_converter/111_about_the_converter.asciidoc +5 -0
  612. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/documents/100_converter/112_getting_started.asciidoc +3 -0
  613. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/documents/100_converter/113_themes.asciidoc +1 -0
  614. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/documentation.adoc +11 -7
  615. data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/_includes/documents/100_chapter.asciidoc +27 -11
  616. data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/_includes/documents/200_chapter.asciidoc +3 -0
  617. data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/multi.adoc +12 -7
  618. data/lib/starter_web/pages/public/asciidoc_skeletons/simple-document/simple.adoc +14 -7
  619. data/lib/starter_web/pages/public/features/general.adoc +12 -1
  620. data/lib/starter_web/pages/public/features/template.adoc +37 -38
  621. data/lib/starter_web/pages/public/learn/bookshelf/article_previewer/viewer_all_books.adoc +4 -3
  622. data/lib/starter_web/pages/public/learn/bookshelf/article_previewer/viewer_biography.adoc +2 -3
  623. data/lib/starter_web/pages/public/learn/bookshelf/article_previewer/viewer_fantasy.adoc +2 -2
  624. data/lib/starter_web/pages/public/learn/bookshelf/article_previewer/viewer_romance.adoc +2 -2
  625. data/lib/starter_web/pages/public/learn/bookshelf/jekyll_collections.adoc +6 -5
  626. data/lib/starter_web/pages/public/learn/roundtrip/_includes/attributes.asciidoc +1 -0
  627. data/lib/starter_web/pages/public/learn/roundtrip/_includes/documents/themes_rouge.asciidoc +4 -0
  628. data/lib/starter_web/pages/public/learn/roundtrip/asciidoc_extensions.adoc +6 -5
  629. data/lib/starter_web/pages/public/learn/roundtrip/bootstrap_themes.adoc +2 -0
  630. data/lib/starter_web/pages/public/learn/roundtrip/highlghter_rouge.adoc +7 -2
  631. data/lib/starter_web/pages/public/learn/roundtrip/icon_fonts.adoc +7 -2
  632. data/lib/starter_web/pages/public/learn/roundtrip/lunr_search.adoc +12 -3
  633. data/lib/starter_web/pages/public/learn/roundtrip/modal_extentions.adoc +4 -2
  634. data/lib/starter_web/pages/public/learn/roundtrip/present_images.adoc +84 -93
  635. data/lib/starter_web/pages/public/learn/roundtrip/present_videos.adoc +264 -64
  636. data/lib/starter_web/pages/public/learn/roundtrip/responsive_tables.adoc +5 -2
  637. data/lib/starter_web/pages/public/learn/roundtrip/typography.adoc +1 -0
  638. data/lib/starter_web/pages/public/learn/where_to_go.adoc +2 -1
  639. data/lib/starter_web/pages/public/legal/en/100_copyright.adoc +3 -1
  640. data/lib/starter_web/pages/public/legal/en/200_impress.adoc +3 -1
  641. data/lib/starter_web/pages/public/legal/en/300_privacy.adoc +2 -39
  642. data/lib/starter_web/pages/public/legal/en/400_comment_policy.adoc +2 -2
  643. data/lib/starter_web/pages/public/panels/intro_panel/panel.adoc +3 -2
  644. data/lib/starter_web/pages/public/plans/plans.adoc +14 -5
  645. data/lib/starter_web/pages/public/tools/previewer/_includes/attributes.asciidoc +69 -0
  646. data/lib/starter_web/pages/public/tools/previewer/_includes/documents/readme +0 -0
  647. data/lib/starter_web/pages/public/tools/previewer/preview_bootstrap_theme.adoc +3093 -3104
  648. data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
  649. data/lib/starter_web/utilsrv/package.json +1 -1
  650. data/lib/starter_web/utilsrv/server.js +1 -1
  651. metadata +170 -94
  652. data/assets/data/galleries.json +0 -156
  653. data/assets/themes/j1/adapter/js/justifiedGalleryCustomizer.js +0 -360
  654. data/assets/themes/j1/modules/backstretch/js/v2.1.16/backstretch.js +0 -1694
  655. data/assets/themes/j1/modules/backstretch/js/v2.1.16/backstretch.min.js +0 -19
  656. data/assets/themes/j1/modules/iframeResizer/js/client/iframeResizer.contentWindow.map +0 -1
  657. data/assets/themes/j1/modules/iframeResizer/js/resizer.map +0 -1
  658. data/assets/themes/j1/modules/justifiedGallery/_versions/v3.7.0/css/justifiedGallery.css +0 -110
  659. data/assets/themes/j1/modules/justifiedGallery/_versions/v3.7.0/css/justifiedGallery.min.css +0 -110
  660. data/assets/themes/j1/modules/justifiedGallery/_versions/v3.7.0/css/theme/uno.css +0 -23
  661. data/assets/themes/j1/modules/justifiedGallery/_versions/v3.7.0/js/justifiedGallery.3.7.0.js +0 -1229
  662. data/assets/themes/j1/modules/justifiedGallery/_versions/v3.7.0/js/justifiedGallery.js +0 -1229
  663. data/assets/themes/j1/modules/justifiedGallery/_versions/v3.7.0/js/justifiedGallery.min.js +0 -8
  664. data/assets/themes/j1/modules/justifiedGallery/_versions/v3.7.0/less/.csslintrc +0 -20
  665. data/assets/themes/j1/modules/justifiedGallery/_versions/v3.7.0/less/justifiedGallery.less +0 -113
  666. data/assets/themes/j1/modules/justifiedGallery/_versions/v3.8.0/css/justifiedGallery.css +0 -110
  667. data/assets/themes/j1/modules/justifiedGallery/_versions/v3.8.0/css/justifiedGallery.min.css +0 -110
  668. data/assets/themes/j1/modules/justifiedGallery/_versions/v3.8.0/js/justifiedGallery.js +0 -1245
  669. data/assets/themes/j1/modules/justifiedGallery/_versions/v3.8.0/js/justifiedGallery.min.js +0 -7
  670. data/assets/themes/j1/modules/justifiedGallery/css/_archived/justifiedGallery.css +0 -110
  671. data/assets/themes/j1/modules/justifiedGallery/css/_archived/justifiedGallery.min.css +0 -110
  672. data/assets/themes/j1/modules/lightGallery/css/core/lg-fb-comment-box.css +0 -58
  673. data/assets/themes/j1/modules/lightGallery/css/core/lg-fb-comment-box.min.css +0 -5
  674. data/assets/themes/j1/modules/lightGallery/css/core/lg-transitions.css +0 -778
  675. data/assets/themes/j1/modules/lightGallery/css/core/lg-transitions.min.css +0 -5
  676. data/assets/themes/j1/modules/lightGallery/css/core/lightgallery.css +0 -981
  677. data/assets/themes/j1/modules/lightGallery/css/core/lightgallery.min.css +0 -5
  678. data/assets/themes/j1/modules/lightGallery/css/fonts/lg.eot +0 -0
  679. data/assets/themes/j1/modules/lightGallery/css/fonts/lg.ttf +0 -0
  680. data/assets/themes/j1/modules/lightGallery/css/fonts/lg.woff +0 -0
  681. data/assets/themes/j1/modules/lightGallery/css/themes/uno.css +0 -262
  682. data/assets/themes/j1/modules/lightGallery/css/themes/uno.min.css +0 -15
  683. data/assets/themes/j1/modules/lightGallery/js/core/j1/lightgallery.js +0 -1375
  684. data/assets/themes/j1/modules/lightGallery/js/core/j1/lightgallery.min.js +0 -5
  685. data/assets/themes/j1/modules/lightGallery/js/core/lightgallery.js +0 -1362
  686. data/assets/themes/j1/modules/lightGallery/js/core/lightgallery.min.js +0 -4
  687. data/assets/themes/j1/modules/lightGallery/js/modules/lg-autoplay.js +0 -206
  688. data/assets/themes/j1/modules/lightGallery/js/modules/lg-autoplay.min.js +0 -5
  689. data/assets/themes/j1/modules/lightGallery/js/modules/lg-fullscreen.js +0 -126
  690. data/assets/themes/j1/modules/lightGallery/js/modules/lg-fullscreen.min.js +0 -5
  691. data/assets/themes/j1/modules/lightGallery/js/modules/lg-hash.js +0 -101
  692. data/assets/themes/j1/modules/lightGallery/js/modules/lg-hash.min.js +0 -5
  693. data/assets/themes/j1/modules/lightGallery/js/modules/lg-pager.js +0 -105
  694. data/assets/themes/j1/modules/lightGallery/js/modules/lg-pager.min.js +0 -5
  695. data/assets/themes/j1/modules/lightGallery/js/modules/lg-share.js +0 -107
  696. data/assets/themes/j1/modules/lightGallery/js/modules/lg-share.min.js +0 -5
  697. data/assets/themes/j1/modules/lightGallery/js/modules/lg-thumbnail.js +0 -486
  698. data/assets/themes/j1/modules/lightGallery/js/modules/lg-thumbnail.min.js +0 -7
  699. data/assets/themes/j1/modules/lightGallery/js/modules/lg-zoom.js +0 -527
  700. data/assets/themes/j1/modules/lightGallery/js/modules/lg-zoom.min.js +0 -5
  701. data/assets/themes/j1/modules/msDropdown/js/msDropdown.min.js.map +0 -1
  702. data/assets/themes/j1/modules/popper/js/popper.min.js.map +0 -1
  703. data/assets/themes/j1/modules/rangeSlider/js/15.5.1/nouislider.js +0 -2337
  704. data/assets/themes/j1/modules/rangeSlider/js/15.5.1/nouislider.min.js +0 -1
  705. data/assets/themes/j1/modules/rangeSlider/js/9.1.0/nouislider.js +0 -2534
  706. data/assets/themes/j1/modules/slick/lightbox/js/slick-lightbox.min.js.map +0 -1
  707. data/assets/themes/j1/modules/themeSwitcher/js/_unsued/switcher.1.js +0 -454
  708. data/assets/themes/j1/modules/vimeo/froogaloop/js/froogaloop2.js +0 -4
  709. data/assets/themes/j1/modules/vimeo/froogaloop/js/froogaloop2.min.js +0 -4
  710. data/assets/themes/j1/modules/vimeo/player/js/player.js +0 -2138
  711. data/assets/themes/j1/modules/vimeo/player/js/player.js.map +0 -1
  712. data/assets/themes/j1/modules/vimeo/player/js/player.min.js +0 -2
  713. data/assets/themes/j1/modules/vimeo/player/js/player.min.js.map +0 -1
  714. data/lib/starter_web/_data/modules/justifiedGallery.yml +0 -556
  715. data/lib/starter_web/assets/videos/gallery/vk/hai.jpg +0 -0
  716. data/lib/starter_web/assets/videos/gallery/vk/otter.jpg +0 -0
  717. /data/assets/themes/j1/modules/backstretch/{LICENSE-MIT → LICENSE} +0 -0
  718. /data/assets/themes/j1/modules/lightGallery/css/themes/{icons → uno/icons}/animation-w.png +0 -0
  719. /data/assets/themes/j1/modules/lightGallery/css/themes/{icons → uno/icons}/customize-w.png +0 -0
  720. /data/assets/themes/j1/modules/lightGallery/css/themes/{icons → uno/icons}/dynamic-w.png +0 -0
  721. /data/assets/themes/j1/modules/lightGallery/css/themes/{icons → uno/icons}/facebook-icon.svg +0 -0
  722. /data/assets/themes/j1/modules/lightGallery/css/themes/{icons → uno/icons}/googleplus-icon.svg +0 -0
  723. /data/assets/themes/j1/modules/lightGallery/css/themes/{icons → uno/icons}/html5-w.png +0 -0
  724. /data/assets/themes/j1/modules/lightGallery/css/themes/{icons → uno/icons}/linked-in.png +0 -0
  725. /data/assets/themes/j1/modules/lightGallery/css/themes/{icons → uno/icons}/module-w.png +0 -0
  726. /data/assets/themes/j1/modules/lightGallery/css/themes/{icons → uno/icons}/play-button.png +0 -0
  727. /data/assets/themes/j1/modules/lightGallery/css/themes/{icons → uno/icons}/responsive-w.png +0 -0
  728. /data/assets/themes/j1/modules/lightGallery/css/themes/{icons → uno/icons}/thumb-w.png +0 -0
  729. /data/assets/themes/j1/modules/lightGallery/css/themes/{icons → uno/icons}/touch-w.png +0 -0
  730. /data/assets/themes/j1/modules/lightGallery/css/themes/{icons → uno/icons}/twitter-icon.svg +0 -0
  731. /data/assets/themes/j1/modules/lightGallery/css/themes/{icons → uno/icons}/twitter.png +0 -0
  732. /data/assets/themes/j1/modules/lightGallery/css/themes/{icons → uno/icons}/video1-w.png +0 -0
  733. /data/assets/themes/j1/modules/lightGallery/css/themes/{icons → uno/icons}/zoom-w.png +0 -0
  734. /data/assets/themes/j1/modules/lightGallery/css/themes/{icons → uno/icons}/zoom.png +0 -0
  735. /data/assets/themes/j1/modules/lightGallery/{css/img → images}/loading.gif +0 -0
  736. /data/assets/themes/j1/modules/lightGallery/{css/img → img}/video-play.png +0 -0
  737. /data/assets/themes/j1/modules/lightGallery/{css/img → img}/vimeo-play.png +0 -0
  738. /data/assets/themes/j1/modules/lightGallery/{css/img → img}/youtube-play.png +0 -0
  739. /data/assets/themes/j1/modules/lightGallery/js/{modules → plugins}/j1/j1-video.js +0 -0
  740. /data/assets/themes/j1/modules/lightGallery/js/{modules → plugins}/j1/j1-video.min.js +0 -0
@@ -1 +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"]}
1
+ {"version":3,"names":["elementMap","Map","Data","set","element","key","instance","has","instanceMap","get","size","console","error","Array","from","keys","remove","delete","TRANSITION_END","parseSelector","selector","window","CSS","escape","replace","match","id","triggerTransitionEnd","dispatchEvent","Event","isElement","object","jquery","nodeType","getElement","length","document","querySelector","isVisible","getClientRects","elementIsVisible","getComputedStyle","getPropertyValue","closedDetails","closest","summary","parentNode","isDisabled","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","getAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","noop","reflow","offsetHeight","getjQuery","jQuery","body","DOMContentLoadedCallbacks","isRTL","dir","defineJQueryPlugin","plugin","callback","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","readyState","addEventListener","push","execute","possibleCallback","args","defaultValue","executeAfterTransition","transitionElement","waitForTransition","emulatedDuration","transitionDuration","transitionDelay","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","split","getTransitionDurationFromElement","called","handler","target","removeEventListener","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","listLength","index","indexOf","Math","max","min","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","makeEventUid","uid","getElementEvents","findHandler","events","callable","delegationSelector","Object","values","find","event","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","addHandler","oneOff","wrapFunction","relatedTarget","delegateTarget","call","this","handlers","previousFunction","domElements","querySelectorAll","domElement","hydrateObj","EventHandler","off","type","apply","bootstrapDelegationHandler","bootstrapHandler","removeHandler","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","entries","includes","on","one","inNamespace","isNamespace","startsWith","elementEvent","slice","keyHandlers","trigger","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","evt","cancelable","preventDefault","obj","meta","value","_unused","defineProperty","configurable","normalizeData","toString","JSON","parse","decodeURIComponent","normalizeDataKey","chr","toLowerCase","Manipulator","setDataAttribute","setAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","bsKeys","dataset","filter","pureKey","charAt","getDataAttribute","Config","Default","DefaultType","Error","_getConfig","config","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","jsonConfig","constructor","configTypes","property","expectedTypes","valueType","prototype","RegExp","test","TypeError","toUpperCase","BaseComponent","super","_element","_config","DATA_KEY","dispose","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","getInstance","getOrCreateInstance","VERSION","eventName","getSelector","hrefAttribute","trim","SelectorEngine","concat","Element","findOne","children","child","matches","parents","ancestor","prev","previous","previousElementSibling","next","nextElementSibling","focusableChildren","focusables","map","join","el","getSelectorFromElement","getElementFromSelector","getMultipleElementsFromSelector","enableDismissTrigger","component","method","clickEvent","tagName","EVENT_CLOSE","EVENT_CLOSED","Alert","close","_destroyElement","each","data","undefined","SELECTOR_DATA_TOGGLE","Button","toggle","button","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","endCallback","leftCallback","rightCallback","Swipe","isSupported","_deltaX","_supportPointerEvents","PointerEvent","_initEvents","_start","_eventIsPointerPenTouch","clientX","touches","_end","_handleSwipe","_move","absDeltaX","abs","direction","add","pointerType","navigator","maxTouchPoints","DATA_API_KEY","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_DRAG_START","EVENT_LOAD_DATA_API","EVENT_CLICK_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_ACTIVE","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","KEY_TO_DIRECTION","ArrowLeft","ArrowRight","interval","keyboard","pause","ride","touch","wrap","Carousel","_interval","_activeElement","_isSliding","touchTimeout","_swipeHelper","_indicatorsElement","_addEventListeners","cycle","_slide","nextWhenVisible","hidden","_clearInterval","_updateInterval","setInterval","_maybeEnableCycle","to","items","_getItems","activeIndex","_getItemIndex","_getActive","order","defaultInterval","_keydown","_addTouchEventListeners","img","swipeConfig","_directionToOrder","endCallBack","clearTimeout","_setActiveIndicatorElement","activeIndicator","newActiveIndicator","elementInterval","parseInt","isNext","nextElement","nextElementIndex","triggerEvent","_orderToDirection","isCycling","directionalClassName","orderClassName","completeCallBack","_isAnimated","clearInterval","carousel","slideIndex","carousels","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_SHOW","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_DEEPER_CHILDREN","parent","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","_isShown","hide","show","activeChildren","_getFirstLevelChildren","activeInstance","dimension","_getDimension","style","scrollSize","complete","getBoundingClientRect","selected","triggerArray","isOpen","ARROW_UP_KEY","ARROW_DOWN_KEY","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","SELECTOR_DATA_TOGGLE_SHOWN","SELECTOR_MENU","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","autoClose","boundary","display","offset","popperConfig","reference","Dropdown","_popper","_parent","_menu","_inNavbar","_detectNavbar","_createPopper","focus","_completeHide","destroy","update","Popper","referenceElement","_getPopperConfig","createPopper","_getPlacement","parentDropdown","isEnd","_getOffset","popperData","defaultBsPopperConfig","placement","modifiers","options","enabled","_selectMenuItem","clearMenus","openToggles","context","composedPath","isMenuTarget","dataApiKeydownHandler","isInput","isEscapeEvent","isUpOrDownEvent","getToggleButton","stopPropagation","EVENT_MOUSEDOWN","className","clickCallback","rootElement","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","backdrop","createElement","append","EVENT_FOCUSIN","EVENT_KEYDOWN_TAB","TAB_NAV_BACKWARD","autofocus","trapElement","FocusTrap","_isActive","_lastTabNavDirection","activate","_handleFocusin","_handleKeydown","deactivate","elements","shiftKey","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","PROPERTY_PADDING","PROPERTY_MARGIN","ScrollBarHelper","getWidth","documentWidth","clientWidth","innerWidth","width","_disableOverFlow","_setElementAttributes","calculatedValue","reset","_resetElementAttributes","isOverflowing","_saveInitialAttribute","overflow","styleProperty","scrollbarWidth","_applyManipulationCallback","setProperty","actualValue","removeProperty","callBack","sel","EVENT_HIDE_PREVENTED","EVENT_RESIZE","EVENT_CLICK_DISMISS","EVENT_MOUSEDOWN_DISMISS","EVENT_KEYDOWN_DISMISS","CLASS_NAME_OPEN","CLASS_NAME_STATIC","Modal","_dialog","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","_scrollBar","_adjustDialog","_showElement","_hideModal","handleUpdate","scrollTop","modalBody","transitionComplete","_triggerBackdropTransition","event2","_resetAdjustments","isModalOverflowing","scrollHeight","clientHeight","initialOverflowY","overflowY","isBodyOverflowing","paddingLeft","paddingRight","showEvent","alreadyOpen","CLASS_NAME_SHOWING","CLASS_NAME_HIDING","OPEN_SELECTOR","scroll","Offcanvas","blur","completeCallback","position","DefaultAllowlist","a","area","b","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","i","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","uriAttributes","SAFE_URL_PATTERN","allowedAttribute","attribute","allowedAttributeList","attributeName","nodeName","nodeValue","attributeRegex","some","regex","allowList","content","extraClass","html","sanitize","sanitizeFn","template","DefaultContentType","entry","TemplateFactory","getContent","_resolvePossibleFunction","hasContent","changeContent","_checkContent","toHtml","templateWrapper","innerHTML","_maybeSanitize","text","_setContent","arg","templateElement","_putElementInTemplate","textContent","unsafeHtml","sanitizeFunction","createdDocument","DOMParser","parseFromString","elementName","attributeList","allowedAttributes","sanitizeHtml","DISALLOWED_ATTRIBUTES","CLASS_NAME_FADE","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","animation","container","customClass","delay","fallbackPlacements","title","Tooltip","_isEnabled","_timeout","_isHovered","_activeTrigger","_templateFactory","_newContent","tip","_setListeners","_fixTitle","enable","disable","toggleEnabled","click","_leave","_enter","_hideModalHandler","_disposePopper","_isWithContent","isInTheDom","ownerDocument","_getTipElement","_isWithActiveTrigger","_getTitle","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","prefix","floor","random","getElementById","getUID","setContent","_initializeOnDelegatedTarget","_getDelegateConfig","attachment","phase","state","triggers","eventIn","eventOut","_setTimeout","timeout","dataAttributes","dataAttribute","Popover","_getContent","EVENT_ACTIVATE","EVENT_CLICK","SELECTOR_TARGET_LINKS","SELECTOR_NAV_LINKS","SELECTOR_LINK_ITEMS","rootMargin","smoothScroll","threshold","ScrollSpy","_targetLinks","_observableSections","_rootElement","_activeTarget","_observer","_previousScrollData","visibleEntryTop","parentScrollTop","refresh","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","disconnect","_getNewObserver","section","observe","observableSection","hash","height","offsetTop","scrollTo","top","behavior","IntersectionObserver","_observerCallback","targetElement","_process","userScrollsDown","isIntersecting","_clearActiveClass","entryIsLowerThanPrevious","targetLinks","anchor","decodeURI","_activateParents","listGroup","item","activeNodes","node","spy","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","HOME_KEY","END_KEY","SELECTOR_DROPDOWN_TOGGLE","NOT_SELECTOR_DROPDOWN_TOGGLE","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","active","_getActiveElem","hideEvent","_deactivate","_activate","relatedElem","_toggleDropDown","nextActiveElement","preventScroll","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","open","EVENT_MOUSEOVER","EVENT_MOUSEOUT","EVENT_FOCUSOUT","CLASS_NAME_HIDE","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","_onInteraction","isInteracting"],"sources":["../../js/src/dom/data.js","../../js/src/util/index.js","../../js/src/dom/event-handler.js","../../js/src/dom/manipulator.js","../../js/src/util/config.js","../../js/src/base-component.js","../../js/src/dom/selector-engine.js","../../js/src/util/component-functions.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/util/swipe.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/dropdown.js","../../js/src/util/backdrop.js","../../js/src/util/focustrap.js","../../js/src/util/scrollbar.js","../../js/src/modal.js","../../js/src/offcanvas.js","../../js/src/util/sanitizer.js","../../js/src/util/template-factory.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"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap 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 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/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = selector => {\n if (selector && window.CSS && window.CSS.escape) {\n // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`)\n }\n\n return selector\n}\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n if (object === null || object === undefined) {\n return `${object}`\n }\n\n return Object.prototype.toString.call(object).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 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 = object => {\n if (!object || typeof object !== 'object') {\n return false\n }\n\n if (typeof object.jquery !== 'undefined') {\n object = object[0]\n }\n\n return typeof object.nodeType !== 'undefined'\n}\n\nconst getElement = object => {\n // it's a jQuery object or a node element\n if (isElement(object)) {\n return object.jquery ? object[0] : object\n }\n\n if (typeof object === 'string' && object.length > 0) {\n return document.querySelector(parseSelector(object))\n }\n\n return null\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n // Handle `details` element as its content may falsie appear visible when it is closed\n const closedDetails = element.closest('details:not([open])')\n\n if (!closedDetails) {\n return elementIsVisible\n }\n\n if (closedDetails !== element) {\n const summary = element.closest('summary')\n if (summary && summary.parentNode !== closedDetails) {\n return false\n }\n\n if (summary === null) {\n return false\n }\n }\n\n return elementIsVisible\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 if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return window.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 = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n return typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue\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 const listLength = list.length\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element\n // depending on the direction and if cycle is allowed\n if (index === -1) {\n return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\n }\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 getjQuery,\n getNextActiveElement,\n getTransitionDurationFromElement,\n getUID,\n isDisabled,\n isElement,\n isRTL,\n isVisible,\n noop,\n onDOMContentLoaded,\n parseSelector,\n reflow,\n triggerTransitionEnd,\n toType\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index.js'\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}\n\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 makeEventUid(element, uid) {\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getElementEvents(element) {\n const uid = makeEventUid(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 hydrateObj(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 (const domElement of domElements) {\n if (domElement !== target) {\n continue\n }\n\n hydrateObj(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\nfunction findHandler(events, callable, delegationSelector = null) {\n return Object.values(events)\n .find(event => event.callable === callable && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string'\n // TODO: tooltip passes `false` instead of selector, so we need to check\n const callable = isDelegated ? delegationFunction : (handler || delegationFunction)\n let typeEvent = getTypeEvent(originalTypeEvent)\n\n if (!nativeEvents.has(typeEvent)) {\n typeEvent = originalTypeEvent\n }\n\n return [isDelegated, callable, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\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 (originalTypeEvent in customEvents) {\n const wrapFunction = 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 callable = wrapFunction(callable)\n }\n\n const events = getElementEvents(element)\n const handlers = events[typeEvent] || (events[typeEvent] = {})\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)\n\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff\n\n return\n }\n\n const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\n const fn = isDelegated ?\n bootstrapDelegationHandler(element, handler, callable) :\n bootstrapHandler(element, callable)\n\n fn.delegationSelector = isDelegated ? handler : null\n fn.callable = callable\n fn.oneOff = oneOff\n fn.uidEvent = uid\n handlers[uid] = fn\n\n element.addEventListener(typeEvent, fn, isDelegated)\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, event] of Object.entries(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n removeHandler(element, events, typeEvent, event.callable, 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, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, false)\n },\n\n one(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, true)\n },\n\n off(element, originalTypeEvent, handler, delegationFunction) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n const inNamespace = typeEvent !== originalTypeEvent\n const events = getElementEvents(element)\n const storeElementEvent = events[typeEvent] || {}\n const isNamespace = originalTypeEvent.startsWith('.')\n\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return\n }\n\n removeHandler(element, events, typeEvent, callable, isDelegated ? 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 for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n removeHandler(element, events, typeEvent, event.callable, 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\n let jQueryEvent = null\n let bubbles = true\n let nativeDispatch = true\n let defaultPrevented = false\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 const evt = hydrateObj(new Event(event, { bubbles, cancelable: true }), args)\n\n if (defaultPrevented) {\n evt.preventDefault()\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt)\n }\n\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault()\n }\n\n return evt\n }\n}\n\nfunction hydrateObj(obj, meta = {}) {\n for (const [key, value] of Object.entries(meta)) {\n try {\n obj[key] = value\n } catch {\n Object.defineProperty(obj, key, {\n configurable: true,\n get() {\n return value\n }\n })\n }\n }\n\n return obj\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n if (value === 'true') {\n return true\n }\n\n if (value === 'false') {\n return false\n }\n\n if (value === Number(value).toString()) {\n return Number(value)\n }\n\n if (value === '' || value === 'null') {\n return null\n }\n\n if (typeof value !== 'string') {\n return value\n }\n\n try {\n return JSON.parse(decodeURIComponent(value))\n } catch {\n return value\n }\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') && !key.startsWith('bsConfig'))\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\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport { isElement, toType } from './index.js'\n\n/**\n * Class definition\n */\n\nclass Config {\n // Getters\n static get Default() {\n return {}\n }\n\n static get DefaultType() {\n return {}\n }\n\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!')\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n _configAfterMerge(config) {\n return config\n }\n\n _mergeConfigObj(config, element) {\n const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {} // try to parse\n\n return {\n ...this.constructor.Default,\n ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n ...(typeof config === 'object' ? config : {})\n }\n }\n\n _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n for (const [property, expectedTypes] of Object.entries(configTypes)) {\n const value = config[property]\n const valueType = isElement(value) ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(\n `${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n }\n }\n}\n\nexport default Config\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport Config from './util/config.js'\nimport { executeAfterTransition, getElement } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst VERSION = '5.3.2'\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n constructor(element, config) {\n super()\n\n element = getElement(element)\n if (!element) {\n return\n }\n\n this._element = element\n this._config = this._getConfig(config)\n\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 _getConfig(config) {\n config = this._mergeConfigObj(config, this._element)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\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 DATA_KEY() {\n return `bs.${this.NAME}`\n }\n\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`\n }\n\n static eventName(name) {\n return `${name}${this.EVENT_KEY}`\n }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible, parseSelector } from '../util/index.js'\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target')\n\n if (!selector || selector === '#') {\n let hrefAttribute = 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 (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n return null\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n hrefAttribute = `#${hrefAttribute.split('#')[1]}`\n }\n\n selector = hrefAttribute && hrefAttribute !== '#' ? parseSelector(hrefAttribute.trim()) : null\n }\n\n return selector\n}\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.closest(selector)\n\n while (ancestor) {\n parents.push(ancestor)\n ancestor = ancestor.parentNode.closest(selector)\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 // TODO: this is now unused; remove later along with prev()\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 getSelectorFromElement(element) {\n const selector = getSelector(element)\n\n if (selector) {\n return SelectorEngine.findOne(selector) ? selector : null\n }\n\n return null\n },\n\n getElementFromSelector(element) {\n const selector = getSelector(element)\n\n return selector ? SelectorEngine.findOne(selector) : null\n },\n\n getMultipleElementsFromSelector(element) {\n const selector = getSelector(element)\n\n return selector ? SelectorEngine.find(selector) : []\n }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap 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.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isDisabled } from './index.js'\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 = SelectorEngine.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 alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { defineJQueryPlugin } from './util/index.js'\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 button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { defineJQueryPlugin } from './util/index.js'\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 util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport { execute } from './index.js'\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 endCallback: null,\n leftCallback: null,\n rightCallback: null\n}\n\nconst DefaultType = {\n endCallback: '(function|null)',\n leftCallback: '(function|null)',\n rightCallback: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n constructor(element, config) {\n super()\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 // 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 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 _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 carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n defineJQueryPlugin,\n getNextActiveElement,\n isRTL,\n isVisible,\n reflow,\n triggerTransitionEnd\n} from './util/index.js'\nimport Swipe from './util/swipe.js'\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_ITEM = '.carousel-item'\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\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 pause: 'hover',\n ride: false,\n touch: true,\n wrap: true\n}\n\nconst DefaultType = {\n interval: '(number|boolean)', // TODO:v6 remove boolean support\n keyboard: 'boolean',\n pause: '(string|boolean)',\n ride: '(boolean|string)',\n touch: 'boolean',\n wrap: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._interval = null\n this._activeElement = null\n this._isSliding = false\n this.touchTimeout = null\n this._swipeHelper = null\n\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n this._addEventListeners()\n\n if (this._config.ride === CLASS_NAME_CAROUSEL) {\n this.cycle()\n }\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 next() {\n this._slide(ORDER_NEXT)\n }\n\n nextWhenVisible() {\n // FIXME TODO use `document.visibilityState`\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() {\n if (this._isSliding) {\n triggerTransitionEnd(this._element)\n }\n\n this._clearInterval()\n }\n\n cycle() {\n this._clearInterval()\n this._updateInterval()\n\n this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval)\n }\n\n _maybeEnableCycle() {\n if (!this._config.ride) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.cycle())\n return\n }\n\n this.cycle()\n }\n\n to(index) {\n const items = this._getItems()\n if (index > 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 const activeIndex = this._getItemIndex(this._getActive())\n if (activeIndex === index) {\n return\n }\n\n const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV\n\n this._slide(order, items[index])\n }\n\n dispose() {\n if (this._swipeHelper) {\n this._swipeHelper.dispose()\n }\n\n super.dispose()\n }\n\n // Private\n _configAfterMerge(config) {\n config.defaultInterval = config.interval\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, () => this.pause())\n EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle())\n }\n\n if (this._config.touch && Swipe.isSupported()) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault())\n }\n\n const endCallBack = () => {\n if (this._config.pause !== 'hover') {\n return\n }\n\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(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n\n const swipeConfig = {\n leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n rightCallback: () => this._slide(this._directionToOrder(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(this._directionToOrder(direction))\n }\n }\n\n _getItemIndex(element) {\n return this._getItems().indexOf(element)\n }\n\n _setActiveIndicatorElement(index) {\n if (!this._indicatorsElement) {\n return\n }\n\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 newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n\n if (newActiveIndicator) {\n newActiveIndicator.classList.add(CLASS_NAME_ACTIVE)\n newActiveIndicator.setAttribute('aria-current', 'true')\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || this._getActive()\n\n if (!element) {\n return\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n this._config.interval = elementInterval || this._config.defaultInterval\n }\n\n _slide(order, element = null) {\n if (this._isSliding) {\n return\n }\n\n const activeElement = this._getActive()\n const isNext = order === ORDER_NEXT\n const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap)\n\n if (nextElement === activeElement) {\n return\n }\n\n const nextElementIndex = this._getItemIndex(nextElement)\n\n const triggerEvent = eventName => {\n return EventHandler.trigger(this._element, eventName, {\n relatedTarget: nextElement,\n direction: this._orderToDirection(order),\n from: this._getItemIndex(activeElement),\n to: nextElementIndex\n })\n }\n\n const slideEvent = triggerEvent(EVENT_SLIDE)\n\n if (slideEvent.defaultPrevented) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n // TODO: change tests that use empty divs to avoid this check\n return\n }\n\n const isCycling = Boolean(this._interval)\n this.pause()\n\n this._isSliding = true\n\n this._setActiveIndicatorElement(nextElementIndex)\n this._activeElement = nextElement\n\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n\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 triggerEvent(EVENT_SLID)\n }\n\n this._queueCallback(completeCallBack, activeElement, this._isAnimated())\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_SLIDE)\n }\n\n _getActive() {\n return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n }\n\n _getItems() {\n return SelectorEngine.find(SELECTOR_ITEM, this._element)\n }\n\n _clearInterval() {\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n }\n\n _directionToOrder(direction) {\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 (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 jQueryInterface(config) {\n return this.each(function () {\n const data = Carousel.getOrCreateInstance(this, config)\n\n if (typeof config === 'number') {\n data.to(config)\n return\n }\n\n if (typeof config === 'string') {\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\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_SLIDE, function (event) {\n const target = SelectorEngine.getElementFromSelector(this)\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return\n }\n\n event.preventDefault()\n\n const carousel = Carousel.getOrCreateInstance(target)\n const slideIndex = this.getAttribute('data-bs-slide-to')\n\n if (slideIndex) {\n carousel.to(slideIndex)\n carousel._maybeEnableCycle()\n return\n }\n\n if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n carousel.next()\n carousel._maybeEnableCycle()\n return\n }\n\n carousel.prev()\n carousel._maybeEnableCycle()\n})\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.getOrCreateInstance(carousel)\n }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Carousel)\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n defineJQueryPlugin,\n getElement,\n reflow\n} from './util/index.js'\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 parent: null,\n toggle: true\n}\n\nconst DefaultType = {\n parent: '(null|element)',\n toggle: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._isTransitioning = false\n this._triggerArray = []\n\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (const elem of toggleList) {\n const selector = SelectorEngine.getSelectorFromElement(elem)\n const filterElement = SelectorEngine.find(selector)\n .filter(foundElement => foundElement === 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 DefaultType() {\n return DefaultType\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 element = SelectorEngine.getElementFromSelector(trigger)\n\n if (element && !this._isShown(element)) {\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 _configAfterMerge(config) {\n config.toggle = Boolean(config.toggle) // Coerce string values\n config.parent = getElement(config.parent)\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 = SelectorEngine.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(element => !children.includes(element))\n }\n\n _addAriaAndCollapsedClass(triggerArray, isOpen) {\n if (!triggerArray.length) {\n return\n }\n\n for (const element of triggerArray) {\n element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen)\n element.setAttribute('aria-expanded', isOpen)\n }\n }\n\n // Static\n static jQueryInterface(config) {\n const _config = {}\n if (typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n return this.each(function () {\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 for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\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 dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n defineJQueryPlugin,\n execute,\n getElement,\n getNextActiveElement,\n isDisabled,\n isElement,\n isRTL,\n isVisible,\n noop\n} from './util/index.js'\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 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 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_DROPUP_CENTER = 'dropup-center'\nconst CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)'\nconst SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE}.${CLASS_NAME_SHOW}`\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR = '.navbar'\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'\nconst PLACEMENT_TOPCENTER = 'top'\nconst PLACEMENT_BOTTOMCENTER = 'bottom'\n\nconst Default = {\n autoClose: true,\n boundary: 'clippingParents',\n display: 'dynamic',\n offset: [0, 2],\n popperConfig: null,\n reference: 'toggle'\n}\n\nconst DefaultType = {\n autoClose: '(boolean|string)',\n boundary: '(string|element)',\n display: 'string',\n offset: '(array|string|function)',\n popperConfig: '(null|object|function)',\n reference: '(string|element|object)'\n}\n\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._popper = null\n this._parent = this._element.parentNode // dropdown wrapper\n // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||\n SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||\n SelectorEngine.findOne(SELECTOR_MENU, this._parent)\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()) {\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 this._createPopper()\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 && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, '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()) {\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 element of [].concat(...document.body.children)) {\n EventHandler.off(element, '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 = super._getConfig(config)\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() {\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 = this._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 this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n }\n\n _isShown() {\n return this._menu.classList.contains(CLASS_NAME_SHOW)\n }\n\n _getPlacement() {\n const parentDropdown = this._parent\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 if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {\n return PLACEMENT_TOPCENTER\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {\n return PLACEMENT_BOTTOMCENTER\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(SELECTOR_NAVBAR) !== null\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 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 or Dropdown is in Navbar\n if (this._inNavbar || this._config.display === 'static') {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static') // TODO: v6 remove\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }]\n }\n\n return {\n ...defaultBsPopperConfig,\n ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n }\n }\n\n _selectMenuItem({ key, target }) {\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element))\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.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) {\n return\n }\n\n const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN)\n\n for (const toggle of openToggles) {\n const context = Dropdown.getInstance(toggle)\n if (!context || context._config.autoClose === false) {\n continue\n }\n\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 const relatedTarget = { relatedTarget: context._element }\n\n if (event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n\n context._completeHide(relatedTarget)\n }\n }\n\n static dataApiKeydownHandler(event) {\n // If not an UP | DOWN | ESCAPE key => not a dropdown command\n // If input/textarea && if key is other than ESCAPE => not a dropdown command\n\n const isInput = /input|textarea/i.test(event.target.tagName)\n const isEscapeEvent = event.key === ESCAPE_KEY\n const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)\n\n if (!isUpOrDownEvent && !isEscapeEvent) {\n return\n }\n\n if (isInput && !isEscapeEvent) {\n return\n }\n\n event.preventDefault()\n\n // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ?\n this :\n (SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] ||\n SelectorEngine.next(this, SELECTOR_DATA_TOGGLE)[0] ||\n SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode))\n\n const instance = Dropdown.getOrCreateInstance(getToggleButton)\n\n if (isUpOrDownEvent) {\n event.stopPropagation()\n instance.show()\n instance._selectMenuItem(event)\n return\n }\n\n if (instance._isShown()) { // else is escape and we check if it is shown\n event.stopPropagation()\n instance.hide()\n getToggleButton.focus()\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 util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport { execute, executeAfterTransition, getElement, reflow } from './index.js'\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 clickCallback: null,\n isAnimated: false,\n isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n rootElement: 'body' // give the choice to place backdrop under different elements\n}\n\nconst DefaultType = {\n className: 'string',\n clickCallback: '(function|null)',\n isAnimated: 'boolean',\n isVisible: 'boolean',\n rootElement: '(element|string)'\n}\n\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\n this._isAppended = false\n this._element = null\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 show(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._append()\n\n const element = this._getElement()\n if (this._config.isAnimated) {\n reflow(element)\n }\n\n element.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 _configAfterMerge(config) {\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = getElement(config.rootElement)\n return config\n }\n\n _append() {\n if (this._isAppended) {\n return\n }\n\n const element = this._getElement()\n this._config.rootElement.append(element)\n\n EventHandler.on(element, 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 util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\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 autofocus: true,\n trapElement: null // The element to trap focus inside of\n}\n\nconst DefaultType = {\n autofocus: 'boolean',\n trapElement: 'element'\n}\n\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\n this._isActive = false\n this._lastTabNavDirection = null\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 activate() {\n if (this._isActive) {\n return\n }\n\n if (this._config.autofocus) {\n this._config.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 { trapElement } = this._config\n\n if (event.target === document || event.target === trapElement || trapElement.contains(event.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\nexport default FocusTrap\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\nconst PROPERTY_PADDING = 'padding-right'\nconst PROPERTY_MARGIN = 'margin-right'\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, PROPERTY_PADDING, 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, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width)\n }\n\n reset() {\n this._resetElementAttributes(this._element, 'overflow')\n this._resetElementAttributes(this._element, PROPERTY_PADDING)\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING)\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN)\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, styleProperty, 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, styleProperty)\n const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty)\n element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`)\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n _saveInitialAttribute(element, styleProperty) {\n const actualValue = element.style.getPropertyValue(styleProperty)\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProperty, actualValue)\n }\n }\n\n _resetElementAttributes(selector, styleProperty) {\n const manipulationCallBack = element => {\n const value = Manipulator.getDataAttribute(element, styleProperty)\n // We only want to remove the property if the value is `null`; the value can also be zero\n if (value === null) {\n element.style.removeProperty(styleProperty)\n return\n }\n\n Manipulator.removeDataAttribute(element, styleProperty)\n element.style.setProperty(styleProperty, value)\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n _applyManipulationCallback(selector, callBack) {\n if (isElement(selector)) {\n callBack(selector)\n return\n }\n\n for (const sel of SelectorEngine.find(selector, this._element)) {\n callBack(sel)\n }\n }\n}\n\nexport default ScrollBarHelper\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Backdrop from './util/backdrop.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport FocusTrap from './util/focustrap.js'\nimport { defineJQueryPlugin, isRTL, isVisible, reflow } from './util/index.js'\nimport ScrollBarHelper from './util/scrollbar.js'\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_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.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 focus: true,\n keyboard: true\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n focus: 'boolean',\n keyboard: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\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._isTransitioning = false\n this._scrollBar = new ScrollBarHelper()\n\n this._addEventListeners()\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(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 this._isTransitioning = true\n\n this._scrollBar.hide()\n\n document.body.classList.add(CLASS_NAME_OPEN)\n\n this._adjustDialog()\n\n this._backdrop.show(() => 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 this._isTransitioning = true\n this._focustrap.deactivate()\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n this._queueCallback(() => this._hideModal(), this._element, this._isAnimated())\n }\n\n dispose() {\n EventHandler.off(window, EVENT_KEY)\n EventHandler.off(this._dialog, EVENT_KEY)\n\n this._backdrop.dispose()\n this._focustrap.deactivate()\n\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 _showElement(relatedTarget) {\n // try to append dynamic modal\n if (!document.body.contains(this._element)) {\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 const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n if (modalBody) {\n modalBody.scrollTop = 0\n }\n\n reflow(this._element)\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, this._isAnimated())\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (event.key !== ESCAPE_KEY) {\n return\n }\n\n if (this._config.keyboard) {\n this.hide()\n return\n }\n\n this._triggerBackdropTransition()\n })\n\n EventHandler.on(window, EVENT_RESIZE, () => {\n if (this._isShown && !this._isTransitioning) {\n this._adjustDialog()\n }\n })\n\n EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {\n // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks\n EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => {\n if (this._element !== event.target || this._element !== event2.target) {\n return\n }\n\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition()\n return\n }\n\n if (this._config.backdrop) {\n this.hide()\n }\n })\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\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 _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 isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n const initialOverflowY = this._element.style.overflowY\n // return if the following background transition hasn't yet completed\n if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {\n return\n }\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden'\n }\n\n this._element.classList.add(CLASS_NAME_STATIC)\n this._queueCallback(() => {\n this._element.classList.remove(CLASS_NAME_STATIC)\n this._queueCallback(() => {\n this._element.style.overflowY = initialOverflowY\n }, this._dialog)\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) {\n const property = isRTL() ? 'paddingLeft' : 'paddingRight'\n this._element.style[property] = `${scrollbarWidth}px`\n }\n\n if (!isBodyOverflowing && isModalOverflowing) {\n const property = isRTL() ? 'paddingRight' : 'paddingLeft'\n this._element.style[property] = `${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 = SelectorEngine.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 modal toggler while another one is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n if (alreadyOpen) {\n Modal.getInstance(alreadyOpen).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 offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Backdrop from './util/backdrop.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport FocusTrap from './util/focustrap.js'\nimport {\n defineJQueryPlugin,\n isDisabled,\n isVisible\n} from './util/index.js'\nimport ScrollBarHelper from './util/scrollbar.js'\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_SHOWING = 'showing'\nconst CLASS_NAME_HIDING = 'hiding'\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_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${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|string)',\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, config)\n\n this._isShown = false\n this._backdrop = this._initializeBackDrop()\n this._focustrap = this._initializeFocusTrap()\n this._addEventListeners()\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(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._backdrop.show()\n\n if (!this._config.scroll) {\n new ScrollBarHelper().hide()\n }\n\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.classList.add(CLASS_NAME_SHOWING)\n\n const completeCallBack = () => {\n if (!this._config.scroll || this._config.backdrop) {\n this._focustrap.activate()\n }\n\n this._element.classList.add(CLASS_NAME_SHOW)\n this._element.classList.remove(CLASS_NAME_SHOWING)\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.add(CLASS_NAME_HIDING)\n this._backdrop.hide()\n\n const completeCallback = () => {\n this._element.classList.remove(CLASS_NAME_SHOW, CLASS_NAME_HIDING)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\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 _initializeBackDrop() {\n const clickCallback = () => {\n if (this._config.backdrop === 'static') {\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n return\n }\n\n this.hide()\n }\n\n // 'static' option will be translated to true, and booleans will keep their value\n const isVisible = Boolean(this._config.backdrop)\n\n return new Backdrop({\n className: CLASS_NAME_BACKDROP,\n isVisible,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: isVisible ? clickCallback : null\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 (event.key !== ESCAPE_KEY) {\n return\n }\n\n if (this._config.keyboard) {\n this.hide()\n return\n }\n\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\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 = SelectorEngine.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 selector of SelectorEngine.find(OPEN_SELECTOR)) {\n Offcanvas.getOrCreateInstance(selector).show()\n }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n if (getComputedStyle(element).position !== 'fixed') {\n Offcanvas.getOrCreateInstance(element).hide()\n }\n }\n})\n\nenableDismissTrigger(Offcanvas)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Offcanvas)\n\nexport default Offcanvas\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\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// js-docs-end allow-list\n\nconst uriAttributes = new Set([\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n])\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\n// eslint-disable-next-line unicorn/better-regex\nconst SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/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))\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 function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n if (!unsafeHtml.length) {\n return unsafeHtml\n }\n\n if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n return sanitizeFunction(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 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 util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\nimport { DefaultAllowlist, sanitizeHtml } from './sanitizer.js'\nimport { execute, getElement, isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'TemplateFactory'\n\nconst Default = {\n allowList: DefaultAllowlist,\n content: {}, // { selector : text , selector2 : text2 , }\n extraClass: '',\n html: false,\n sanitize: true,\n sanitizeFn: null,\n template: '<div></div>'\n}\n\nconst DefaultType = {\n allowList: 'object',\n content: 'object',\n extraClass: '(string|function)',\n html: 'boolean',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n template: 'string'\n}\n\nconst DefaultContentType = {\n entry: '(string|element|function|null)',\n selector: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\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 getContent() {\n return Object.values(this._config.content)\n .map(config => this._resolvePossibleFunction(config))\n .filter(Boolean)\n }\n\n hasContent() {\n return this.getContent().length > 0\n }\n\n changeContent(content) {\n this._checkContent(content)\n this._config.content = { ...this._config.content, ...content }\n return this\n }\n\n toHtml() {\n const templateWrapper = document.createElement('div')\n templateWrapper.innerHTML = this._maybeSanitize(this._config.template)\n\n for (const [selector, text] of Object.entries(this._config.content)) {\n this._setContent(templateWrapper, text, selector)\n }\n\n const template = templateWrapper.children[0]\n const extraClass = this._resolvePossibleFunction(this._config.extraClass)\n\n if (extraClass) {\n template.classList.add(...extraClass.split(' '))\n }\n\n return template\n }\n\n // Private\n _typeCheckConfig(config) {\n super._typeCheckConfig(config)\n this._checkContent(config.content)\n }\n\n _checkContent(arg) {\n for (const [selector, content] of Object.entries(arg)) {\n super._typeCheckConfig({ selector, entry: content }, DefaultContentType)\n }\n }\n\n _setContent(template, content, selector) {\n const templateElement = SelectorEngine.findOne(selector, template)\n\n if (!templateElement) {\n return\n }\n\n content = this._resolvePossibleFunction(content)\n\n if (!content) {\n templateElement.remove()\n return\n }\n\n if (isElement(content)) {\n this._putElementInTemplate(getElement(content), templateElement)\n return\n }\n\n if (this._config.html) {\n templateElement.innerHTML = this._maybeSanitize(content)\n return\n }\n\n templateElement.textContent = content\n }\n\n _maybeSanitize(arg) {\n return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg\n }\n\n _resolvePossibleFunction(arg) {\n return execute(arg, [this])\n }\n\n _putElementInTemplate(element, templateElement) {\n if (this._config.html) {\n templateElement.innerHTML = ''\n templateElement.append(element)\n return\n }\n\n templateElement.textContent = element.textContent\n }\n}\n\nexport default TemplateFactory\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport { defineJQueryPlugin, execute, findShadowRoot, getElement, getUID, isRTL, noop } from './util/index.js'\nimport { DefaultAllowlist } from './util/sanitizer.js'\nimport TemplateFactory from './util/template-factory.js'\n\n/**\n * Constants\n */\n\nconst NAME = '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 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 EVENT_HIDE = 'hide'\nconst EVENT_HIDDEN = 'hidden'\nconst EVENT_SHOW = 'show'\nconst EVENT_SHOWN = 'shown'\nconst EVENT_INSERTED = 'inserted'\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_FOCUSOUT = 'focusout'\nconst EVENT_MOUSEENTER = 'mouseenter'\nconst EVENT_MOUSELEAVE = 'mouseleave'\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 allowList: DefaultAllowlist,\n animation: true,\n boundary: 'clippingParents',\n container: false,\n customClass: '',\n delay: 0,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n html: false,\n offset: [0, 6],\n placement: 'top',\n popperConfig: null,\n sanitize: true,\n sanitizeFn: null,\n selector: false,\n template: '<div class=\"tooltip\" role=\"tooltip\">' +\n '<div class=\"tooltip-arrow\"></div>' +\n '<div class=\"tooltip-inner\"></div>' +\n '</div>',\n title: '',\n trigger: 'hover focus'\n}\n\nconst DefaultType = {\n allowList: 'object',\n animation: 'boolean',\n boundary: '(string|element)',\n container: '(string|element|boolean)',\n customClass: '(string|function)',\n delay: '(number|object)',\n fallbackPlacements: 'array',\n html: 'boolean',\n offset: '(array|string|function)',\n placement: '(string|function)',\n popperConfig: '(null|object|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n selector: '(string|boolean)',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string'\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, config)\n\n // Private\n this._isEnabled = true\n this._timeout = 0\n this._isHovered = null\n this._activeTrigger = {}\n this._popper = null\n this._templateFactory = null\n this._newContent = null\n\n // Protected\n this.tip = null\n\n this._setListeners()\n\n if (!this._config.selector) {\n this._fixTitle()\n }\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 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() {\n if (!this._isEnabled) {\n return\n }\n\n this._activeTrigger.click = !this._activeTrigger.click\n if (this._isShown()) {\n this._leave()\n return\n }\n\n this._enter()\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._element.getAttribute('data-bs-original-title')) {\n this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'))\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.eventName(EVENT_SHOW))\n const shadowRoot = findShadowRoot(this._element)\n const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element)\n\n if (showEvent.defaultPrevented || !isInTheDom) {\n return\n }\n\n // TODO: v6 remove this or make it optional\n this._disposePopper()\n\n const tip = this._getTipElement()\n\n this._element.setAttribute('aria-describedby', tip.getAttribute('id'))\n\n const { container } = this._config\n\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.append(tip)\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED))\n }\n\n this._popper = this._createPopper(tip)\n\n tip.classList.add(CLASS_NAME_SHOW)\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 EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN))\n\n if (this._isHovered === false) {\n this._leave()\n }\n\n this._isHovered = false\n }\n\n this._queueCallback(complete, this.tip, this._isAnimated())\n }\n\n hide() {\n if (!this._isShown()) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE))\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const tip = this._getTipElement()\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 this._isHovered = null // it is a trick to support manual triggering\n\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return\n }\n\n if (!this._isHovered) {\n this._disposePopper()\n }\n\n this._element.removeAttribute('aria-describedby')\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN))\n }\n\n this._queueCallback(complete, this.tip, this._isAnimated())\n }\n\n update() {\n if (this._popper) {\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 this.tip = this._createTipElement(this._newContent || this._getContentForTemplate())\n }\n\n return this.tip\n }\n\n _createTipElement(content) {\n const tip = this._getTemplateFactory(content).toHtml()\n\n // TODO: remove this check in v6\n if (!tip) {\n return null\n }\n\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n // TODO: v6 the following can be achieved with CSS only\n tip.classList.add(`bs-${this.constructor.NAME}-auto`)\n\n const tipId = getUID(this.constructor.NAME).toString()\n\n tip.setAttribute('id', tipId)\n\n if (this._isAnimated()) {\n tip.classList.add(CLASS_NAME_FADE)\n }\n\n return tip\n }\n\n setContent(content) {\n this._newContent = content\n if (this._isShown()) {\n this._disposePopper()\n this.show()\n }\n }\n\n _getTemplateFactory(content) {\n if (this._templateFactory) {\n this._templateFactory.changeContent(content)\n } else {\n this._templateFactory = new TemplateFactory({\n ...this._config,\n // the `content` var has to be after `this._config`\n // to override config.content in case of popover\n content,\n extraClass: this._resolvePossibleFunction(this._config.customClass)\n })\n }\n\n return this._templateFactory\n }\n\n _getContentForTemplate() {\n return {\n [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n }\n }\n\n _getTitle() {\n return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title')\n }\n\n // Private\n _initializeOnDelegatedTarget(event) {\n return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n }\n\n _isAnimated() {\n return this._config.animation || (this.tip && this.tip.classList.contains(CLASS_NAME_FADE))\n }\n\n _isShown() {\n return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW)\n }\n\n _createPopper(tip) {\n const placement = execute(this._config.placement, [this, tip, this._element])\n const attachment = AttachmentMap[placement.toUpperCase()]\n return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _resolvePossibleFunction(arg) {\n return execute(arg, [this._element])\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: 'preSetPlacement',\n enabled: true,\n phase: 'beforeMain',\n fn: data => {\n // Pre-set Popper's placement attribute in order to read the arrow sizes properly.\n // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement\n this._getTipElement().setAttribute('data-popper-placement', data.state.placement)\n }\n }\n ]\n }\n\n return {\n ...defaultBsPopperConfig,\n ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n }\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.eventName(EVENT_CLICK), this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event)\n context.toggle()\n })\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ?\n this.constructor.eventName(EVENT_MOUSEENTER) :\n this.constructor.eventName(EVENT_FOCUSIN)\n const eventOut = trigger === TRIGGER_HOVER ?\n this.constructor.eventName(EVENT_MOUSELEAVE) :\n this.constructor.eventName(EVENT_FOCUSOUT)\n\n EventHandler.on(this._element, eventIn, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event)\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true\n context._enter()\n })\n EventHandler.on(this._element, eventOut, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event)\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] =\n context._element.contains(event.relatedTarget)\n\n context._leave()\n })\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\n _fixTitle() {\n const title = this._element.getAttribute('title')\n\n if (!title) {\n return\n }\n\n if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n this._element.setAttribute('aria-label', title)\n }\n\n this._element.setAttribute('data-bs-original-title', title) // DO NOT USE IT. Is only for backwards compatibility\n this._element.removeAttribute('title')\n }\n\n _enter() {\n if (this._isShown() || this._isHovered) {\n this._isHovered = true\n return\n }\n\n this._isHovered = true\n\n this._setTimeout(() => {\n if (this._isHovered) {\n this.show()\n }\n }, this._config.delay.show)\n }\n\n _leave() {\n if (this._isWithActiveTrigger()) {\n return\n }\n\n this._isHovered = false\n\n this._setTimeout(() => {\n if (!this._isHovered) {\n this.hide()\n }\n }, this._config.delay.hide)\n }\n\n _setTimeout(handler, timeout) {\n clearTimeout(this._timeout)\n this._timeout = setTimeout(handler, timeout)\n }\n\n _isWithActiveTrigger() {\n return Object.values(this._activeTrigger).includes(true)\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n for (const dataAttribute of Object.keys(dataAttributes)) {\n if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n delete dataAttributes[dataAttribute]\n }\n }\n\n config = {\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n }\n config = this._mergeConfigObj(config)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n _configAfterMerge(config) {\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 return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n for (const [key, value] of Object.entries(this._config)) {\n if (this.constructor.Default[key] !== value) {\n config[key] = value\n }\n }\n\n config.selector = false\n config.trigger = 'manual'\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 _disposePopper() {\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n\n if (this.tip) {\n this.tip.remove()\n this.tip = null\n }\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tooltip.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 * jQuery\n */\n\ndefineJQueryPlugin(Tooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Tooltip from './tooltip.js'\nimport { defineJQueryPlugin } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'popover'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\nconst Default = {\n ...Tooltip.Default,\n content: '',\n offset: [0, 8],\n placement: 'right',\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 trigger: 'click'\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content: '(null|string|element|function)'\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 DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Overrides\n _isWithContent() {\n return this._getTitle() || this._getContent()\n }\n\n // Private\n _getContentForTemplate() {\n return {\n [SELECTOR_TITLE]: this._getTitle(),\n [SELECTOR_CONTENT]: this._getContent()\n }\n }\n\n _getContent() {\n return this._resolvePossibleFunction(this._config.content)\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 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 * jQuery\n */\n\ndefineJQueryPlugin(Popover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { defineJQueryPlugin, getElement, isDisabled, isVisible } from './util/index.js'\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_CLICK = `click${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_TARGET_LINKS = '[href]'\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_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst Default = {\n offset: null, // TODO: v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: '0px 0px -25%',\n smoothScroll: false,\n target: null,\n threshold: [0.1, 0.5, 1]\n}\n\nconst DefaultType = {\n offset: '(number|null)', // TODO v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: 'string',\n smoothScroll: 'boolean',\n target: 'element',\n threshold: 'array'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n // this._element is the observablesContainer and config.target the menu links wrapper\n this._targetLinks = new Map()\n this._observableSections = new Map()\n this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element\n this._activeTarget = null\n this._observer = null\n this._previousScrollData = {\n visibleEntryTop: 0,\n parentScrollTop: 0\n }\n this.refresh() // initialize\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 refresh() {\n this._initializeTargetsAndObservables()\n this._maybeEnableSmoothScroll()\n\n if (this._observer) {\n this._observer.disconnect()\n } else {\n this._observer = this._getNewObserver()\n }\n\n for (const section of this._observableSections.values()) {\n this._observer.observe(section)\n }\n }\n\n dispose() {\n this._observer.disconnect()\n super.dispose()\n }\n\n // Private\n _configAfterMerge(config) {\n // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case\n config.target = getElement(config.target) || document.body\n\n // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only\n config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin\n\n if (typeof config.threshold === 'string') {\n config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value))\n }\n\n return config\n }\n\n _maybeEnableSmoothScroll() {\n if (!this._config.smoothScroll) {\n return\n }\n\n // unregister any previous listeners\n EventHandler.off(this._config.target, EVENT_CLICK)\n\n EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n const observableSection = this._observableSections.get(event.target.hash)\n if (observableSection) {\n event.preventDefault()\n const root = this._rootElement || window\n const height = observableSection.offsetTop - this._element.offsetTop\n if (root.scrollTo) {\n root.scrollTo({ top: height, behavior: 'smooth' })\n return\n }\n\n // Chrome 60 doesn't support `scrollTo`\n root.scrollTop = height\n }\n })\n }\n\n _getNewObserver() {\n const options = {\n root: this._rootElement,\n threshold: this._config.threshold,\n rootMargin: this._config.rootMargin\n }\n\n return new IntersectionObserver(entries => this._observerCallback(entries), options)\n }\n\n // The logic of selection\n _observerCallback(entries) {\n const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`)\n const activate = entry => {\n this._previousScrollData.visibleEntryTop = entry.target.offsetTop\n this._process(targetElement(entry))\n }\n\n const parentScrollTop = (this._rootElement || document.documentElement).scrollTop\n const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop\n this._previousScrollData.parentScrollTop = parentScrollTop\n\n for (const entry of entries) {\n if (!entry.isIntersecting) {\n this._activeTarget = null\n this._clearActiveClass(targetElement(entry))\n\n continue\n }\n\n const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop\n // if we are scrolling down, pick the bigger offsetTop\n if (userScrollsDown && entryIsLowerThanPrevious) {\n activate(entry)\n // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n if (!parentScrollTop) {\n return\n }\n\n continue\n }\n\n // if we are scrolling up, pick the smallest offsetTop\n if (!userScrollsDown && !entryIsLowerThanPrevious) {\n activate(entry)\n }\n }\n }\n\n _initializeTargetsAndObservables() {\n this._targetLinks = new Map()\n this._observableSections = new Map()\n\n const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target)\n\n for (const anchor of targetLinks) {\n // ensure that the anchor has an id and is not disabled\n if (!anchor.hash || isDisabled(anchor)) {\n continue\n }\n\n const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element)\n\n // ensure that the observableSection exists & is visible\n if (isVisible(observableSection)) {\n this._targetLinks.set(decodeURI(anchor.hash), anchor)\n this._observableSections.set(anchor.hash, observableSection)\n }\n }\n }\n\n _process(target) {\n if (this._activeTarget === target) {\n return\n }\n\n this._clearActiveClass(this._config.target)\n this._activeTarget = target\n target.classList.add(CLASS_NAME_ACTIVE)\n this._activateParents(target)\n\n EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target })\n }\n\n _activateParents(target) {\n // Activate dropdown parents\n if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, target.closest(SELECTOR_DROPDOWN))\n .classList.add(CLASS_NAME_ACTIVE)\n return\n }\n\n for (const listGroup of SelectorEngine.parents(target, 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_LINK_ITEMS)) {\n item.classList.add(CLASS_NAME_ACTIVE)\n }\n }\n }\n\n _clearActiveClass(parent) {\n parent.classList.remove(CLASS_NAME_ACTIVE)\n\n const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE}`, parent)\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 (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\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 ScrollSpy.getOrCreateInstance(spy)\n }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(ScrollSpy)\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { defineJQueryPlugin, getNextActiveElement, isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_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}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}`\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_DROPDOWN = 'dropdown'\n\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_MENU = '.dropdown-menu'\nconst NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`\n\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]'\nconst SELECTOR_OUTER = '.nav-item, .list-group-item'\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]' // TODO: could only be `tab` in v6\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"pill\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"list\"]`\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n constructor(element) {\n super(element)\n this._parent = this._element.closest(SELECTOR_TAB_PANEL)\n\n if (!this._parent) {\n return\n // TODO: should throw exception in v6\n // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`)\n }\n\n // Set up initial aria attributes\n this._setInitialAttributes(this._parent, this._getChildren())\n\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n // Getters\n static get NAME() {\n return NAME\n }\n\n // Public\n show() { // Shows this elem and deactivate the active sibling if exists\n const innerElem = this._element\n if (this._elemIsActive(innerElem)) {\n return\n }\n\n // Search for active tab on same parent to deactivate it\n const active = this._getActiveElem()\n\n const hideEvent = active ?\n EventHandler.trigger(active, EVENT_HIDE, { relatedTarget: innerElem }) :\n null\n\n const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW, { relatedTarget: active })\n\n if (showEvent.defaultPrevented || (hideEvent && hideEvent.defaultPrevented)) {\n return\n }\n\n this._deactivate(active, innerElem)\n this._activate(innerElem, active)\n }\n\n // Private\n _activate(element, relatedElem) {\n if (!element) {\n return\n }\n\n element.classList.add(CLASS_NAME_ACTIVE)\n\n this._activate(SelectorEngine.getElementFromSelector(element)) // Search and activate/show the proper section\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.add(CLASS_NAME_SHOW)\n return\n }\n\n element.removeAttribute('tabindex')\n element.setAttribute('aria-selected', true)\n this._toggleDropDown(element, true)\n EventHandler.trigger(element, EVENT_SHOWN, {\n relatedTarget: relatedElem\n })\n }\n\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n }\n\n _deactivate(element, relatedElem) {\n if (!element) {\n return\n }\n\n element.classList.remove(CLASS_NAME_ACTIVE)\n element.blur()\n\n this._deactivate(SelectorEngine.getElementFromSelector(element)) // Search and deactivate the shown section too\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.remove(CLASS_NAME_SHOW)\n return\n }\n\n element.setAttribute('aria-selected', false)\n element.setAttribute('tabindex', '-1')\n this._toggleDropDown(element, false)\n EventHandler.trigger(element, EVENT_HIDDEN, { relatedTarget: relatedElem })\n }\n\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n }\n\n _keydown(event) {\n if (!([ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key))) {\n return\n }\n\n event.stopPropagation()// stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n event.preventDefault()\n\n const children = this._getChildren().filter(element => !isDisabled(element))\n let nextActiveElement\n\n if ([HOME_KEY, END_KEY].includes(event.key)) {\n nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1]\n } else {\n const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key)\n nextActiveElement = getNextActiveElement(children, event.target, isNext, true)\n }\n\n if (nextActiveElement) {\n nextActiveElement.focus({ preventScroll: true })\n Tab.getOrCreateInstance(nextActiveElement).show()\n }\n }\n\n _getChildren() { // collection of inner elements\n return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent)\n }\n\n _getActiveElem() {\n return this._getChildren().find(child => this._elemIsActive(child)) || null\n }\n\n _setInitialAttributes(parent, children) {\n this._setAttributeIfNotExists(parent, 'role', 'tablist')\n\n for (const child of children) {\n this._setInitialAttributesOnChild(child)\n }\n }\n\n _setInitialAttributesOnChild(child) {\n child = this._getInnerElement(child)\n const isActive = this._elemIsActive(child)\n const outerElem = this._getOuterElement(child)\n child.setAttribute('aria-selected', isActive)\n\n if (outerElem !== child) {\n this._setAttributeIfNotExists(outerElem, 'role', 'presentation')\n }\n\n if (!isActive) {\n child.setAttribute('tabindex', '-1')\n }\n\n this._setAttributeIfNotExists(child, 'role', 'tab')\n\n // set attributes to the related panel too\n this._setInitialAttributesOnTargetPanel(child)\n }\n\n _setInitialAttributesOnTargetPanel(child) {\n const target = SelectorEngine.getElementFromSelector(child)\n\n if (!target) {\n return\n }\n\n this._setAttributeIfNotExists(target, 'role', 'tabpanel')\n\n if (child.id) {\n this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`)\n }\n }\n\n _toggleDropDown(element, open) {\n const outerElem = this._getOuterElement(element)\n if (!outerElem.classList.contains(CLASS_DROPDOWN)) {\n return\n }\n\n const toggle = (selector, className) => {\n const element = SelectorEngine.findOne(selector, outerElem)\n if (element) {\n element.classList.toggle(className, open)\n }\n }\n\n toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE)\n toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW)\n outerElem.setAttribute('aria-expanded', open)\n }\n\n _setAttributeIfNotExists(element, attribute, value) {\n if (!element.hasAttribute(attribute)) {\n element.setAttribute(attribute, value)\n }\n }\n\n _elemIsActive(elem) {\n return elem.classList.contains(CLASS_NAME_ACTIVE)\n }\n\n // Try to get the inner element (usually the .nav-link)\n _getInnerElement(elem) {\n return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem)\n }\n\n // Try to get the outer element (usually the .nav-item)\n _getOuterElement(elem) {\n return elem.closest(SELECTOR_OUTER) || elem\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 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]()\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 Tab.getOrCreateInstance(this).show()\n})\n\n/**\n * Initialize on focus\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n Tab.getOrCreateInstance(element)\n }\n})\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tab)\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { defineJQueryPlugin, reflow } from './util/index.js'\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, config)\n\n this._timeout = null\n this._hasMouseInteraction = false\n this._hasKeyboardInteraction = false\n this._setListeners()\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 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, CLASS_NAME_SHOWING)\n\n this._queueCallback(complete, this._element, this._config.animation)\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 const complete = () => {\n this._element.classList.add(CLASS_NAME_HIDE) // @deprecated\n this._element.classList.remove(CLASS_NAME_SHOWING, 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.isShown()) {\n this._element.classList.remove(CLASS_NAME_SHOW)\n }\n\n super.dispose()\n }\n\n isShown() {\n return this._element.classList.contains(CLASS_NAME_SHOW)\n }\n\n // Private\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 }\n\n case 'focusin':\n case 'focusout': {\n this._hasKeyboardInteraction = isInteracting\n break\n }\n\n default: {\n break\n }\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 index.umd.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Alert from './src/alert.js'\nimport Button from './src/button.js'\nimport Carousel from './src/carousel.js'\nimport Collapse from './src/collapse.js'\nimport Dropdown from './src/dropdown.js'\nimport Modal from './src/modal.js'\nimport Offcanvas from './src/offcanvas.js'\nimport Popover from './src/popover.js'\nimport ScrollSpy from './src/scrollspy.js'\nimport Tab from './src/tab.js'\nimport Toast from './src/toast.js'\nimport Tooltip from './src/tooltip.js'\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"],"mappings":"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"}