fnschool 20250109.80531.837__py3-none-any.whl → 20251011.81638.854__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of fnschool might be problematic. Click here for more details.

Files changed (278) hide show
  1. fnschoo1/__init__.py +53 -0
  2. fnschoo1/canteen/admin.py +3 -0
  3. fnschoo1/canteen/apps.py +6 -0
  4. fnschoo1/canteen/forms.py +84 -0
  5. fnschoo1/canteen/migrations/0001_initial.py +119 -0
  6. fnschoo1/canteen/migrations/0002_ingredient_is_disabled.py +20 -0
  7. fnschoo1/canteen/migrations/0003_consumption_is_disabled_alter_ingredient_is_disabled.py +23 -0
  8. fnschoo1/canteen/migrations/0004_alter_ingredient_name_category_and_more.py +66 -0
  9. fnschoo1/canteen/migrations/0005_alter_category_created_at_alter_category_name_and_more.py +41 -0
  10. fnschoo1/canteen/migrations/0006_category_is_disabled_alter_category_user_and_more.py +49 -0
  11. fnschoo1/canteen/migrations/0007_alter_consumption_amount_used_and_more.py +30 -0
  12. fnschoo1/canteen/migrations/0008_category_abbreviation_mealtype.py +67 -0
  13. fnschoo1/canteen/migrations/0009_alter_category_abbreviation_and_more.py +55 -0
  14. fnschoo1/canteen/migrations/0010_alter_consumption_options_alter_ingredient_options_and_more.py +215 -0
  15. fnschoo1/canteen/migrations/0011_category_pin_to_consumptions_top.py +23 -0
  16. fnschoo1/canteen/migrations/0012_alter_ingredient_storage_date.py +18 -0
  17. fnschoo1/canteen/models.py +179 -0
  18. fnschoo1/canteen/templates/canteen/category/create.html +17 -0
  19. fnschoo1/canteen/templates/canteen/category/delete.html +61 -0
  20. fnschoo1/canteen/templates/canteen/category/list.html +63 -0
  21. fnschoo1/canteen/templates/canteen/category/update.html +23 -0
  22. fnschoo1/canteen/templates/canteen/close.html +11 -0
  23. fnschoo1/canteen/templates/canteen/consumption/_create.html +19 -0
  24. fnschoo1/canteen/templates/canteen/consumption/create.html +456 -0
  25. fnschoo1/canteen/templates/canteen/ingredient/close.html +11 -0
  26. fnschoo1/canteen/templates/canteen/ingredient/create.html +19 -0
  27. fnschoo1/canteen/templates/canteen/ingredient/create_one.html +17 -0
  28. fnschoo1/canteen/templates/canteen/ingredient/delete.html +41 -0
  29. fnschoo1/canteen/templates/canteen/ingredient/list.html +128 -0
  30. fnschoo1/canteen/templates/canteen/ingredient/update.html +23 -0
  31. fnschoo1/canteen/templates/canteen/meal_type/create.html +17 -0
  32. fnschoo1/canteen/templates/canteen/meal_type/delete.html +56 -0
  33. fnschoo1/canteen/templates/canteen/meal_type/list.html +59 -0
  34. fnschoo1/canteen/templates/canteen/meal_type/update.html +23 -0
  35. fnschoo1/canteen/tests.py +3 -0
  36. fnschoo1/canteen/urls.py +116 -0
  37. fnschoo1/canteen/views.py +814 -0
  38. fnschoo1/canteen/workbook/generate.py +2098 -0
  39. fnschoo1/db.sqlite3 +0 -0
  40. fnschoo1/fnschool/__init__.py +13 -0
  41. fnschoo1/fnschool/asgi.py +16 -0
  42. fnschoo1/fnschool/settings.py +167 -0
  43. fnschoo1/fnschool/templatetags/fnschool_tags.py +27 -0
  44. fnschoo1/fnschool/urls.py +30 -0
  45. fnschoo1/fnschool/views.py +9 -0
  46. fnschoo1/fnschool/wsgi.py +16 -0
  47. fnschoo1/locale/en/LC_MESSAGES/django.mo +0 -0
  48. fnschoo1/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
  49. fnschoo1/manage.py +25 -0
  50. fnschoo1/profiles/admin.py +27 -0
  51. fnschoo1/profiles/apps.py +12 -0
  52. fnschoo1/profiles/forms.py +67 -0
  53. fnschoo1/profiles/migrations/0001_initial.py +192 -0
  54. fnschoo1/profiles/migrations/0002_alter_profile_bio.py +20 -0
  55. fnschoo1/profiles/migrations/0003_alter_profile_options_alter_profile_address_and_more.py +67 -0
  56. fnschoo1/profiles/migrations/0004_profile_gender.py +26 -0
  57. fnschoo1/profiles/migrations/0005_alter_profile_gender.py +23 -0
  58. fnschoo1/profiles/models.py +60 -0
  59. fnschoo1/profiles/signals.py +20 -0
  60. fnschoo1/profiles/templates/profiles/create.html +16 -0
  61. fnschoo1/profiles/templates/profiles/detail.html +14 -0
  62. fnschoo1/profiles/templates/profiles/edit.html +12 -0
  63. fnschoo1/profiles/templates/profiles/log_in.html +20 -0
  64. fnschoo1/profiles/templates/profiles/log_out.html +12 -0
  65. fnschoo1/profiles/tests.py +3 -0
  66. fnschoo1/profiles/urls.py +15 -0
  67. fnschoo1/profiles/views.py +63 -0
  68. fnschoo1/static/css/bootstrap.min.css +11776 -0
  69. fnschoo1/static/css/fnschool.css +26 -0
  70. fnschoo1/static/images/favicon.ico +0 -0
  71. fnschoo1/static/js/bootstrap.bundle.min.js +4223 -0
  72. fnschoo1/static/js/bootstrap.min.js +2919 -0
  73. fnschoo1/static/js/fnschool.js +84 -0
  74. fnschoo1/static/js/jquery.min.js +5413 -0
  75. fnschoo1/static/js/jquery.slim.min.js +4331 -0
  76. fnschoo1/static/js/popper.min.js +1306 -0
  77. fnschoo1/static_collected/admin/css/autocomplete.css +377 -0
  78. fnschoo1/static_collected/admin/css/base.css +1224 -0
  79. fnschoo1/static_collected/admin/css/changelists.css +334 -0
  80. fnschoo1/static_collected/admin/css/dark_mode.css +136 -0
  81. fnschoo1/static_collected/admin/css/dashboard.css +30 -0
  82. fnschoo1/static_collected/admin/css/forms.css +546 -0
  83. fnschoo1/static_collected/admin/css/login.css +62 -0
  84. fnschoo1/static_collected/admin/css/nav_sidebar.css +145 -0
  85. fnschoo1/static_collected/admin/css/responsive.css +1043 -0
  86. fnschoo1/static_collected/admin/css/responsive_rtl.css +84 -0
  87. fnschoo1/static_collected/admin/css/rtl.css +311 -0
  88. fnschoo1/static_collected/admin/css/vendor/select2/select2.css +708 -0
  89. fnschoo1/static_collected/admin/css/vendor/select2/select2.min.css +1 -0
  90. fnschoo1/static_collected/admin/css/widgets.css +639 -0
  91. fnschoo1/static_collected/admin/js/SelectBox.js +128 -0
  92. fnschoo1/static_collected/admin/js/SelectFilter2.js +503 -0
  93. fnschoo1/static_collected/admin/js/actions.js +232 -0
  94. fnschoo1/static_collected/admin/js/admin/DateTimeShortcuts.js +496 -0
  95. fnschoo1/static_collected/admin/js/admin/RelatedObjectLookups.js +276 -0
  96. fnschoo1/static_collected/admin/js/autocomplete.js +33 -0
  97. fnschoo1/static_collected/admin/js/calendar.js +251 -0
  98. fnschoo1/static_collected/admin/js/cancel.js +29 -0
  99. fnschoo1/static_collected/admin/js/change_form.js +21 -0
  100. fnschoo1/static_collected/admin/js/collapse.js +43 -0
  101. fnschoo1/static_collected/admin/js/core.js +174 -0
  102. fnschoo1/static_collected/admin/js/filters.js +37 -0
  103. fnschoo1/static_collected/admin/js/inlines.js +439 -0
  104. fnschoo1/static_collected/admin/js/jquery.init.js +8 -0
  105. fnschoo1/static_collected/admin/js/nav_sidebar.js +81 -0
  106. fnschoo1/static_collected/admin/js/popup_response.js +24 -0
  107. fnschoo1/static_collected/admin/js/prepopulate.js +43 -0
  108. fnschoo1/static_collected/admin/js/prepopulate_init.js +20 -0
  109. fnschoo1/static_collected/admin/js/theme.js +57 -0
  110. fnschoo1/static_collected/admin/js/urlify.js +529 -0
  111. fnschoo1/static_collected/admin/js/vendor/jquery/jquery.js +10913 -0
  112. fnschoo1/static_collected/admin/js/vendor/jquery/jquery.min.js +2 -0
  113. fnschoo1/static_collected/admin/js/vendor/select2/i18n/af.js +43 -0
  114. fnschoo1/static_collected/admin/js/vendor/select2/i18n/ar.js +36 -0
  115. fnschoo1/static_collected/admin/js/vendor/select2/i18n/az.js +33 -0
  116. fnschoo1/static_collected/admin/js/vendor/select2/i18n/bg.js +38 -0
  117. fnschoo1/static_collected/admin/js/vendor/select2/i18n/bn.js +39 -0
  118. fnschoo1/static_collected/admin/js/vendor/select2/i18n/bs.js +48 -0
  119. fnschoo1/static_collected/admin/js/vendor/select2/i18n/ca.js +41 -0
  120. fnschoo1/static_collected/admin/js/vendor/select2/i18n/cs.js +62 -0
  121. fnschoo1/static_collected/admin/js/vendor/select2/i18n/da.js +37 -0
  122. fnschoo1/static_collected/admin/js/vendor/select2/i18n/de.js +41 -0
  123. fnschoo1/static_collected/admin/js/vendor/select2/i18n/dsb.js +51 -0
  124. fnschoo1/static_collected/admin/js/vendor/select2/i18n/el.js +43 -0
  125. fnschoo1/static_collected/admin/js/vendor/select2/i18n/en.js +41 -0
  126. fnschoo1/static_collected/admin/js/vendor/select2/i18n/es.js +41 -0
  127. fnschoo1/static_collected/admin/js/vendor/select2/i18n/et.js +38 -0
  128. fnschoo1/static_collected/admin/js/vendor/select2/i18n/eu.js +45 -0
  129. fnschoo1/static_collected/admin/js/vendor/select2/i18n/fa.js +42 -0
  130. fnschoo1/static_collected/admin/js/vendor/select2/i18n/fi.js +42 -0
  131. fnschoo1/static_collected/admin/js/vendor/select2/i18n/fr.js +43 -0
  132. fnschoo1/static_collected/admin/js/vendor/select2/i18n/gl.js +40 -0
  133. fnschoo1/static_collected/admin/js/vendor/select2/i18n/he.js +44 -0
  134. fnschoo1/static_collected/admin/js/vendor/select2/i18n/hi.js +40 -0
  135. fnschoo1/static_collected/admin/js/vendor/select2/i18n/hr.js +45 -0
  136. fnschoo1/static_collected/admin/js/vendor/select2/i18n/hsb.js +51 -0
  137. fnschoo1/static_collected/admin/js/vendor/select2/i18n/hu.js +44 -0
  138. fnschoo1/static_collected/admin/js/vendor/select2/i18n/hy.js +40 -0
  139. fnschoo1/static_collected/admin/js/vendor/select2/i18n/id.js +36 -0
  140. fnschoo1/static_collected/admin/js/vendor/select2/i18n/is.js +37 -0
  141. fnschoo1/static_collected/admin/js/vendor/select2/i18n/it.js +43 -0
  142. fnschoo1/static_collected/admin/js/vendor/select2/i18n/ja.js +40 -0
  143. fnschoo1/static_collected/admin/js/vendor/select2/i18n/ka.js +42 -0
  144. fnschoo1/static_collected/admin/js/vendor/select2/i18n/km.js +38 -0
  145. fnschoo1/static_collected/admin/js/vendor/select2/i18n/ko.js +42 -0
  146. fnschoo1/static_collected/admin/js/vendor/select2/i18n/lt.js +45 -0
  147. fnschoo1/static_collected/admin/js/vendor/select2/i18n/lv.js +41 -0
  148. fnschoo1/static_collected/admin/js/vendor/select2/i18n/mk.js +42 -0
  149. fnschoo1/static_collected/admin/js/vendor/select2/i18n/ms.js +38 -0
  150. fnschoo1/static_collected/admin/js/vendor/select2/i18n/nb.js +38 -0
  151. fnschoo1/static_collected/admin/js/vendor/select2/i18n/ne.js +44 -0
  152. fnschoo1/static_collected/admin/js/vendor/select2/i18n/nl.js +46 -0
  153. fnschoo1/static_collected/admin/js/vendor/select2/i18n/pl.js +43 -0
  154. fnschoo1/static_collected/admin/js/vendor/select2/i18n/ps.js +41 -0
  155. fnschoo1/static_collected/admin/js/vendor/select2/i18n/pt-BR.js +39 -0
  156. fnschoo1/static_collected/admin/js/vendor/select2/i18n/pt.js +41 -0
  157. fnschoo1/static_collected/admin/js/vendor/select2/i18n/ro.js +43 -0
  158. fnschoo1/static_collected/admin/js/vendor/select2/i18n/ru.js +48 -0
  159. fnschoo1/static_collected/admin/js/vendor/select2/i18n/sk.js +61 -0
  160. fnschoo1/static_collected/admin/js/vendor/select2/i18n/sl.js +41 -0
  161. fnschoo1/static_collected/admin/js/vendor/select2/i18n/sq.js +43 -0
  162. fnschoo1/static_collected/admin/js/vendor/select2/i18n/sr-Cyrl.js +48 -0
  163. fnschoo1/static_collected/admin/js/vendor/select2/i18n/sr.js +48 -0
  164. fnschoo1/static_collected/admin/js/vendor/select2/i18n/sv.js +40 -0
  165. fnschoo1/static_collected/admin/js/vendor/select2/i18n/th.js +36 -0
  166. fnschoo1/static_collected/admin/js/vendor/select2/i18n/tk.js +36 -0
  167. fnschoo1/static_collected/admin/js/vendor/select2/i18n/tr.js +40 -0
  168. fnschoo1/static_collected/admin/js/vendor/select2/i18n/uk.js +59 -0
  169. fnschoo1/static_collected/admin/js/vendor/select2/i18n/vi.js +37 -0
  170. fnschoo1/static_collected/admin/js/vendor/select2/i18n/zh-CN.js +36 -0
  171. fnschoo1/static_collected/admin/js/vendor/select2/i18n/zh-TW.js +33 -0
  172. fnschoo1/static_collected/admin/js/vendor/select2/select2.full.js +7115 -0
  173. fnschoo1/static_collected/admin/js/vendor/select2/select2.full.min.js +2 -0
  174. fnschoo1/static_collected/admin/js/vendor/xregexp/xregexp.js +4993 -0
  175. fnschoo1/static_collected/admin/js/vendor/xregexp/xregexp.min.js +160 -0
  176. fnschoo1/static_collected/css/bootstrap.min.css +11776 -0
  177. fnschoo1/static_collected/css/fnschool.css +26 -0
  178. fnschoo1/static_collected/images/favicon.ico +0 -0
  179. fnschoo1/static_collected/js/bootstrap.bundle.min.js +4223 -0
  180. fnschoo1/static_collected/js/bootstrap.min.js +2919 -0
  181. fnschoo1/static_collected/js/fnschool.js +84 -0
  182. fnschoo1/static_collected/js/jquery.min.js +5413 -0
  183. fnschoo1/static_collected/js/jquery.slim.min.js +4331 -0
  184. fnschoo1/static_collected/js/popper.min.js +1306 -0
  185. fnschoo1/templates/base/_css.html +1 -0
  186. fnschoo1/templates/base/_js.html +15 -0
  187. fnschoo1/templates/base/content.html +30 -0
  188. fnschoo1/templates/base/header_content_footer.html +35 -0
  189. fnschoo1/templates/close.html +11 -0
  190. fnschoo1/templates/home.html +51 -0
  191. fnschoo1/templates/includes/_footer.html +39 -0
  192. fnschoo1/templates/includes/_header.html +77 -0
  193. fnschoo1/templates/includes/_navigation.html +0 -0
  194. fnschoo1/templates/includes/_paginator.html +27 -0
  195. fnschoo1/templates/registration/logged_out.html +0 -0
  196. fnschoo1/templates/registration/login.html +0 -0
  197. fnschool-20251011.81638.854.dist-info/METADATA +179 -0
  198. fnschool-20251011.81638.854.dist-info/RECORD +209 -0
  199. {fnschool-20250109.80531.837.dist-info → fnschool-20251011.81638.854.dist-info}/WHEEL +1 -1
  200. fnschool-20251011.81638.854.dist-info/entry_points.txt +2 -0
  201. fnschool-20251011.81638.854.dist-info/top_level.txt +1 -0
  202. fnschool/__init__.py +0 -35
  203. fnschool/__main__.py +0 -16
  204. fnschool/app.py +0 -103
  205. fnschool/canteen/__init__.py +0 -3
  206. fnschool/canteen/__main__.py +0 -3
  207. fnschool/canteen/bill.py +0 -253
  208. fnschool/canteen/canteen.py +0 -1
  209. fnschool/canteen/canteen.toml +0 -61
  210. fnschool/canteen/config.py +0 -10
  211. fnschool/canteen/consuming.py +0 -53
  212. fnschool/canteen/currency.py +0 -17
  213. fnschool/canteen/data/bill.i18n.xlsx +0 -0
  214. fnschool/canteen/data/bill.xlsx +0 -0
  215. fnschool/canteen/data/consuming.xlsx +0 -0
  216. fnschool/canteen/data/purchase_list.xlsx +0 -0
  217. fnschool/canteen/entry.py +0 -40
  218. fnschool/canteen/food.py +0 -206
  219. fnschool/canteen/food_classes.py +0 -33
  220. fnschool/canteen/food_classes.toml +0 -64
  221. fnschool/canteen/operator.py +0 -91
  222. fnschool/canteen/path.py +0 -28
  223. fnschool/canteen/spreadsheet/base.py +0 -213
  224. fnschool/canteen/spreadsheet/consuming.py +0 -310
  225. fnschool/canteen/spreadsheet/consumingsum.py +0 -76
  226. fnschool/canteen/spreadsheet/cover.py +0 -64
  227. fnschool/canteen/spreadsheet/ctspreadsheet.py +0 -351
  228. fnschool/canteen/spreadsheet/food.py +0 -680
  229. fnschool/canteen/spreadsheet/inventory.py +0 -375
  230. fnschool/canteen/spreadsheet/merging.py +0 -340
  231. fnschool/canteen/spreadsheet/preconsuming.py +0 -329
  232. fnschool/canteen/spreadsheet/purchasing.py +0 -885
  233. fnschool/canteen/spreadsheet/purchasingsum.py +0 -110
  234. fnschool/canteen/spreadsheet/spreadsheet.py +0 -363
  235. fnschool/canteen/spreadsheet/translating.py +0 -12
  236. fnschool/canteen/spreadsheet/unwarehousing.py +0 -178
  237. fnschool/canteen/spreadsheet/unwarehousingsum.py +0 -11
  238. fnschool/canteen/spreadsheet/warehousing.py +0 -360
  239. fnschool/canteen/spreadsheet/workbook.py +0 -17
  240. fnschool/canteen/test.py +0 -97
  241. fnschool/config.py +0 -48
  242. fnschool/entry.py +0 -67
  243. fnschool/exam/__init__.py +0 -8
  244. fnschool/exam/data/parental_emails.xlsx +0 -0
  245. fnschool/exam/data/score.xlsx +0 -0
  246. fnschool/exam/email.py +0 -349
  247. fnschool/exam/entry.py +0 -36
  248. fnschool/exam/language.py +0 -19
  249. fnschool/exam/path.py +0 -24
  250. fnschool/exam/score.py +0 -1191
  251. fnschool/exam/subject.py +0 -20
  252. fnschool/exam/teacher.py +0 -54
  253. fnschool/external.py +0 -89
  254. fnschool/games/__init__.py +0 -1
  255. fnschool/games/__main__.py +0 -1
  256. fnschool/games/games.py +0 -1
  257. fnschool/inoutput.py +0 -97
  258. fnschool/language.py +0 -40
  259. fnschool/locales/en_US/LC_MESSAGES/fnschool.mo +0 -0
  260. fnschool/locales/zh_CN/LC_MESSAGES/fnschool.mo +0 -0
  261. fnschool/locales/zh_HK/LC_MESSAGES/fnschool.mo +0 -0
  262. fnschool/locales/zh_SG/LC_MESSAGES/fnschool.mo +0 -0
  263. fnschool/locales/zh_TW/LC_MESSAGES/fnschool.mo +0 -0
  264. fnschool/path.py +0 -45
  265. fnschool/test.py +0 -24
  266. fnschool/user.py +0 -262
  267. fnschool-20250109.80531.837.dist-info/METADATA +0 -342
  268. fnschool-20250109.80531.837.dist-info/RECORD +0 -78
  269. fnschool-20250109.80531.837.dist-info/entry_points.txt +0 -5
  270. fnschool-20250109.80531.837.dist-info/top_level.txt +0 -1
  271. /fnschool/canteen/consume.py → /fnschoo1/canteen/__init__.py +0 -0
  272. /fnschool/canteen/food_recount.toml → /fnschoo1/canteen/migrations/__init__.py +0 -0
  273. {fnschool/canteen/spreadsheet → fnschoo1/canteen/workbook}/__init__.py +0 -0
  274. /fnschool/exam/__main__.py → /fnschoo1/fnschool/templatetags/__init__.py +0 -0
  275. /fnschool/canteen/food_recounts.toml → /fnschoo1/profiles/__init__.py +0 -0
  276. /fnschool/canteen/warehouse.py → /fnschoo1/profiles/migrations/__init__.py +0 -0
  277. /fnschool/canteen/workbook.toml → /fnschoo1/templates/base/_content.html +0 -0
  278. {fnschool-20250109.80531.837.dist-info → fnschool-20251011.81638.854.dist-info/licenses}/LICENSE +0 -0
@@ -0,0 +1,2919 @@
1
+ /*!
2
+ * Bootstrap v5.3.8 (https://getbootstrap.com/)
3
+ * Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
+ */
6
+ !(function (t, e) {
7
+ "object" == typeof exports && "undefined" != typeof module
8
+ ? (module.exports = e(require("@popperjs/core")))
9
+ : "function" == typeof define && define.amd
10
+ ? define(["@popperjs/core"], e)
11
+ : ((t =
12
+ "undefined" != typeof globalThis ? globalThis : t || self).bootstrap =
13
+ e(t.Popper));
14
+ })(this, function (t) {
15
+ "use strict";
16
+ function e(t) {
17
+ const e = Object.create(null, {
18
+ [Symbol.toStringTag]: { value: "Module" },
19
+ });
20
+ if (t)
21
+ for (const i in t)
22
+ if ("default" !== i) {
23
+ const s = Object.getOwnPropertyDescriptor(t, i);
24
+ Object.defineProperty(
25
+ e,
26
+ i,
27
+ s.get ? s : { enumerable: !0, get: () => t[i] },
28
+ );
29
+ }
30
+ return (e.default = t), Object.freeze(e);
31
+ }
32
+ const i = e(t),
33
+ s = new Map(),
34
+ n = {
35
+ set(t, e, i) {
36
+ s.has(t) || s.set(t, new Map());
37
+ const n = s.get(t);
38
+ n.has(e) || 0 === n.size
39
+ ? n.set(e, i)
40
+ : console.error(
41
+ `Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`,
42
+ );
43
+ },
44
+ get: (t, e) => (s.has(t) && s.get(t).get(e)) || null,
45
+ remove(t, e) {
46
+ if (!s.has(t)) return;
47
+ const i = s.get(t);
48
+ i.delete(e), 0 === i.size && s.delete(t);
49
+ },
50
+ },
51
+ o = "transitionend",
52
+ r = (t) => (
53
+ t &&
54
+ window.CSS &&
55
+ window.CSS.escape &&
56
+ (t = t.replace(/#([^\s"#']+)/g, (t, e) => `#${CSS.escape(e)}`)),
57
+ t
58
+ ),
59
+ a = (t) =>
60
+ null == t
61
+ ? `${t}`
62
+ : Object.prototype.toString
63
+ .call(t)
64
+ .match(/\s([a-z]+)/i)[1]
65
+ .toLowerCase(),
66
+ l = (t) => {
67
+ t.dispatchEvent(new Event(o));
68
+ },
69
+ c = (t) =>
70
+ !(!t || "object" != typeof t) &&
71
+ (void 0 !== t.jquery && (t = t[0]), void 0 !== t.nodeType),
72
+ h = (t) =>
73
+ c(t)
74
+ ? t.jquery
75
+ ? t[0]
76
+ : t
77
+ : "string" == typeof t && t.length > 0
78
+ ? document.querySelector(r(t))
79
+ : null,
80
+ d = (t) => {
81
+ if (!c(t) || 0 === t.getClientRects().length) return !1;
82
+ const e =
83
+ "visible" === getComputedStyle(t).getPropertyValue("visibility"),
84
+ i = t.closest("details:not([open])");
85
+ if (!i) return e;
86
+ if (i !== t) {
87
+ const e = t.closest("summary");
88
+ if (e && e.parentNode !== i) return !1;
89
+ if (null === e) return !1;
90
+ }
91
+ return e;
92
+ },
93
+ u = (t) =>
94
+ !t ||
95
+ t.nodeType !== Node.ELEMENT_NODE ||
96
+ !!t.classList.contains("disabled") ||
97
+ (void 0 !== t.disabled
98
+ ? t.disabled
99
+ : t.hasAttribute("disabled") && "false" !== t.getAttribute("disabled")),
100
+ _ = (t) => {
101
+ if (!document.documentElement.attachShadow) return null;
102
+ if ("function" == typeof t.getRootNode) {
103
+ const e = t.getRootNode();
104
+ return e instanceof ShadowRoot ? e : null;
105
+ }
106
+ return t instanceof ShadowRoot
107
+ ? t
108
+ : t.parentNode
109
+ ? _(t.parentNode)
110
+ : null;
111
+ },
112
+ g = () => {},
113
+ f = (t) => {
114
+ t.offsetHeight;
115
+ },
116
+ m = () =>
117
+ window.jQuery && !document.body.hasAttribute("data-bs-no-jquery")
118
+ ? window.jQuery
119
+ : null,
120
+ p = [],
121
+ b = () => "rtl" === document.documentElement.dir,
122
+ v = (t) => {
123
+ var e;
124
+ (e = () => {
125
+ const e = m();
126
+ if (e) {
127
+ const i = t.NAME,
128
+ s = e.fn[i];
129
+ (e.fn[i] = t.jQueryInterface),
130
+ (e.fn[i].Constructor = t),
131
+ (e.fn[i].noConflict = () => ((e.fn[i] = s), t.jQueryInterface));
132
+ }
133
+ }),
134
+ "loading" === document.readyState
135
+ ? (p.length ||
136
+ document.addEventListener("DOMContentLoaded", () => {
137
+ for (const t of p) t();
138
+ }),
139
+ p.push(e))
140
+ : e();
141
+ },
142
+ y = (t, e = [], i = t) => ("function" == typeof t ? t.call(...e) : i),
143
+ w = (t, e, i = !0) => {
144
+ if (!i) return void y(t);
145
+ const s =
146
+ ((t) => {
147
+ if (!t) return 0;
148
+ let { transitionDuration: e, transitionDelay: i } =
149
+ window.getComputedStyle(t);
150
+ const s = Number.parseFloat(e),
151
+ n = Number.parseFloat(i);
152
+ return s || n
153
+ ? ((e = e.split(",")[0]),
154
+ (i = i.split(",")[0]),
155
+ 1e3 * (Number.parseFloat(e) + Number.parseFloat(i)))
156
+ : 0;
157
+ })(e) + 5;
158
+ let n = !1;
159
+ const r = ({ target: i }) => {
160
+ i === e && ((n = !0), e.removeEventListener(o, r), y(t));
161
+ };
162
+ e.addEventListener(o, r),
163
+ setTimeout(() => {
164
+ n || l(e);
165
+ }, s);
166
+ },
167
+ A = (t, e, i, s) => {
168
+ const n = t.length;
169
+ let o = t.indexOf(e);
170
+ return -1 === o
171
+ ? !i && s
172
+ ? t[n - 1]
173
+ : t[0]
174
+ : ((o += i ? 1 : -1),
175
+ s && (o = (o + n) % n),
176
+ t[Math.max(0, Math.min(o, n - 1))]);
177
+ },
178
+ E = /[^.]*(?=\..*)\.|.*/,
179
+ C = /\..*/,
180
+ T = /::\d+$/,
181
+ k = {};
182
+ let $ = 1;
183
+ const S = { mouseenter: "mouseover", mouseleave: "mouseout" },
184
+ L = new Set([
185
+ "click",
186
+ "dblclick",
187
+ "mouseup",
188
+ "mousedown",
189
+ "contextmenu",
190
+ "mousewheel",
191
+ "DOMMouseScroll",
192
+ "mouseover",
193
+ "mouseout",
194
+ "mousemove",
195
+ "selectstart",
196
+ "selectend",
197
+ "keydown",
198
+ "keypress",
199
+ "keyup",
200
+ "orientationchange",
201
+ "touchstart",
202
+ "touchmove",
203
+ "touchend",
204
+ "touchcancel",
205
+ "pointerdown",
206
+ "pointermove",
207
+ "pointerup",
208
+ "pointerleave",
209
+ "pointercancel",
210
+ "gesturestart",
211
+ "gesturechange",
212
+ "gestureend",
213
+ "focus",
214
+ "blur",
215
+ "change",
216
+ "reset",
217
+ "select",
218
+ "submit",
219
+ "focusin",
220
+ "focusout",
221
+ "load",
222
+ "unload",
223
+ "beforeunload",
224
+ "resize",
225
+ "move",
226
+ "DOMContentLoaded",
227
+ "readystatechange",
228
+ "error",
229
+ "abort",
230
+ "scroll",
231
+ ]);
232
+ function O(t, e) {
233
+ return (e && `${e}::${$++}`) || t.uidEvent || $++;
234
+ }
235
+ function I(t) {
236
+ const e = O(t);
237
+ return (t.uidEvent = e), (k[e] = k[e] || {}), k[e];
238
+ }
239
+ function D(t, e, i = null) {
240
+ return Object.values(t).find(
241
+ (t) => t.callable === e && t.delegationSelector === i,
242
+ );
243
+ }
244
+ function N(t, e, i) {
245
+ const s = "string" == typeof e,
246
+ n = s ? i : e || i;
247
+ let o = j(t);
248
+ return L.has(o) || (o = t), [s, n, o];
249
+ }
250
+ function P(t, e, i, s, n) {
251
+ if ("string" != typeof e || !t) return;
252
+ let [o, r, a] = N(e, i, s);
253
+ if (e in S) {
254
+ const t = (t) =>
255
+ function (e) {
256
+ if (
257
+ !e.relatedTarget ||
258
+ (e.relatedTarget !== e.delegateTarget &&
259
+ !e.delegateTarget.contains(e.relatedTarget))
260
+ )
261
+ return t.call(this, e);
262
+ };
263
+ r = t(r);
264
+ }
265
+ const l = I(t),
266
+ c = l[a] || (l[a] = {}),
267
+ h = D(c, r, o ? i : null);
268
+ if (h) return void (h.oneOff = h.oneOff && n);
269
+ const d = O(r, e.replace(E, "")),
270
+ u = o
271
+ ? (function (t, e, i) {
272
+ return function s(n) {
273
+ const o = t.querySelectorAll(e);
274
+ for (let { target: r } = n; r && r !== this; r = r.parentNode)
275
+ for (const a of o)
276
+ if (a === r)
277
+ return (
278
+ z(n, { delegateTarget: r }),
279
+ s.oneOff && F.off(t, n.type, e, i),
280
+ i.apply(r, [n])
281
+ );
282
+ };
283
+ })(t, i, r)
284
+ : (function (t, e) {
285
+ return function i(s) {
286
+ return (
287
+ z(s, { delegateTarget: t }),
288
+ i.oneOff && F.off(t, s.type, e),
289
+ e.apply(t, [s])
290
+ );
291
+ };
292
+ })(t, r);
293
+ (u.delegationSelector = o ? i : null),
294
+ (u.callable = r),
295
+ (u.oneOff = n),
296
+ (u.uidEvent = d),
297
+ (c[d] = u),
298
+ t.addEventListener(a, u, o);
299
+ }
300
+ function x(t, e, i, s, n) {
301
+ const o = D(e[i], s, n);
302
+ o && (t.removeEventListener(i, o, Boolean(n)), delete e[i][o.uidEvent]);
303
+ }
304
+ function M(t, e, i, s) {
305
+ const n = e[i] || {};
306
+ for (const [o, r] of Object.entries(n))
307
+ o.includes(s) && x(t, e, i, r.callable, r.delegationSelector);
308
+ }
309
+ function j(t) {
310
+ return (t = t.replace(C, "")), S[t] || t;
311
+ }
312
+ const F = {
313
+ on(t, e, i, s) {
314
+ P(t, e, i, s, !1);
315
+ },
316
+ one(t, e, i, s) {
317
+ P(t, e, i, s, !0);
318
+ },
319
+ off(t, e, i, s) {
320
+ if ("string" != typeof e || !t) return;
321
+ const [n, o, r] = N(e, i, s),
322
+ a = r !== e,
323
+ l = I(t),
324
+ c = l[r] || {},
325
+ h = e.startsWith(".");
326
+ if (void 0 === o) {
327
+ if (h) for (const i of Object.keys(l)) M(t, l, i, e.slice(1));
328
+ for (const [i, s] of Object.entries(c)) {
329
+ const n = i.replace(T, "");
330
+ (a && !e.includes(n)) || x(t, l, r, s.callable, s.delegationSelector);
331
+ }
332
+ } else {
333
+ if (!Object.keys(c).length) return;
334
+ x(t, l, r, o, n ? i : null);
335
+ }
336
+ },
337
+ trigger(t, e, i) {
338
+ if ("string" != typeof e || !t) return null;
339
+ const s = m();
340
+ let n = null,
341
+ o = !0,
342
+ r = !0,
343
+ a = !1;
344
+ e !== j(e) &&
345
+ s &&
346
+ ((n = s.Event(e, i)),
347
+ s(t).trigger(n),
348
+ (o = !n.isPropagationStopped()),
349
+ (r = !n.isImmediatePropagationStopped()),
350
+ (a = n.isDefaultPrevented()));
351
+ const l = z(new Event(e, { bubbles: o, cancelable: !0 }), i);
352
+ return (
353
+ a && l.preventDefault(),
354
+ r && t.dispatchEvent(l),
355
+ l.defaultPrevented && n && n.preventDefault(),
356
+ l
357
+ );
358
+ },
359
+ };
360
+ function z(t, e = {}) {
361
+ for (const [i, s] of Object.entries(e))
362
+ try {
363
+ t[i] = s;
364
+ } catch (e) {
365
+ Object.defineProperty(t, i, { configurable: !0, get: () => s });
366
+ }
367
+ return t;
368
+ }
369
+ function H(t) {
370
+ if ("true" === t) return !0;
371
+ if ("false" === t) return !1;
372
+ if (t === Number(t).toString()) return Number(t);
373
+ if ("" === t || "null" === t) return null;
374
+ if ("string" != typeof t) return t;
375
+ try {
376
+ return JSON.parse(decodeURIComponent(t));
377
+ } catch (e) {
378
+ return t;
379
+ }
380
+ }
381
+ function B(t) {
382
+ return t.replace(/[A-Z]/g, (t) => `-${t.toLowerCase()}`);
383
+ }
384
+ const q = {
385
+ setDataAttribute(t, e, i) {
386
+ t.setAttribute(`data-bs-${B(e)}`, i);
387
+ },
388
+ removeDataAttribute(t, e) {
389
+ t.removeAttribute(`data-bs-${B(e)}`);
390
+ },
391
+ getDataAttributes(t) {
392
+ if (!t) return {};
393
+ const e = {},
394
+ i = Object.keys(t.dataset).filter(
395
+ (t) => t.startsWith("bs") && !t.startsWith("bsConfig"),
396
+ );
397
+ for (const s of i) {
398
+ let i = s.replace(/^bs/, "");
399
+ (i = i.charAt(0).toLowerCase() + i.slice(1)), (e[i] = H(t.dataset[s]));
400
+ }
401
+ return e;
402
+ },
403
+ getDataAttribute: (t, e) => H(t.getAttribute(`data-bs-${B(e)}`)),
404
+ };
405
+ class W {
406
+ static get Default() {
407
+ return {};
408
+ }
409
+ static get DefaultType() {
410
+ return {};
411
+ }
412
+ static get NAME() {
413
+ throw new Error(
414
+ 'You have to implement the static method "NAME", for each component!',
415
+ );
416
+ }
417
+ _getConfig(t) {
418
+ return (
419
+ (t = this._mergeConfigObj(t)),
420
+ (t = this._configAfterMerge(t)),
421
+ this._typeCheckConfig(t),
422
+ t
423
+ );
424
+ }
425
+ _configAfterMerge(t) {
426
+ return t;
427
+ }
428
+ _mergeConfigObj(t, e) {
429
+ const i = c(e) ? q.getDataAttribute(e, "config") : {};
430
+ return {
431
+ ...this.constructor.Default,
432
+ ...("object" == typeof i ? i : {}),
433
+ ...(c(e) ? q.getDataAttributes(e) : {}),
434
+ ...("object" == typeof t ? t : {}),
435
+ };
436
+ }
437
+ _typeCheckConfig(t, e = this.constructor.DefaultType) {
438
+ for (const [i, s] of Object.entries(e)) {
439
+ const e = t[i],
440
+ n = c(e) ? "element" : a(e);
441
+ if (!new RegExp(s).test(n))
442
+ throw new TypeError(
443
+ `${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${n}" but expected type "${s}".`,
444
+ );
445
+ }
446
+ }
447
+ }
448
+ class R extends W {
449
+ constructor(t, e) {
450
+ super(),
451
+ (t = h(t)) &&
452
+ ((this._element = t),
453
+ (this._config = this._getConfig(e)),
454
+ n.set(this._element, this.constructor.DATA_KEY, this));
455
+ }
456
+ dispose() {
457
+ n.remove(this._element, this.constructor.DATA_KEY),
458
+ F.off(this._element, this.constructor.EVENT_KEY);
459
+ for (const t of Object.getOwnPropertyNames(this)) this[t] = null;
460
+ }
461
+ _queueCallback(t, e, i = !0) {
462
+ w(t, e, i);
463
+ }
464
+ _getConfig(t) {
465
+ return (
466
+ (t = this._mergeConfigObj(t, this._element)),
467
+ (t = this._configAfterMerge(t)),
468
+ this._typeCheckConfig(t),
469
+ t
470
+ );
471
+ }
472
+ static getInstance(t) {
473
+ return n.get(h(t), this.DATA_KEY);
474
+ }
475
+ static getOrCreateInstance(t, e = {}) {
476
+ return (
477
+ this.getInstance(t) || new this(t, "object" == typeof e ? e : null)
478
+ );
479
+ }
480
+ static get VERSION() {
481
+ return "5.3.8";
482
+ }
483
+ static get DATA_KEY() {
484
+ return `bs.${this.NAME}`;
485
+ }
486
+ static get EVENT_KEY() {
487
+ return `.${this.DATA_KEY}`;
488
+ }
489
+ static eventName(t) {
490
+ return `${t}${this.EVENT_KEY}`;
491
+ }
492
+ }
493
+ const K = (t) => {
494
+ let e = t.getAttribute("data-bs-target");
495
+ if (!e || "#" === e) {
496
+ let i = t.getAttribute("href");
497
+ if (!i || (!i.includes("#") && !i.startsWith("."))) return null;
498
+ i.includes("#") && !i.startsWith("#") && (i = `#${i.split("#")[1]}`),
499
+ (e = i && "#" !== i ? i.trim() : null);
500
+ }
501
+ return e
502
+ ? e
503
+ .split(",")
504
+ .map((t) => r(t))
505
+ .join(",")
506
+ : null;
507
+ },
508
+ V = {
509
+ find: (t, e = document.documentElement) =>
510
+ [].concat(...Element.prototype.querySelectorAll.call(e, t)),
511
+ findOne: (t, e = document.documentElement) =>
512
+ Element.prototype.querySelector.call(e, t),
513
+ children: (t, e) => [].concat(...t.children).filter((t) => t.matches(e)),
514
+ parents(t, e) {
515
+ const i = [];
516
+ let s = t.parentNode.closest(e);
517
+ for (; s; ) i.push(s), (s = s.parentNode.closest(e));
518
+ return i;
519
+ },
520
+ prev(t, e) {
521
+ let i = t.previousElementSibling;
522
+ for (; i; ) {
523
+ if (i.matches(e)) return [i];
524
+ i = i.previousElementSibling;
525
+ }
526
+ return [];
527
+ },
528
+ next(t, e) {
529
+ let i = t.nextElementSibling;
530
+ for (; i; ) {
531
+ if (i.matches(e)) return [i];
532
+ i = i.nextElementSibling;
533
+ }
534
+ return [];
535
+ },
536
+ focusableChildren(t) {
537
+ const e = [
538
+ "a",
539
+ "button",
540
+ "input",
541
+ "textarea",
542
+ "select",
543
+ "details",
544
+ "[tabindex]",
545
+ '[contenteditable="true"]',
546
+ ]
547
+ .map((t) => `${t}:not([tabindex^="-"])`)
548
+ .join(",");
549
+ return this.find(e, t).filter((t) => !u(t) && d(t));
550
+ },
551
+ getSelectorFromElement(t) {
552
+ const e = K(t);
553
+ return e && V.findOne(e) ? e : null;
554
+ },
555
+ getElementFromSelector(t) {
556
+ const e = K(t);
557
+ return e ? V.findOne(e) : null;
558
+ },
559
+ getMultipleElementsFromSelector(t) {
560
+ const e = K(t);
561
+ return e ? V.find(e) : [];
562
+ },
563
+ },
564
+ Q = (t, e = "hide") => {
565
+ const i = `click.dismiss${t.EVENT_KEY}`,
566
+ s = t.NAME;
567
+ F.on(document, i, `[data-bs-dismiss="${s}"]`, function (i) {
568
+ if (
569
+ (["A", "AREA"].includes(this.tagName) && i.preventDefault(), u(this))
570
+ )
571
+ return;
572
+ const n = V.getElementFromSelector(this) || this.closest(`.${s}`);
573
+ t.getOrCreateInstance(n)[e]();
574
+ });
575
+ },
576
+ X = ".bs.alert",
577
+ Y = `close${X}`,
578
+ U = `closed${X}`;
579
+ class G extends R {
580
+ static get NAME() {
581
+ return "alert";
582
+ }
583
+ close() {
584
+ if (F.trigger(this._element, Y).defaultPrevented) return;
585
+ this._element.classList.remove("show");
586
+ const t = this._element.classList.contains("fade");
587
+ this._queueCallback(() => this._destroyElement(), this._element, t);
588
+ }
589
+ _destroyElement() {
590
+ this._element.remove(), F.trigger(this._element, U), this.dispose();
591
+ }
592
+ static jQueryInterface(t) {
593
+ return this.each(function () {
594
+ const e = G.getOrCreateInstance(this);
595
+ if ("string" == typeof t) {
596
+ if (void 0 === e[t] || t.startsWith("_") || "constructor" === t)
597
+ throw new TypeError(`No method named "${t}"`);
598
+ e[t](this);
599
+ }
600
+ });
601
+ }
602
+ }
603
+ Q(G, "close"), v(G);
604
+ const J = '[data-bs-toggle="button"]';
605
+ class Z extends R {
606
+ static get NAME() {
607
+ return "button";
608
+ }
609
+ toggle() {
610
+ this._element.setAttribute(
611
+ "aria-pressed",
612
+ this._element.classList.toggle("active"),
613
+ );
614
+ }
615
+ static jQueryInterface(t) {
616
+ return this.each(function () {
617
+ const e = Z.getOrCreateInstance(this);
618
+ "toggle" === t && e[t]();
619
+ });
620
+ }
621
+ }
622
+ F.on(document, "click.bs.button.data-api", J, (t) => {
623
+ t.preventDefault();
624
+ const e = t.target.closest(J);
625
+ Z.getOrCreateInstance(e).toggle();
626
+ }),
627
+ v(Z);
628
+ const tt = ".bs.swipe",
629
+ et = `touchstart${tt}`,
630
+ it = `touchmove${tt}`,
631
+ st = `touchend${tt}`,
632
+ nt = `pointerdown${tt}`,
633
+ ot = `pointerup${tt}`,
634
+ rt = { endCallback: null, leftCallback: null, rightCallback: null },
635
+ at = {
636
+ endCallback: "(function|null)",
637
+ leftCallback: "(function|null)",
638
+ rightCallback: "(function|null)",
639
+ };
640
+ class lt extends W {
641
+ constructor(t, e) {
642
+ super(),
643
+ (this._element = t),
644
+ t &&
645
+ lt.isSupported() &&
646
+ ((this._config = this._getConfig(e)),
647
+ (this._deltaX = 0),
648
+ (this._supportPointerEvents = Boolean(window.PointerEvent)),
649
+ this._initEvents());
650
+ }
651
+ static get Default() {
652
+ return rt;
653
+ }
654
+ static get DefaultType() {
655
+ return at;
656
+ }
657
+ static get NAME() {
658
+ return "swipe";
659
+ }
660
+ dispose() {
661
+ F.off(this._element, tt);
662
+ }
663
+ _start(t) {
664
+ this._supportPointerEvents
665
+ ? this._eventIsPointerPenTouch(t) && (this._deltaX = t.clientX)
666
+ : (this._deltaX = t.touches[0].clientX);
667
+ }
668
+ _end(t) {
669
+ this._eventIsPointerPenTouch(t) &&
670
+ (this._deltaX = t.clientX - this._deltaX),
671
+ this._handleSwipe(),
672
+ y(this._config.endCallback);
673
+ }
674
+ _move(t) {
675
+ this._deltaX =
676
+ t.touches && t.touches.length > 1
677
+ ? 0
678
+ : t.touches[0].clientX - this._deltaX;
679
+ }
680
+ _handleSwipe() {
681
+ const t = Math.abs(this._deltaX);
682
+ if (t <= 40) return;
683
+ const e = t / this._deltaX;
684
+ (this._deltaX = 0),
685
+ e && y(e > 0 ? this._config.rightCallback : this._config.leftCallback);
686
+ }
687
+ _initEvents() {
688
+ this._supportPointerEvents
689
+ ? (F.on(this._element, nt, (t) => this._start(t)),
690
+ F.on(this._element, ot, (t) => this._end(t)),
691
+ this._element.classList.add("pointer-event"))
692
+ : (F.on(this._element, et, (t) => this._start(t)),
693
+ F.on(this._element, it, (t) => this._move(t)),
694
+ F.on(this._element, st, (t) => this._end(t)));
695
+ }
696
+ _eventIsPointerPenTouch(t) {
697
+ return (
698
+ this._supportPointerEvents &&
699
+ ("pen" === t.pointerType || "touch" === t.pointerType)
700
+ );
701
+ }
702
+ static isSupported() {
703
+ return (
704
+ "ontouchstart" in document.documentElement ||
705
+ navigator.maxTouchPoints > 0
706
+ );
707
+ }
708
+ }
709
+ const ct = ".bs.carousel",
710
+ ht = ".data-api",
711
+ dt = "ArrowLeft",
712
+ ut = "ArrowRight",
713
+ _t = "next",
714
+ gt = "prev",
715
+ ft = "left",
716
+ mt = "right",
717
+ pt = `slide${ct}`,
718
+ bt = `slid${ct}`,
719
+ vt = `keydown${ct}`,
720
+ yt = `mouseenter${ct}`,
721
+ wt = `mouseleave${ct}`,
722
+ At = `dragstart${ct}`,
723
+ Et = `load${ct}${ht}`,
724
+ Ct = `click${ct}${ht}`,
725
+ Tt = "carousel",
726
+ kt = "active",
727
+ $t = ".active",
728
+ St = ".carousel-item",
729
+ Lt = $t + St,
730
+ Ot = { [dt]: mt, [ut]: ft },
731
+ It = {
732
+ interval: 5e3,
733
+ keyboard: !0,
734
+ pause: "hover",
735
+ ride: !1,
736
+ touch: !0,
737
+ wrap: !0,
738
+ },
739
+ Dt = {
740
+ interval: "(number|boolean)",
741
+ keyboard: "boolean",
742
+ pause: "(string|boolean)",
743
+ ride: "(boolean|string)",
744
+ touch: "boolean",
745
+ wrap: "boolean",
746
+ };
747
+ class Nt extends R {
748
+ constructor(t, e) {
749
+ super(t, e),
750
+ (this._interval = null),
751
+ (this._activeElement = null),
752
+ (this._isSliding = !1),
753
+ (this.touchTimeout = null),
754
+ (this._swipeHelper = null),
755
+ (this._indicatorsElement = V.findOne(
756
+ ".carousel-indicators",
757
+ this._element,
758
+ )),
759
+ this._addEventListeners(),
760
+ this._config.ride === Tt && this.cycle();
761
+ }
762
+ static get Default() {
763
+ return It;
764
+ }
765
+ static get DefaultType() {
766
+ return Dt;
767
+ }
768
+ static get NAME() {
769
+ return "carousel";
770
+ }
771
+ next() {
772
+ this._slide(_t);
773
+ }
774
+ nextWhenVisible() {
775
+ !document.hidden && d(this._element) && this.next();
776
+ }
777
+ prev() {
778
+ this._slide(gt);
779
+ }
780
+ pause() {
781
+ this._isSliding && l(this._element), this._clearInterval();
782
+ }
783
+ cycle() {
784
+ this._clearInterval(),
785
+ this._updateInterval(),
786
+ (this._interval = setInterval(
787
+ () => this.nextWhenVisible(),
788
+ this._config.interval,
789
+ ));
790
+ }
791
+ _maybeEnableCycle() {
792
+ this._config.ride &&
793
+ (this._isSliding
794
+ ? F.one(this._element, bt, () => this.cycle())
795
+ : this.cycle());
796
+ }
797
+ to(t) {
798
+ const e = this._getItems();
799
+ if (t > e.length - 1 || t < 0) return;
800
+ if (this._isSliding)
801
+ return void F.one(this._element, bt, () => this.to(t));
802
+ const i = this._getItemIndex(this._getActive());
803
+ if (i === t) return;
804
+ const s = t > i ? _t : gt;
805
+ this._slide(s, e[t]);
806
+ }
807
+ dispose() {
808
+ this._swipeHelper && this._swipeHelper.dispose(), super.dispose();
809
+ }
810
+ _configAfterMerge(t) {
811
+ return (t.defaultInterval = t.interval), t;
812
+ }
813
+ _addEventListeners() {
814
+ this._config.keyboard && F.on(this._element, vt, (t) => this._keydown(t)),
815
+ "hover" === this._config.pause &&
816
+ (F.on(this._element, yt, () => this.pause()),
817
+ F.on(this._element, wt, () => this._maybeEnableCycle())),
818
+ this._config.touch &&
819
+ lt.isSupported() &&
820
+ this._addTouchEventListeners();
821
+ }
822
+ _addTouchEventListeners() {
823
+ for (const t of V.find(".carousel-item img", this._element))
824
+ F.on(t, At, (t) => t.preventDefault());
825
+ const t = {
826
+ leftCallback: () => this._slide(this._directionToOrder(ft)),
827
+ rightCallback: () => this._slide(this._directionToOrder(mt)),
828
+ endCallback: () => {
829
+ "hover" === this._config.pause &&
830
+ (this.pause(),
831
+ this.touchTimeout && clearTimeout(this.touchTimeout),
832
+ (this.touchTimeout = setTimeout(
833
+ () => this._maybeEnableCycle(),
834
+ 500 + this._config.interval,
835
+ )));
836
+ },
837
+ };
838
+ this._swipeHelper = new lt(this._element, t);
839
+ }
840
+ _keydown(t) {
841
+ if (/input|textarea/i.test(t.target.tagName)) return;
842
+ const e = Ot[t.key];
843
+ e && (t.preventDefault(), this._slide(this._directionToOrder(e)));
844
+ }
845
+ _getItemIndex(t) {
846
+ return this._getItems().indexOf(t);
847
+ }
848
+ _setActiveIndicatorElement(t) {
849
+ if (!this._indicatorsElement) return;
850
+ const e = V.findOne($t, this._indicatorsElement);
851
+ e.classList.remove(kt), e.removeAttribute("aria-current");
852
+ const i = V.findOne(`[data-bs-slide-to="${t}"]`, this._indicatorsElement);
853
+ i && (i.classList.add(kt), i.setAttribute("aria-current", "true"));
854
+ }
855
+ _updateInterval() {
856
+ const t = this._activeElement || this._getActive();
857
+ if (!t) return;
858
+ const e = Number.parseInt(t.getAttribute("data-bs-interval"), 10);
859
+ this._config.interval = e || this._config.defaultInterval;
860
+ }
861
+ _slide(t, e = null) {
862
+ if (this._isSliding) return;
863
+ const i = this._getActive(),
864
+ s = t === _t,
865
+ n = e || A(this._getItems(), i, s, this._config.wrap);
866
+ if (n === i) return;
867
+ const o = this._getItemIndex(n),
868
+ r = (e) =>
869
+ F.trigger(this._element, e, {
870
+ relatedTarget: n,
871
+ direction: this._orderToDirection(t),
872
+ from: this._getItemIndex(i),
873
+ to: o,
874
+ });
875
+ if (r(pt).defaultPrevented) return;
876
+ if (!i || !n) return;
877
+ const a = Boolean(this._interval);
878
+ this.pause(),
879
+ (this._isSliding = !0),
880
+ this._setActiveIndicatorElement(o),
881
+ (this._activeElement = n);
882
+ const l = s ? "carousel-item-start" : "carousel-item-end",
883
+ c = s ? "carousel-item-next" : "carousel-item-prev";
884
+ n.classList.add(c),
885
+ f(n),
886
+ i.classList.add(l),
887
+ n.classList.add(l),
888
+ this._queueCallback(
889
+ () => {
890
+ n.classList.remove(l, c),
891
+ n.classList.add(kt),
892
+ i.classList.remove(kt, c, l),
893
+ (this._isSliding = !1),
894
+ r(bt);
895
+ },
896
+ i,
897
+ this._isAnimated(),
898
+ ),
899
+ a && this.cycle();
900
+ }
901
+ _isAnimated() {
902
+ return this._element.classList.contains("slide");
903
+ }
904
+ _getActive() {
905
+ return V.findOne(Lt, this._element);
906
+ }
907
+ _getItems() {
908
+ return V.find(St, this._element);
909
+ }
910
+ _clearInterval() {
911
+ this._interval &&
912
+ (clearInterval(this._interval), (this._interval = null));
913
+ }
914
+ _directionToOrder(t) {
915
+ return b() ? (t === ft ? gt : _t) : t === ft ? _t : gt;
916
+ }
917
+ _orderToDirection(t) {
918
+ return b() ? (t === gt ? ft : mt) : t === gt ? mt : ft;
919
+ }
920
+ static jQueryInterface(t) {
921
+ return this.each(function () {
922
+ const e = Nt.getOrCreateInstance(this, t);
923
+ if ("number" != typeof t) {
924
+ if ("string" == typeof t) {
925
+ if (void 0 === e[t] || t.startsWith("_") || "constructor" === t)
926
+ throw new TypeError(`No method named "${t}"`);
927
+ e[t]();
928
+ }
929
+ } else e.to(t);
930
+ });
931
+ }
932
+ }
933
+ F.on(document, Ct, "[data-bs-slide], [data-bs-slide-to]", function (t) {
934
+ const e = V.getElementFromSelector(this);
935
+ if (!e || !e.classList.contains(Tt)) return;
936
+ t.preventDefault();
937
+ const i = Nt.getOrCreateInstance(e),
938
+ s = this.getAttribute("data-bs-slide-to");
939
+ return s
940
+ ? (i.to(s), void i._maybeEnableCycle())
941
+ : "next" === q.getDataAttribute(this, "slide")
942
+ ? (i.next(), void i._maybeEnableCycle())
943
+ : (i.prev(), void i._maybeEnableCycle());
944
+ }),
945
+ F.on(window, Et, () => {
946
+ const t = V.find('[data-bs-ride="carousel"]');
947
+ for (const e of t) Nt.getOrCreateInstance(e);
948
+ }),
949
+ v(Nt);
950
+ const Pt = ".bs.collapse",
951
+ xt = `show${Pt}`,
952
+ Mt = `shown${Pt}`,
953
+ jt = `hide${Pt}`,
954
+ Ft = `hidden${Pt}`,
955
+ zt = `click${Pt}.data-api`,
956
+ Ht = "show",
957
+ Bt = "collapse",
958
+ qt = "collapsing",
959
+ Wt = `:scope .${Bt} .${Bt}`,
960
+ Rt = '[data-bs-toggle="collapse"]',
961
+ Kt = { parent: null, toggle: !0 },
962
+ Vt = { parent: "(null|element)", toggle: "boolean" };
963
+ class Qt extends R {
964
+ constructor(t, e) {
965
+ super(t, e), (this._isTransitioning = !1), (this._triggerArray = []);
966
+ const i = V.find(Rt);
967
+ for (const t of i) {
968
+ const e = V.getSelectorFromElement(t),
969
+ i = V.find(e).filter((t) => t === this._element);
970
+ null !== e && i.length && this._triggerArray.push(t);
971
+ }
972
+ this._initializeChildren(),
973
+ this._config.parent ||
974
+ this._addAriaAndCollapsedClass(this._triggerArray, this._isShown()),
975
+ this._config.toggle && this.toggle();
976
+ }
977
+ static get Default() {
978
+ return Kt;
979
+ }
980
+ static get DefaultType() {
981
+ return Vt;
982
+ }
983
+ static get NAME() {
984
+ return "collapse";
985
+ }
986
+ toggle() {
987
+ this._isShown() ? this.hide() : this.show();
988
+ }
989
+ show() {
990
+ if (this._isTransitioning || this._isShown()) return;
991
+ let t = [];
992
+ if (
993
+ (this._config.parent &&
994
+ (t = this._getFirstLevelChildren(
995
+ ".collapse.show, .collapse.collapsing",
996
+ )
997
+ .filter((t) => t !== this._element)
998
+ .map((t) => Qt.getOrCreateInstance(t, { toggle: !1 }))),
999
+ t.length && t[0]._isTransitioning)
1000
+ )
1001
+ return;
1002
+ if (F.trigger(this._element, xt).defaultPrevented) return;
1003
+ for (const e of t) e.hide();
1004
+ const e = this._getDimension();
1005
+ this._element.classList.remove(Bt),
1006
+ this._element.classList.add(qt),
1007
+ (this._element.style[e] = 0),
1008
+ this._addAriaAndCollapsedClass(this._triggerArray, !0),
1009
+ (this._isTransitioning = !0);
1010
+ const i = `scroll${e[0].toUpperCase() + e.slice(1)}`;
1011
+ this._queueCallback(
1012
+ () => {
1013
+ (this._isTransitioning = !1),
1014
+ this._element.classList.remove(qt),
1015
+ this._element.classList.add(Bt, Ht),
1016
+ (this._element.style[e] = ""),
1017
+ F.trigger(this._element, Mt);
1018
+ },
1019
+ this._element,
1020
+ !0,
1021
+ ),
1022
+ (this._element.style[e] = `${this._element[i]}px`);
1023
+ }
1024
+ hide() {
1025
+ if (this._isTransitioning || !this._isShown()) return;
1026
+ if (F.trigger(this._element, jt).defaultPrevented) return;
1027
+ const t = this._getDimension();
1028
+ (this._element.style[t] =
1029
+ `${this._element.getBoundingClientRect()[t]}px`),
1030
+ f(this._element),
1031
+ this._element.classList.add(qt),
1032
+ this._element.classList.remove(Bt, Ht);
1033
+ for (const t of this._triggerArray) {
1034
+ const e = V.getElementFromSelector(t);
1035
+ e && !this._isShown(e) && this._addAriaAndCollapsedClass([t], !1);
1036
+ }
1037
+ (this._isTransitioning = !0),
1038
+ (this._element.style[t] = ""),
1039
+ this._queueCallback(
1040
+ () => {
1041
+ (this._isTransitioning = !1),
1042
+ this._element.classList.remove(qt),
1043
+ this._element.classList.add(Bt),
1044
+ F.trigger(this._element, Ft);
1045
+ },
1046
+ this._element,
1047
+ !0,
1048
+ );
1049
+ }
1050
+ _isShown(t = this._element) {
1051
+ return t.classList.contains(Ht);
1052
+ }
1053
+ _configAfterMerge(t) {
1054
+ return (t.toggle = Boolean(t.toggle)), (t.parent = h(t.parent)), t;
1055
+ }
1056
+ _getDimension() {
1057
+ return this._element.classList.contains("collapse-horizontal")
1058
+ ? "width"
1059
+ : "height";
1060
+ }
1061
+ _initializeChildren() {
1062
+ if (!this._config.parent) return;
1063
+ const t = this._getFirstLevelChildren(Rt);
1064
+ for (const e of t) {
1065
+ const t = V.getElementFromSelector(e);
1066
+ t && this._addAriaAndCollapsedClass([e], this._isShown(t));
1067
+ }
1068
+ }
1069
+ _getFirstLevelChildren(t) {
1070
+ const e = V.find(Wt, this._config.parent);
1071
+ return V.find(t, this._config.parent).filter((t) => !e.includes(t));
1072
+ }
1073
+ _addAriaAndCollapsedClass(t, e) {
1074
+ if (t.length)
1075
+ for (const i of t)
1076
+ i.classList.toggle("collapsed", !e),
1077
+ i.setAttribute("aria-expanded", e);
1078
+ }
1079
+ static jQueryInterface(t) {
1080
+ const e = {};
1081
+ return (
1082
+ "string" == typeof t && /show|hide/.test(t) && (e.toggle = !1),
1083
+ this.each(function () {
1084
+ const i = Qt.getOrCreateInstance(this, e);
1085
+ if ("string" == typeof t) {
1086
+ if (void 0 === i[t]) throw new TypeError(`No method named "${t}"`);
1087
+ i[t]();
1088
+ }
1089
+ })
1090
+ );
1091
+ }
1092
+ }
1093
+ F.on(document, zt, Rt, function (t) {
1094
+ ("A" === t.target.tagName ||
1095
+ (t.delegateTarget && "A" === t.delegateTarget.tagName)) &&
1096
+ t.preventDefault();
1097
+ for (const t of V.getMultipleElementsFromSelector(this))
1098
+ Qt.getOrCreateInstance(t, { toggle: !1 }).toggle();
1099
+ }),
1100
+ v(Qt);
1101
+ const Xt = "dropdown",
1102
+ Yt = ".bs.dropdown",
1103
+ Ut = ".data-api",
1104
+ Gt = "ArrowUp",
1105
+ Jt = "ArrowDown",
1106
+ Zt = `hide${Yt}`,
1107
+ te = `hidden${Yt}`,
1108
+ ee = `show${Yt}`,
1109
+ ie = `shown${Yt}`,
1110
+ se = `click${Yt}${Ut}`,
1111
+ ne = `keydown${Yt}${Ut}`,
1112
+ oe = `keyup${Yt}${Ut}`,
1113
+ re = "show",
1114
+ ae = '[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',
1115
+ le = `${ae}.${re}`,
1116
+ ce = ".dropdown-menu",
1117
+ he = b() ? "top-end" : "top-start",
1118
+ de = b() ? "top-start" : "top-end",
1119
+ ue = b() ? "bottom-end" : "bottom-start",
1120
+ _e = b() ? "bottom-start" : "bottom-end",
1121
+ ge = b() ? "left-start" : "right-start",
1122
+ fe = b() ? "right-start" : "left-start",
1123
+ me = {
1124
+ autoClose: !0,
1125
+ boundary: "clippingParents",
1126
+ display: "dynamic",
1127
+ offset: [0, 2],
1128
+ popperConfig: null,
1129
+ reference: "toggle",
1130
+ },
1131
+ pe = {
1132
+ autoClose: "(boolean|string)",
1133
+ boundary: "(string|element)",
1134
+ display: "string",
1135
+ offset: "(array|string|function)",
1136
+ popperConfig: "(null|object|function)",
1137
+ reference: "(string|element|object)",
1138
+ };
1139
+ class be extends R {
1140
+ constructor(t, e) {
1141
+ super(t, e),
1142
+ (this._popper = null),
1143
+ (this._parent = this._element.parentNode),
1144
+ (this._menu =
1145
+ V.next(this._element, ce)[0] ||
1146
+ V.prev(this._element, ce)[0] ||
1147
+ V.findOne(ce, this._parent)),
1148
+ (this._inNavbar = this._detectNavbar());
1149
+ }
1150
+ static get Default() {
1151
+ return me;
1152
+ }
1153
+ static get DefaultType() {
1154
+ return pe;
1155
+ }
1156
+ static get NAME() {
1157
+ return Xt;
1158
+ }
1159
+ toggle() {
1160
+ return this._isShown() ? this.hide() : this.show();
1161
+ }
1162
+ show() {
1163
+ if (u(this._element) || this._isShown()) return;
1164
+ const t = { relatedTarget: this._element };
1165
+ if (!F.trigger(this._element, ee, t).defaultPrevented) {
1166
+ if (
1167
+ (this._createPopper(),
1168
+ "ontouchstart" in document.documentElement &&
1169
+ !this._parent.closest(".navbar-nav"))
1170
+ )
1171
+ for (const t of [].concat(...document.body.children))
1172
+ F.on(t, "mouseover", g);
1173
+ this._element.focus(),
1174
+ this._element.setAttribute("aria-expanded", !0),
1175
+ this._menu.classList.add(re),
1176
+ this._element.classList.add(re),
1177
+ F.trigger(this._element, ie, t);
1178
+ }
1179
+ }
1180
+ hide() {
1181
+ if (u(this._element) || !this._isShown()) return;
1182
+ const t = { relatedTarget: this._element };
1183
+ this._completeHide(t);
1184
+ }
1185
+ dispose() {
1186
+ this._popper && this._popper.destroy(), super.dispose();
1187
+ }
1188
+ update() {
1189
+ (this._inNavbar = this._detectNavbar()),
1190
+ this._popper && this._popper.update();
1191
+ }
1192
+ _completeHide(t) {
1193
+ if (!F.trigger(this._element, Zt, t).defaultPrevented) {
1194
+ if ("ontouchstart" in document.documentElement)
1195
+ for (const t of [].concat(...document.body.children))
1196
+ F.off(t, "mouseover", g);
1197
+ this._popper && this._popper.destroy(),
1198
+ this._menu.classList.remove(re),
1199
+ this._element.classList.remove(re),
1200
+ this._element.setAttribute("aria-expanded", "false"),
1201
+ q.removeDataAttribute(this._menu, "popper"),
1202
+ F.trigger(this._element, te, t);
1203
+ }
1204
+ }
1205
+ _getConfig(t) {
1206
+ if (
1207
+ "object" == typeof (t = super._getConfig(t)).reference &&
1208
+ !c(t.reference) &&
1209
+ "function" != typeof t.reference.getBoundingClientRect
1210
+ )
1211
+ throw new TypeError(
1212
+ `${Xt.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`,
1213
+ );
1214
+ return t;
1215
+ }
1216
+ _createPopper() {
1217
+ if (void 0 === i)
1218
+ throw new TypeError(
1219
+ "Bootstrap's dropdowns require Popper (https://popper.js.org/docs/v2/)",
1220
+ );
1221
+ let t = this._element;
1222
+ "parent" === this._config.reference
1223
+ ? (t = this._parent)
1224
+ : c(this._config.reference)
1225
+ ? (t = h(this._config.reference))
1226
+ : "object" == typeof this._config.reference &&
1227
+ (t = this._config.reference);
1228
+ const e = this._getPopperConfig();
1229
+ this._popper = i.createPopper(t, this._menu, e);
1230
+ }
1231
+ _isShown() {
1232
+ return this._menu.classList.contains(re);
1233
+ }
1234
+ _getPlacement() {
1235
+ const t = this._parent;
1236
+ if (t.classList.contains("dropend")) return ge;
1237
+ if (t.classList.contains("dropstart")) return fe;
1238
+ if (t.classList.contains("dropup-center")) return "top";
1239
+ if (t.classList.contains("dropdown-center")) return "bottom";
1240
+ const e =
1241
+ "end" ===
1242
+ getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();
1243
+ return t.classList.contains("dropup") ? (e ? de : he) : e ? _e : ue;
1244
+ }
1245
+ _detectNavbar() {
1246
+ return null !== this._element.closest(".navbar");
1247
+ }
1248
+ _getOffset() {
1249
+ const { offset: t } = this._config;
1250
+ return "string" == typeof t
1251
+ ? t.split(",").map((t) => Number.parseInt(t, 10))
1252
+ : "function" == typeof t
1253
+ ? (e) => t(e, this._element)
1254
+ : t;
1255
+ }
1256
+ _getPopperConfig() {
1257
+ const t = {
1258
+ placement: this._getPlacement(),
1259
+ modifiers: [
1260
+ {
1261
+ name: "preventOverflow",
1262
+ options: { boundary: this._config.boundary },
1263
+ },
1264
+ { name: "offset", options: { offset: this._getOffset() } },
1265
+ ],
1266
+ };
1267
+ return (
1268
+ (this._inNavbar || "static" === this._config.display) &&
1269
+ (q.setDataAttribute(this._menu, "popper", "static"),
1270
+ (t.modifiers = [{ name: "applyStyles", enabled: !1 }])),
1271
+ { ...t, ...y(this._config.popperConfig, [void 0, t]) }
1272
+ );
1273
+ }
1274
+ _selectMenuItem({ key: t, target: e }) {
1275
+ const i = V.find(
1276
+ ".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",
1277
+ this._menu,
1278
+ ).filter((t) => d(t));
1279
+ i.length && A(i, e, t === Jt, !i.includes(e)).focus();
1280
+ }
1281
+ static jQueryInterface(t) {
1282
+ return this.each(function () {
1283
+ const e = be.getOrCreateInstance(this, t);
1284
+ if ("string" == typeof t) {
1285
+ if (void 0 === e[t]) throw new TypeError(`No method named "${t}"`);
1286
+ e[t]();
1287
+ }
1288
+ });
1289
+ }
1290
+ static clearMenus(t) {
1291
+ if (2 === t.button || ("keyup" === t.type && "Tab" !== t.key)) return;
1292
+ const e = V.find(le);
1293
+ for (const i of e) {
1294
+ const e = be.getInstance(i);
1295
+ if (!e || !1 === e._config.autoClose) continue;
1296
+ const s = t.composedPath(),
1297
+ n = s.includes(e._menu);
1298
+ if (
1299
+ s.includes(e._element) ||
1300
+ ("inside" === e._config.autoClose && !n) ||
1301
+ ("outside" === e._config.autoClose && n)
1302
+ )
1303
+ continue;
1304
+ if (
1305
+ e._menu.contains(t.target) &&
1306
+ (("keyup" === t.type && "Tab" === t.key) ||
1307
+ /input|select|option|textarea|form/i.test(t.target.tagName))
1308
+ )
1309
+ continue;
1310
+ const o = { relatedTarget: e._element };
1311
+ "click" === t.type && (o.clickEvent = t), e._completeHide(o);
1312
+ }
1313
+ }
1314
+ static dataApiKeydownHandler(t) {
1315
+ const e = /input|textarea/i.test(t.target.tagName),
1316
+ i = "Escape" === t.key,
1317
+ s = [Gt, Jt].includes(t.key);
1318
+ if (!s && !i) return;
1319
+ if (e && !i) return;
1320
+ t.preventDefault();
1321
+ const n = this.matches(ae)
1322
+ ? this
1323
+ : V.prev(this, ae)[0] ||
1324
+ V.next(this, ae)[0] ||
1325
+ V.findOne(ae, t.delegateTarget.parentNode),
1326
+ o = be.getOrCreateInstance(n);
1327
+ if (s) return t.stopPropagation(), o.show(), void o._selectMenuItem(t);
1328
+ o._isShown() && (t.stopPropagation(), o.hide(), n.focus());
1329
+ }
1330
+ }
1331
+ F.on(document, ne, ae, be.dataApiKeydownHandler),
1332
+ F.on(document, ne, ce, be.dataApiKeydownHandler),
1333
+ F.on(document, se, be.clearMenus),
1334
+ F.on(document, oe, be.clearMenus),
1335
+ F.on(document, se, ae, function (t) {
1336
+ t.preventDefault(), be.getOrCreateInstance(this).toggle();
1337
+ }),
1338
+ v(be);
1339
+ const ve = "backdrop",
1340
+ ye = "show",
1341
+ we = `mousedown.bs.${ve}`,
1342
+ Ae = {
1343
+ className: "modal-backdrop",
1344
+ clickCallback: null,
1345
+ isAnimated: !1,
1346
+ isVisible: !0,
1347
+ rootElement: "body",
1348
+ },
1349
+ Ee = {
1350
+ className: "string",
1351
+ clickCallback: "(function|null)",
1352
+ isAnimated: "boolean",
1353
+ isVisible: "boolean",
1354
+ rootElement: "(element|string)",
1355
+ };
1356
+ class Ce extends W {
1357
+ constructor(t) {
1358
+ super(),
1359
+ (this._config = this._getConfig(t)),
1360
+ (this._isAppended = !1),
1361
+ (this._element = null);
1362
+ }
1363
+ static get Default() {
1364
+ return Ae;
1365
+ }
1366
+ static get DefaultType() {
1367
+ return Ee;
1368
+ }
1369
+ static get NAME() {
1370
+ return ve;
1371
+ }
1372
+ show(t) {
1373
+ if (!this._config.isVisible) return void y(t);
1374
+ this._append();
1375
+ const e = this._getElement();
1376
+ this._config.isAnimated && f(e),
1377
+ e.classList.add(ye),
1378
+ this._emulateAnimation(() => {
1379
+ y(t);
1380
+ });
1381
+ }
1382
+ hide(t) {
1383
+ this._config.isVisible
1384
+ ? (this._getElement().classList.remove(ye),
1385
+ this._emulateAnimation(() => {
1386
+ this.dispose(), y(t);
1387
+ }))
1388
+ : y(t);
1389
+ }
1390
+ dispose() {
1391
+ this._isAppended &&
1392
+ (F.off(this._element, we),
1393
+ this._element.remove(),
1394
+ (this._isAppended = !1));
1395
+ }
1396
+ _getElement() {
1397
+ if (!this._element) {
1398
+ const t = document.createElement("div");
1399
+ (t.className = this._config.className),
1400
+ this._config.isAnimated && t.classList.add("fade"),
1401
+ (this._element = t);
1402
+ }
1403
+ return this._element;
1404
+ }
1405
+ _configAfterMerge(t) {
1406
+ return (t.rootElement = h(t.rootElement)), t;
1407
+ }
1408
+ _append() {
1409
+ if (this._isAppended) return;
1410
+ const t = this._getElement();
1411
+ this._config.rootElement.append(t),
1412
+ F.on(t, we, () => {
1413
+ y(this._config.clickCallback);
1414
+ }),
1415
+ (this._isAppended = !0);
1416
+ }
1417
+ _emulateAnimation(t) {
1418
+ w(t, this._getElement(), this._config.isAnimated);
1419
+ }
1420
+ }
1421
+ const Te = ".bs.focustrap",
1422
+ ke = `focusin${Te}`,
1423
+ $e = `keydown.tab${Te}`,
1424
+ Se = "backward",
1425
+ Le = { autofocus: !0, trapElement: null },
1426
+ Oe = { autofocus: "boolean", trapElement: "element" };
1427
+ class Ie extends W {
1428
+ constructor(t) {
1429
+ super(),
1430
+ (this._config = this._getConfig(t)),
1431
+ (this._isActive = !1),
1432
+ (this._lastTabNavDirection = null);
1433
+ }
1434
+ static get Default() {
1435
+ return Le;
1436
+ }
1437
+ static get DefaultType() {
1438
+ return Oe;
1439
+ }
1440
+ static get NAME() {
1441
+ return "focustrap";
1442
+ }
1443
+ activate() {
1444
+ this._isActive ||
1445
+ (this._config.autofocus && this._config.trapElement.focus(),
1446
+ F.off(document, Te),
1447
+ F.on(document, ke, (t) => this._handleFocusin(t)),
1448
+ F.on(document, $e, (t) => this._handleKeydown(t)),
1449
+ (this._isActive = !0));
1450
+ }
1451
+ deactivate() {
1452
+ this._isActive && ((this._isActive = !1), F.off(document, Te));
1453
+ }
1454
+ _handleFocusin(t) {
1455
+ const { trapElement: e } = this._config;
1456
+ if (t.target === document || t.target === e || e.contains(t.target))
1457
+ return;
1458
+ const i = V.focusableChildren(e);
1459
+ 0 === i.length
1460
+ ? e.focus()
1461
+ : this._lastTabNavDirection === Se
1462
+ ? i[i.length - 1].focus()
1463
+ : i[0].focus();
1464
+ }
1465
+ _handleKeydown(t) {
1466
+ "Tab" === t.key &&
1467
+ (this._lastTabNavDirection = t.shiftKey ? Se : "forward");
1468
+ }
1469
+ }
1470
+ const De = ".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",
1471
+ Ne = ".sticky-top",
1472
+ Pe = "padding-right",
1473
+ xe = "margin-right";
1474
+ class Me {
1475
+ constructor() {
1476
+ this._element = document.body;
1477
+ }
1478
+ getWidth() {
1479
+ const t = document.documentElement.clientWidth;
1480
+ return Math.abs(window.innerWidth - t);
1481
+ }
1482
+ hide() {
1483
+ const t = this.getWidth();
1484
+ this._disableOverFlow(),
1485
+ this._setElementAttributes(this._element, Pe, (e) => e + t),
1486
+ this._setElementAttributes(De, Pe, (e) => e + t),
1487
+ this._setElementAttributes(Ne, xe, (e) => e - t);
1488
+ }
1489
+ reset() {
1490
+ this._resetElementAttributes(this._element, "overflow"),
1491
+ this._resetElementAttributes(this._element, Pe),
1492
+ this._resetElementAttributes(De, Pe),
1493
+ this._resetElementAttributes(Ne, xe);
1494
+ }
1495
+ isOverflowing() {
1496
+ return this.getWidth() > 0;
1497
+ }
1498
+ _disableOverFlow() {
1499
+ this._saveInitialAttribute(this._element, "overflow"),
1500
+ (this._element.style.overflow = "hidden");
1501
+ }
1502
+ _setElementAttributes(t, e, i) {
1503
+ const s = this.getWidth();
1504
+ this._applyManipulationCallback(t, (t) => {
1505
+ if (t !== this._element && window.innerWidth > t.clientWidth + s)
1506
+ return;
1507
+ this._saveInitialAttribute(t, e);
1508
+ const n = window.getComputedStyle(t).getPropertyValue(e);
1509
+ t.style.setProperty(e, `${i(Number.parseFloat(n))}px`);
1510
+ });
1511
+ }
1512
+ _saveInitialAttribute(t, e) {
1513
+ const i = t.style.getPropertyValue(e);
1514
+ i && q.setDataAttribute(t, e, i);
1515
+ }
1516
+ _resetElementAttributes(t, e) {
1517
+ this._applyManipulationCallback(t, (t) => {
1518
+ const i = q.getDataAttribute(t, e);
1519
+ null !== i
1520
+ ? (q.removeDataAttribute(t, e), t.style.setProperty(e, i))
1521
+ : t.style.removeProperty(e);
1522
+ });
1523
+ }
1524
+ _applyManipulationCallback(t, e) {
1525
+ if (c(t)) e(t);
1526
+ else for (const i of V.find(t, this._element)) e(i);
1527
+ }
1528
+ }
1529
+ const je = ".bs.modal",
1530
+ Fe = `hide${je}`,
1531
+ ze = `hidePrevented${je}`,
1532
+ He = `hidden${je}`,
1533
+ Be = `show${je}`,
1534
+ qe = `shown${je}`,
1535
+ We = `resize${je}`,
1536
+ Re = `click.dismiss${je}`,
1537
+ Ke = `mousedown.dismiss${je}`,
1538
+ Ve = `keydown.dismiss${je}`,
1539
+ Qe = `click${je}.data-api`,
1540
+ Xe = "modal-open",
1541
+ Ye = "show",
1542
+ Ue = "modal-static",
1543
+ Ge = { backdrop: !0, focus: !0, keyboard: !0 },
1544
+ Je = {
1545
+ backdrop: "(boolean|string)",
1546
+ focus: "boolean",
1547
+ keyboard: "boolean",
1548
+ };
1549
+ class Ze extends R {
1550
+ constructor(t, e) {
1551
+ super(t, e),
1552
+ (this._dialog = V.findOne(".modal-dialog", this._element)),
1553
+ (this._backdrop = this._initializeBackDrop()),
1554
+ (this._focustrap = this._initializeFocusTrap()),
1555
+ (this._isShown = !1),
1556
+ (this._isTransitioning = !1),
1557
+ (this._scrollBar = new Me()),
1558
+ this._addEventListeners();
1559
+ }
1560
+ static get Default() {
1561
+ return Ge;
1562
+ }
1563
+ static get DefaultType() {
1564
+ return Je;
1565
+ }
1566
+ static get NAME() {
1567
+ return "modal";
1568
+ }
1569
+ toggle(t) {
1570
+ return this._isShown ? this.hide() : this.show(t);
1571
+ }
1572
+ show(t) {
1573
+ this._isShown ||
1574
+ this._isTransitioning ||
1575
+ F.trigger(this._element, Be, { relatedTarget: t }).defaultPrevented ||
1576
+ ((this._isShown = !0),
1577
+ (this._isTransitioning = !0),
1578
+ this._scrollBar.hide(),
1579
+ document.body.classList.add(Xe),
1580
+ this._adjustDialog(),
1581
+ this._backdrop.show(() => this._showElement(t)));
1582
+ }
1583
+ hide() {
1584
+ this._isShown &&
1585
+ !this._isTransitioning &&
1586
+ (F.trigger(this._element, Fe).defaultPrevented ||
1587
+ ((this._isShown = !1),
1588
+ (this._isTransitioning = !0),
1589
+ this._focustrap.deactivate(),
1590
+ this._element.classList.remove(Ye),
1591
+ this._queueCallback(
1592
+ () => this._hideModal(),
1593
+ this._element,
1594
+ this._isAnimated(),
1595
+ )));
1596
+ }
1597
+ dispose() {
1598
+ F.off(window, je),
1599
+ F.off(this._dialog, je),
1600
+ this._backdrop.dispose(),
1601
+ this._focustrap.deactivate(),
1602
+ super.dispose();
1603
+ }
1604
+ handleUpdate() {
1605
+ this._adjustDialog();
1606
+ }
1607
+ _initializeBackDrop() {
1608
+ return new Ce({
1609
+ isVisible: Boolean(this._config.backdrop),
1610
+ isAnimated: this._isAnimated(),
1611
+ });
1612
+ }
1613
+ _initializeFocusTrap() {
1614
+ return new Ie({ trapElement: this._element });
1615
+ }
1616
+ _showElement(t) {
1617
+ document.body.contains(this._element) ||
1618
+ document.body.append(this._element),
1619
+ (this._element.style.display = "block"),
1620
+ this._element.removeAttribute("aria-hidden"),
1621
+ this._element.setAttribute("aria-modal", !0),
1622
+ this._element.setAttribute("role", "dialog"),
1623
+ (this._element.scrollTop = 0);
1624
+ const e = V.findOne(".modal-body", this._dialog);
1625
+ e && (e.scrollTop = 0),
1626
+ f(this._element),
1627
+ this._element.classList.add(Ye),
1628
+ this._queueCallback(
1629
+ () => {
1630
+ this._config.focus && this._focustrap.activate(),
1631
+ (this._isTransitioning = !1),
1632
+ F.trigger(this._element, qe, { relatedTarget: t });
1633
+ },
1634
+ this._dialog,
1635
+ this._isAnimated(),
1636
+ );
1637
+ }
1638
+ _addEventListeners() {
1639
+ F.on(this._element, Ve, (t) => {
1640
+ "Escape" === t.key &&
1641
+ (this._config.keyboard
1642
+ ? this.hide()
1643
+ : this._triggerBackdropTransition());
1644
+ }),
1645
+ F.on(window, We, () => {
1646
+ this._isShown && !this._isTransitioning && this._adjustDialog();
1647
+ }),
1648
+ F.on(this._element, Ke, (t) => {
1649
+ F.one(this._element, Re, (e) => {
1650
+ this._element === t.target &&
1651
+ this._element === e.target &&
1652
+ ("static" !== this._config.backdrop
1653
+ ? this._config.backdrop && this.hide()
1654
+ : this._triggerBackdropTransition());
1655
+ });
1656
+ });
1657
+ }
1658
+ _hideModal() {
1659
+ (this._element.style.display = "none"),
1660
+ this._element.setAttribute("aria-hidden", !0),
1661
+ this._element.removeAttribute("aria-modal"),
1662
+ this._element.removeAttribute("role"),
1663
+ (this._isTransitioning = !1),
1664
+ this._backdrop.hide(() => {
1665
+ document.body.classList.remove(Xe),
1666
+ this._resetAdjustments(),
1667
+ this._scrollBar.reset(),
1668
+ F.trigger(this._element, He);
1669
+ });
1670
+ }
1671
+ _isAnimated() {
1672
+ return this._element.classList.contains("fade");
1673
+ }
1674
+ _triggerBackdropTransition() {
1675
+ if (F.trigger(this._element, ze).defaultPrevented) return;
1676
+ const t =
1677
+ this._element.scrollHeight > document.documentElement.clientHeight,
1678
+ e = this._element.style.overflowY;
1679
+ "hidden" === e ||
1680
+ this._element.classList.contains(Ue) ||
1681
+ (t || (this._element.style.overflowY = "hidden"),
1682
+ this._element.classList.add(Ue),
1683
+ this._queueCallback(() => {
1684
+ this._element.classList.remove(Ue),
1685
+ this._queueCallback(() => {
1686
+ this._element.style.overflowY = e;
1687
+ }, this._dialog);
1688
+ }, this._dialog),
1689
+ this._element.focus());
1690
+ }
1691
+ _adjustDialog() {
1692
+ const t =
1693
+ this._element.scrollHeight > document.documentElement.clientHeight,
1694
+ e = this._scrollBar.getWidth(),
1695
+ i = e > 0;
1696
+ if (i && !t) {
1697
+ const t = b() ? "paddingLeft" : "paddingRight";
1698
+ this._element.style[t] = `${e}px`;
1699
+ }
1700
+ if (!i && t) {
1701
+ const t = b() ? "paddingRight" : "paddingLeft";
1702
+ this._element.style[t] = `${e}px`;
1703
+ }
1704
+ }
1705
+ _resetAdjustments() {
1706
+ (this._element.style.paddingLeft = ""),
1707
+ (this._element.style.paddingRight = "");
1708
+ }
1709
+ static jQueryInterface(t, e) {
1710
+ return this.each(function () {
1711
+ const i = Ze.getOrCreateInstance(this, t);
1712
+ if ("string" == typeof t) {
1713
+ if (void 0 === i[t]) throw new TypeError(`No method named "${t}"`);
1714
+ i[t](e);
1715
+ }
1716
+ });
1717
+ }
1718
+ }
1719
+ F.on(document, Qe, '[data-bs-toggle="modal"]', function (t) {
1720
+ const e = V.getElementFromSelector(this);
1721
+ ["A", "AREA"].includes(this.tagName) && t.preventDefault(),
1722
+ F.one(e, Be, (t) => {
1723
+ t.defaultPrevented ||
1724
+ F.one(e, He, () => {
1725
+ d(this) && this.focus();
1726
+ });
1727
+ });
1728
+ const i = V.findOne(".modal.show");
1729
+ i && Ze.getInstance(i).hide(), Ze.getOrCreateInstance(e).toggle(this);
1730
+ }),
1731
+ Q(Ze),
1732
+ v(Ze);
1733
+ const ti = ".bs.offcanvas",
1734
+ ei = ".data-api",
1735
+ ii = `load${ti}${ei}`,
1736
+ si = "show",
1737
+ ni = "showing",
1738
+ oi = "hiding",
1739
+ ri = ".offcanvas.show",
1740
+ ai = `show${ti}`,
1741
+ li = `shown${ti}`,
1742
+ ci = `hide${ti}`,
1743
+ hi = `hidePrevented${ti}`,
1744
+ di = `hidden${ti}`,
1745
+ ui = `resize${ti}`,
1746
+ _i = `click${ti}${ei}`,
1747
+ gi = `keydown.dismiss${ti}`,
1748
+ fi = { backdrop: !0, keyboard: !0, scroll: !1 },
1749
+ mi = {
1750
+ backdrop: "(boolean|string)",
1751
+ keyboard: "boolean",
1752
+ scroll: "boolean",
1753
+ };
1754
+ class pi extends R {
1755
+ constructor(t, e) {
1756
+ super(t, e),
1757
+ (this._isShown = !1),
1758
+ (this._backdrop = this._initializeBackDrop()),
1759
+ (this._focustrap = this._initializeFocusTrap()),
1760
+ this._addEventListeners();
1761
+ }
1762
+ static get Default() {
1763
+ return fi;
1764
+ }
1765
+ static get DefaultType() {
1766
+ return mi;
1767
+ }
1768
+ static get NAME() {
1769
+ return "offcanvas";
1770
+ }
1771
+ toggle(t) {
1772
+ return this._isShown ? this.hide() : this.show(t);
1773
+ }
1774
+ show(t) {
1775
+ this._isShown ||
1776
+ F.trigger(this._element, ai, { relatedTarget: t }).defaultPrevented ||
1777
+ ((this._isShown = !0),
1778
+ this._backdrop.show(),
1779
+ this._config.scroll || new Me().hide(),
1780
+ this._element.setAttribute("aria-modal", !0),
1781
+ this._element.setAttribute("role", "dialog"),
1782
+ this._element.classList.add(ni),
1783
+ this._queueCallback(
1784
+ () => {
1785
+ (this._config.scroll && !this._config.backdrop) ||
1786
+ this._focustrap.activate(),
1787
+ this._element.classList.add(si),
1788
+ this._element.classList.remove(ni),
1789
+ F.trigger(this._element, li, { relatedTarget: t });
1790
+ },
1791
+ this._element,
1792
+ !0,
1793
+ ));
1794
+ }
1795
+ hide() {
1796
+ this._isShown &&
1797
+ (F.trigger(this._element, ci).defaultPrevented ||
1798
+ (this._focustrap.deactivate(),
1799
+ this._element.blur(),
1800
+ (this._isShown = !1),
1801
+ this._element.classList.add(oi),
1802
+ this._backdrop.hide(),
1803
+ this._queueCallback(
1804
+ () => {
1805
+ this._element.classList.remove(si, oi),
1806
+ this._element.removeAttribute("aria-modal"),
1807
+ this._element.removeAttribute("role"),
1808
+ this._config.scroll || new Me().reset(),
1809
+ F.trigger(this._element, di);
1810
+ },
1811
+ this._element,
1812
+ !0,
1813
+ )));
1814
+ }
1815
+ dispose() {
1816
+ this._backdrop.dispose(), this._focustrap.deactivate(), super.dispose();
1817
+ }
1818
+ _initializeBackDrop() {
1819
+ const t = Boolean(this._config.backdrop);
1820
+ return new Ce({
1821
+ className: "offcanvas-backdrop",
1822
+ isVisible: t,
1823
+ isAnimated: !0,
1824
+ rootElement: this._element.parentNode,
1825
+ clickCallback: t
1826
+ ? () => {
1827
+ "static" !== this._config.backdrop
1828
+ ? this.hide()
1829
+ : F.trigger(this._element, hi);
1830
+ }
1831
+ : null,
1832
+ });
1833
+ }
1834
+ _initializeFocusTrap() {
1835
+ return new Ie({ trapElement: this._element });
1836
+ }
1837
+ _addEventListeners() {
1838
+ F.on(this._element, gi, (t) => {
1839
+ "Escape" === t.key &&
1840
+ (this._config.keyboard ? this.hide() : F.trigger(this._element, hi));
1841
+ });
1842
+ }
1843
+ static jQueryInterface(t) {
1844
+ return this.each(function () {
1845
+ const e = pi.getOrCreateInstance(this, t);
1846
+ if ("string" == typeof t) {
1847
+ if (void 0 === e[t] || t.startsWith("_") || "constructor" === t)
1848
+ throw new TypeError(`No method named "${t}"`);
1849
+ e[t](this);
1850
+ }
1851
+ });
1852
+ }
1853
+ }
1854
+ F.on(document, _i, '[data-bs-toggle="offcanvas"]', function (t) {
1855
+ const e = V.getElementFromSelector(this);
1856
+ if ((["A", "AREA"].includes(this.tagName) && t.preventDefault(), u(this)))
1857
+ return;
1858
+ F.one(e, di, () => {
1859
+ d(this) && this.focus();
1860
+ });
1861
+ const i = V.findOne(ri);
1862
+ i && i !== e && pi.getInstance(i).hide(),
1863
+ pi.getOrCreateInstance(e).toggle(this);
1864
+ }),
1865
+ F.on(window, ii, () => {
1866
+ for (const t of V.find(ri)) pi.getOrCreateInstance(t).show();
1867
+ }),
1868
+ F.on(window, ui, () => {
1869
+ for (const t of V.find("[aria-modal][class*=show][class*=offcanvas-]"))
1870
+ "fixed" !== getComputedStyle(t).position &&
1871
+ pi.getOrCreateInstance(t).hide();
1872
+ }),
1873
+ Q(pi),
1874
+ v(pi);
1875
+ const bi = {
1876
+ "*": ["class", "dir", "id", "lang", "role", /^aria-[\w-]*$/i],
1877
+ a: ["target", "href", "title", "rel"],
1878
+ area: [],
1879
+ b: [],
1880
+ br: [],
1881
+ col: [],
1882
+ code: [],
1883
+ dd: [],
1884
+ div: [],
1885
+ dl: [],
1886
+ dt: [],
1887
+ em: [],
1888
+ hr: [],
1889
+ h1: [],
1890
+ h2: [],
1891
+ h3: [],
1892
+ h4: [],
1893
+ h5: [],
1894
+ h6: [],
1895
+ i: [],
1896
+ img: ["src", "srcset", "alt", "title", "width", "height"],
1897
+ li: [],
1898
+ ol: [],
1899
+ p: [],
1900
+ pre: [],
1901
+ s: [],
1902
+ small: [],
1903
+ span: [],
1904
+ sub: [],
1905
+ sup: [],
1906
+ strong: [],
1907
+ u: [],
1908
+ ul: [],
1909
+ },
1910
+ vi = new Set([
1911
+ "background",
1912
+ "cite",
1913
+ "href",
1914
+ "itemtype",
1915
+ "longdesc",
1916
+ "poster",
1917
+ "src",
1918
+ "xlink:href",
1919
+ ]),
1920
+ yi = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,
1921
+ wi = (t, e) => {
1922
+ const i = t.nodeName.toLowerCase();
1923
+ return e.includes(i)
1924
+ ? !vi.has(i) || Boolean(yi.test(t.nodeValue))
1925
+ : e.filter((t) => t instanceof RegExp).some((t) => t.test(i));
1926
+ },
1927
+ Ai = {
1928
+ allowList: bi,
1929
+ content: {},
1930
+ extraClass: "",
1931
+ html: !1,
1932
+ sanitize: !0,
1933
+ sanitizeFn: null,
1934
+ template: "<div></div>",
1935
+ },
1936
+ Ei = {
1937
+ allowList: "object",
1938
+ content: "object",
1939
+ extraClass: "(string|function)",
1940
+ html: "boolean",
1941
+ sanitize: "boolean",
1942
+ sanitizeFn: "(null|function)",
1943
+ template: "string",
1944
+ },
1945
+ Ci = {
1946
+ entry: "(string|element|function|null)",
1947
+ selector: "(string|element)",
1948
+ };
1949
+ class Ti extends W {
1950
+ constructor(t) {
1951
+ super(), (this._config = this._getConfig(t));
1952
+ }
1953
+ static get Default() {
1954
+ return Ai;
1955
+ }
1956
+ static get DefaultType() {
1957
+ return Ei;
1958
+ }
1959
+ static get NAME() {
1960
+ return "TemplateFactory";
1961
+ }
1962
+ getContent() {
1963
+ return Object.values(this._config.content)
1964
+ .map((t) => this._resolvePossibleFunction(t))
1965
+ .filter(Boolean);
1966
+ }
1967
+ hasContent() {
1968
+ return this.getContent().length > 0;
1969
+ }
1970
+ changeContent(t) {
1971
+ return (
1972
+ this._checkContent(t),
1973
+ (this._config.content = { ...this._config.content, ...t }),
1974
+ this
1975
+ );
1976
+ }
1977
+ toHtml() {
1978
+ const t = document.createElement("div");
1979
+ t.innerHTML = this._maybeSanitize(this._config.template);
1980
+ for (const [e, i] of Object.entries(this._config.content))
1981
+ this._setContent(t, i, e);
1982
+ const e = t.children[0],
1983
+ i = this._resolvePossibleFunction(this._config.extraClass);
1984
+ return i && e.classList.add(...i.split(" ")), e;
1985
+ }
1986
+ _typeCheckConfig(t) {
1987
+ super._typeCheckConfig(t), this._checkContent(t.content);
1988
+ }
1989
+ _checkContent(t) {
1990
+ for (const [e, i] of Object.entries(t))
1991
+ super._typeCheckConfig({ selector: e, entry: i }, Ci);
1992
+ }
1993
+ _setContent(t, e, i) {
1994
+ const s = V.findOne(i, t);
1995
+ s &&
1996
+ ((e = this._resolvePossibleFunction(e))
1997
+ ? c(e)
1998
+ ? this._putElementInTemplate(h(e), s)
1999
+ : this._config.html
2000
+ ? (s.innerHTML = this._maybeSanitize(e))
2001
+ : (s.textContent = e)
2002
+ : s.remove());
2003
+ }
2004
+ _maybeSanitize(t) {
2005
+ return this._config.sanitize
2006
+ ? (function (t, e, i) {
2007
+ if (!t.length) return t;
2008
+ if (i && "function" == typeof i) return i(t);
2009
+ const s = new window.DOMParser().parseFromString(t, "text/html"),
2010
+ n = [].concat(...s.body.querySelectorAll("*"));
2011
+ for (const t of n) {
2012
+ const i = t.nodeName.toLowerCase();
2013
+ if (!Object.keys(e).includes(i)) {
2014
+ t.remove();
2015
+ continue;
2016
+ }
2017
+ const s = [].concat(...t.attributes),
2018
+ n = [].concat(e["*"] || [], e[i] || []);
2019
+ for (const e of s) wi(e, n) || t.removeAttribute(e.nodeName);
2020
+ }
2021
+ return s.body.innerHTML;
2022
+ })(t, this._config.allowList, this._config.sanitizeFn)
2023
+ : t;
2024
+ }
2025
+ _resolvePossibleFunction(t) {
2026
+ return y(t, [void 0, this]);
2027
+ }
2028
+ _putElementInTemplate(t, e) {
2029
+ if (this._config.html) return (e.innerHTML = ""), void e.append(t);
2030
+ e.textContent = t.textContent;
2031
+ }
2032
+ }
2033
+ const ki = new Set(["sanitize", "allowList", "sanitizeFn"]),
2034
+ $i = "fade",
2035
+ Si = "show",
2036
+ Li = ".tooltip-inner",
2037
+ Oi = ".modal",
2038
+ Ii = "hide.bs.modal",
2039
+ Di = "hover",
2040
+ Ni = "focus",
2041
+ Pi = "click",
2042
+ xi = {
2043
+ AUTO: "auto",
2044
+ TOP: "top",
2045
+ RIGHT: b() ? "left" : "right",
2046
+ BOTTOM: "bottom",
2047
+ LEFT: b() ? "right" : "left",
2048
+ },
2049
+ Mi = {
2050
+ allowList: bi,
2051
+ animation: !0,
2052
+ boundary: "clippingParents",
2053
+ container: !1,
2054
+ customClass: "",
2055
+ delay: 0,
2056
+ fallbackPlacements: ["top", "right", "bottom", "left"],
2057
+ html: !1,
2058
+ offset: [0, 6],
2059
+ placement: "top",
2060
+ popperConfig: null,
2061
+ sanitize: !0,
2062
+ sanitizeFn: null,
2063
+ selector: !1,
2064
+ template:
2065
+ '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
2066
+ title: "",
2067
+ trigger: "hover focus",
2068
+ },
2069
+ ji = {
2070
+ allowList: "object",
2071
+ animation: "boolean",
2072
+ boundary: "(string|element)",
2073
+ container: "(string|element|boolean)",
2074
+ customClass: "(string|function)",
2075
+ delay: "(number|object)",
2076
+ fallbackPlacements: "array",
2077
+ html: "boolean",
2078
+ offset: "(array|string|function)",
2079
+ placement: "(string|function)",
2080
+ popperConfig: "(null|object|function)",
2081
+ sanitize: "boolean",
2082
+ sanitizeFn: "(null|function)",
2083
+ selector: "(string|boolean)",
2084
+ template: "string",
2085
+ title: "(string|element|function)",
2086
+ trigger: "string",
2087
+ };
2088
+ class Fi extends R {
2089
+ constructor(t, e) {
2090
+ if (void 0 === i)
2091
+ throw new TypeError(
2092
+ "Bootstrap's tooltips require Popper (https://popper.js.org/docs/v2/)",
2093
+ );
2094
+ super(t, e),
2095
+ (this._isEnabled = !0),
2096
+ (this._timeout = 0),
2097
+ (this._isHovered = null),
2098
+ (this._activeTrigger = {}),
2099
+ (this._popper = null),
2100
+ (this._templateFactory = null),
2101
+ (this._newContent = null),
2102
+ (this.tip = null),
2103
+ this._setListeners(),
2104
+ this._config.selector || this._fixTitle();
2105
+ }
2106
+ static get Default() {
2107
+ return Mi;
2108
+ }
2109
+ static get DefaultType() {
2110
+ return ji;
2111
+ }
2112
+ static get NAME() {
2113
+ return "tooltip";
2114
+ }
2115
+ enable() {
2116
+ this._isEnabled = !0;
2117
+ }
2118
+ disable() {
2119
+ this._isEnabled = !1;
2120
+ }
2121
+ toggleEnabled() {
2122
+ this._isEnabled = !this._isEnabled;
2123
+ }
2124
+ toggle() {
2125
+ this._isEnabled && (this._isShown() ? this._leave() : this._enter());
2126
+ }
2127
+ dispose() {
2128
+ clearTimeout(this._timeout),
2129
+ F.off(this._element.closest(Oi), Ii, this._hideModalHandler),
2130
+ this._element.getAttribute("data-bs-original-title") &&
2131
+ this._element.setAttribute(
2132
+ "title",
2133
+ this._element.getAttribute("data-bs-original-title"),
2134
+ ),
2135
+ this._disposePopper(),
2136
+ super.dispose();
2137
+ }
2138
+ show() {
2139
+ if ("none" === this._element.style.display)
2140
+ throw new Error("Please use show on visible elements");
2141
+ if (!this._isWithContent() || !this._isEnabled) return;
2142
+ const t = F.trigger(this._element, this.constructor.eventName("show")),
2143
+ e = (
2144
+ _(this._element) || this._element.ownerDocument.documentElement
2145
+ ).contains(this._element);
2146
+ if (t.defaultPrevented || !e) return;
2147
+ this._disposePopper();
2148
+ const i = this._getTipElement();
2149
+ this._element.setAttribute("aria-describedby", i.getAttribute("id"));
2150
+ const { container: s } = this._config;
2151
+ if (
2152
+ (this._element.ownerDocument.documentElement.contains(this.tip) ||
2153
+ (s.append(i),
2154
+ F.trigger(this._element, this.constructor.eventName("inserted"))),
2155
+ (this._popper = this._createPopper(i)),
2156
+ i.classList.add(Si),
2157
+ "ontouchstart" in document.documentElement)
2158
+ )
2159
+ for (const t of [].concat(...document.body.children))
2160
+ F.on(t, "mouseover", g);
2161
+ this._queueCallback(
2162
+ () => {
2163
+ F.trigger(this._element, this.constructor.eventName("shown")),
2164
+ !1 === this._isHovered && this._leave(),
2165
+ (this._isHovered = !1);
2166
+ },
2167
+ this.tip,
2168
+ this._isAnimated(),
2169
+ );
2170
+ }
2171
+ hide() {
2172
+ if (
2173
+ this._isShown() &&
2174
+ !F.trigger(this._element, this.constructor.eventName("hide"))
2175
+ .defaultPrevented
2176
+ ) {
2177
+ if (
2178
+ (this._getTipElement().classList.remove(Si),
2179
+ "ontouchstart" in document.documentElement)
2180
+ )
2181
+ for (const t of [].concat(...document.body.children))
2182
+ F.off(t, "mouseover", g);
2183
+ (this._activeTrigger[Pi] = !1),
2184
+ (this._activeTrigger[Ni] = !1),
2185
+ (this._activeTrigger[Di] = !1),
2186
+ (this._isHovered = null),
2187
+ this._queueCallback(
2188
+ () => {
2189
+ this._isWithActiveTrigger() ||
2190
+ (this._isHovered || this._disposePopper(),
2191
+ this._element.removeAttribute("aria-describedby"),
2192
+ F.trigger(this._element, this.constructor.eventName("hidden")));
2193
+ },
2194
+ this.tip,
2195
+ this._isAnimated(),
2196
+ );
2197
+ }
2198
+ }
2199
+ update() {
2200
+ this._popper && this._popper.update();
2201
+ }
2202
+ _isWithContent() {
2203
+ return Boolean(this._getTitle());
2204
+ }
2205
+ _getTipElement() {
2206
+ return (
2207
+ this.tip ||
2208
+ (this.tip = this._createTipElement(
2209
+ this._newContent || this._getContentForTemplate(),
2210
+ )),
2211
+ this.tip
2212
+ );
2213
+ }
2214
+ _createTipElement(t) {
2215
+ const e = this._getTemplateFactory(t).toHtml();
2216
+ if (!e) return null;
2217
+ e.classList.remove($i, Si),
2218
+ e.classList.add(`bs-${this.constructor.NAME}-auto`);
2219
+ const i = ((t) => {
2220
+ do {
2221
+ t += Math.floor(1e6 * Math.random());
2222
+ } while (document.getElementById(t));
2223
+ return t;
2224
+ })(this.constructor.NAME).toString();
2225
+ return (
2226
+ e.setAttribute("id", i), this._isAnimated() && e.classList.add($i), e
2227
+ );
2228
+ }
2229
+ setContent(t) {
2230
+ (this._newContent = t),
2231
+ this._isShown() && (this._disposePopper(), this.show());
2232
+ }
2233
+ _getTemplateFactory(t) {
2234
+ return (
2235
+ this._templateFactory
2236
+ ? this._templateFactory.changeContent(t)
2237
+ : (this._templateFactory = new Ti({
2238
+ ...this._config,
2239
+ content: t,
2240
+ extraClass: this._resolvePossibleFunction(
2241
+ this._config.customClass,
2242
+ ),
2243
+ })),
2244
+ this._templateFactory
2245
+ );
2246
+ }
2247
+ _getContentForTemplate() {
2248
+ return { [Li]: this._getTitle() };
2249
+ }
2250
+ _getTitle() {
2251
+ return (
2252
+ this._resolvePossibleFunction(this._config.title) ||
2253
+ this._element.getAttribute("data-bs-original-title")
2254
+ );
2255
+ }
2256
+ _initializeOnDelegatedTarget(t) {
2257
+ return this.constructor.getOrCreateInstance(
2258
+ t.delegateTarget,
2259
+ this._getDelegateConfig(),
2260
+ );
2261
+ }
2262
+ _isAnimated() {
2263
+ return (
2264
+ this._config.animation || (this.tip && this.tip.classList.contains($i))
2265
+ );
2266
+ }
2267
+ _isShown() {
2268
+ return this.tip && this.tip.classList.contains(Si);
2269
+ }
2270
+ _createPopper(t) {
2271
+ const e = y(this._config.placement, [this, t, this._element]),
2272
+ s = xi[e.toUpperCase()];
2273
+ return i.createPopper(this._element, t, this._getPopperConfig(s));
2274
+ }
2275
+ _getOffset() {
2276
+ const { offset: t } = this._config;
2277
+ return "string" == typeof t
2278
+ ? t.split(",").map((t) => Number.parseInt(t, 10))
2279
+ : "function" == typeof t
2280
+ ? (e) => t(e, this._element)
2281
+ : t;
2282
+ }
2283
+ _resolvePossibleFunction(t) {
2284
+ return y(t, [this._element, this._element]);
2285
+ }
2286
+ _getPopperConfig(t) {
2287
+ const e = {
2288
+ placement: t,
2289
+ modifiers: [
2290
+ {
2291
+ name: "flip",
2292
+ options: { fallbackPlacements: this._config.fallbackPlacements },
2293
+ },
2294
+ { name: "offset", options: { offset: this._getOffset() } },
2295
+ {
2296
+ name: "preventOverflow",
2297
+ options: { boundary: this._config.boundary },
2298
+ },
2299
+ {
2300
+ name: "arrow",
2301
+ options: { element: `.${this.constructor.NAME}-arrow` },
2302
+ },
2303
+ {
2304
+ name: "preSetPlacement",
2305
+ enabled: !0,
2306
+ phase: "beforeMain",
2307
+ fn: (t) => {
2308
+ this._getTipElement().setAttribute(
2309
+ "data-popper-placement",
2310
+ t.state.placement,
2311
+ );
2312
+ },
2313
+ },
2314
+ ],
2315
+ };
2316
+ return { ...e, ...y(this._config.popperConfig, [void 0, e]) };
2317
+ }
2318
+ _setListeners() {
2319
+ const t = this._config.trigger.split(" ");
2320
+ for (const e of t)
2321
+ if ("click" === e)
2322
+ F.on(
2323
+ this._element,
2324
+ this.constructor.eventName("click"),
2325
+ this._config.selector,
2326
+ (t) => {
2327
+ const e = this._initializeOnDelegatedTarget(t);
2328
+ (e._activeTrigger[Pi] = !(e._isShown() && e._activeTrigger[Pi])),
2329
+ e.toggle();
2330
+ },
2331
+ );
2332
+ else if ("manual" !== e) {
2333
+ const t =
2334
+ e === Di
2335
+ ? this.constructor.eventName("mouseenter")
2336
+ : this.constructor.eventName("focusin"),
2337
+ i =
2338
+ e === Di
2339
+ ? this.constructor.eventName("mouseleave")
2340
+ : this.constructor.eventName("focusout");
2341
+ F.on(this._element, t, this._config.selector, (t) => {
2342
+ const e = this._initializeOnDelegatedTarget(t);
2343
+ (e._activeTrigger["focusin" === t.type ? Ni : Di] = !0), e._enter();
2344
+ }),
2345
+ F.on(this._element, i, this._config.selector, (t) => {
2346
+ const e = this._initializeOnDelegatedTarget(t);
2347
+ (e._activeTrigger["focusout" === t.type ? Ni : Di] =
2348
+ e._element.contains(t.relatedTarget)),
2349
+ e._leave();
2350
+ });
2351
+ }
2352
+ (this._hideModalHandler = () => {
2353
+ this._element && this.hide();
2354
+ }),
2355
+ F.on(this._element.closest(Oi), Ii, this._hideModalHandler);
2356
+ }
2357
+ _fixTitle() {
2358
+ const t = this._element.getAttribute("title");
2359
+ t &&
2360
+ (this._element.getAttribute("aria-label") ||
2361
+ this._element.textContent.trim() ||
2362
+ this._element.setAttribute("aria-label", t),
2363
+ this._element.setAttribute("data-bs-original-title", t),
2364
+ this._element.removeAttribute("title"));
2365
+ }
2366
+ _enter() {
2367
+ this._isShown() || this._isHovered
2368
+ ? (this._isHovered = !0)
2369
+ : ((this._isHovered = !0),
2370
+ this._setTimeout(() => {
2371
+ this._isHovered && this.show();
2372
+ }, this._config.delay.show));
2373
+ }
2374
+ _leave() {
2375
+ this._isWithActiveTrigger() ||
2376
+ ((this._isHovered = !1),
2377
+ this._setTimeout(() => {
2378
+ this._isHovered || this.hide();
2379
+ }, this._config.delay.hide));
2380
+ }
2381
+ _setTimeout(t, e) {
2382
+ clearTimeout(this._timeout), (this._timeout = setTimeout(t, e));
2383
+ }
2384
+ _isWithActiveTrigger() {
2385
+ return Object.values(this._activeTrigger).includes(!0);
2386
+ }
2387
+ _getConfig(t) {
2388
+ const e = q.getDataAttributes(this._element);
2389
+ for (const t of Object.keys(e)) ki.has(t) && delete e[t];
2390
+ return (
2391
+ (t = { ...e, ...("object" == typeof t && t ? t : {}) }),
2392
+ (t = this._mergeConfigObj(t)),
2393
+ (t = this._configAfterMerge(t)),
2394
+ this._typeCheckConfig(t),
2395
+ t
2396
+ );
2397
+ }
2398
+ _configAfterMerge(t) {
2399
+ return (
2400
+ (t.container = !1 === t.container ? document.body : h(t.container)),
2401
+ "number" == typeof t.delay &&
2402
+ (t.delay = { show: t.delay, hide: t.delay }),
2403
+ "number" == typeof t.title && (t.title = t.title.toString()),
2404
+ "number" == typeof t.content && (t.content = t.content.toString()),
2405
+ t
2406
+ );
2407
+ }
2408
+ _getDelegateConfig() {
2409
+ const t = {};
2410
+ for (const [e, i] of Object.entries(this._config))
2411
+ this.constructor.Default[e] !== i && (t[e] = i);
2412
+ return (t.selector = !1), (t.trigger = "manual"), t;
2413
+ }
2414
+ _disposePopper() {
2415
+ this._popper && (this._popper.destroy(), (this._popper = null)),
2416
+ this.tip && (this.tip.remove(), (this.tip = null));
2417
+ }
2418
+ static jQueryInterface(t) {
2419
+ return this.each(function () {
2420
+ const e = Fi.getOrCreateInstance(this, t);
2421
+ if ("string" == typeof t) {
2422
+ if (void 0 === e[t]) throw new TypeError(`No method named "${t}"`);
2423
+ e[t]();
2424
+ }
2425
+ });
2426
+ }
2427
+ }
2428
+ v(Fi);
2429
+ const zi = ".popover-header",
2430
+ Hi = ".popover-body",
2431
+ Bi = {
2432
+ ...Fi.Default,
2433
+ content: "",
2434
+ offset: [0, 8],
2435
+ placement: "right",
2436
+ template:
2437
+ '<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>',
2438
+ trigger: "click",
2439
+ },
2440
+ qi = { ...Fi.DefaultType, content: "(null|string|element|function)" };
2441
+ class Wi extends Fi {
2442
+ static get Default() {
2443
+ return Bi;
2444
+ }
2445
+ static get DefaultType() {
2446
+ return qi;
2447
+ }
2448
+ static get NAME() {
2449
+ return "popover";
2450
+ }
2451
+ _isWithContent() {
2452
+ return this._getTitle() || this._getContent();
2453
+ }
2454
+ _getContentForTemplate() {
2455
+ return { [zi]: this._getTitle(), [Hi]: this._getContent() };
2456
+ }
2457
+ _getContent() {
2458
+ return this._resolvePossibleFunction(this._config.content);
2459
+ }
2460
+ static jQueryInterface(t) {
2461
+ return this.each(function () {
2462
+ const e = Wi.getOrCreateInstance(this, t);
2463
+ if ("string" == typeof t) {
2464
+ if (void 0 === e[t]) throw new TypeError(`No method named "${t}"`);
2465
+ e[t]();
2466
+ }
2467
+ });
2468
+ }
2469
+ }
2470
+ v(Wi);
2471
+ const Ri = ".bs.scrollspy",
2472
+ Ki = `activate${Ri}`,
2473
+ Vi = `click${Ri}`,
2474
+ Qi = `load${Ri}.data-api`,
2475
+ Xi = "active",
2476
+ Yi = "[href]",
2477
+ Ui = ".nav-link",
2478
+ Gi = `${Ui}, .nav-item > ${Ui}, .list-group-item`,
2479
+ Ji = {
2480
+ offset: null,
2481
+ rootMargin: "0px 0px -25%",
2482
+ smoothScroll: !1,
2483
+ target: null,
2484
+ threshold: [0.1, 0.5, 1],
2485
+ },
2486
+ Zi = {
2487
+ offset: "(number|null)",
2488
+ rootMargin: "string",
2489
+ smoothScroll: "boolean",
2490
+ target: "element",
2491
+ threshold: "array",
2492
+ };
2493
+ class ts extends R {
2494
+ constructor(t, e) {
2495
+ super(t, e),
2496
+ (this._targetLinks = new Map()),
2497
+ (this._observableSections = new Map()),
2498
+ (this._rootElement =
2499
+ "visible" === getComputedStyle(this._element).overflowY
2500
+ ? null
2501
+ : this._element),
2502
+ (this._activeTarget = null),
2503
+ (this._observer = null),
2504
+ (this._previousScrollData = { visibleEntryTop: 0, parentScrollTop: 0 }),
2505
+ this.refresh();
2506
+ }
2507
+ static get Default() {
2508
+ return Ji;
2509
+ }
2510
+ static get DefaultType() {
2511
+ return Zi;
2512
+ }
2513
+ static get NAME() {
2514
+ return "scrollspy";
2515
+ }
2516
+ refresh() {
2517
+ this._initializeTargetsAndObservables(),
2518
+ this._maybeEnableSmoothScroll(),
2519
+ this._observer
2520
+ ? this._observer.disconnect()
2521
+ : (this._observer = this._getNewObserver());
2522
+ for (const t of this._observableSections.values())
2523
+ this._observer.observe(t);
2524
+ }
2525
+ dispose() {
2526
+ this._observer.disconnect(), super.dispose();
2527
+ }
2528
+ _configAfterMerge(t) {
2529
+ return (
2530
+ (t.target = h(t.target) || document.body),
2531
+ (t.rootMargin = t.offset ? `${t.offset}px 0px -30%` : t.rootMargin),
2532
+ "string" == typeof t.threshold &&
2533
+ (t.threshold = t.threshold
2534
+ .split(",")
2535
+ .map((t) => Number.parseFloat(t))),
2536
+ t
2537
+ );
2538
+ }
2539
+ _maybeEnableSmoothScroll() {
2540
+ this._config.smoothScroll &&
2541
+ (F.off(this._config.target, Vi),
2542
+ F.on(this._config.target, Vi, Yi, (t) => {
2543
+ const e = this._observableSections.get(t.target.hash);
2544
+ if (e) {
2545
+ t.preventDefault();
2546
+ const i = this._rootElement || window,
2547
+ s = e.offsetTop - this._element.offsetTop;
2548
+ if (i.scrollTo)
2549
+ return void i.scrollTo({ top: s, behavior: "smooth" });
2550
+ i.scrollTop = s;
2551
+ }
2552
+ }));
2553
+ }
2554
+ _getNewObserver() {
2555
+ const t = {
2556
+ root: this._rootElement,
2557
+ threshold: this._config.threshold,
2558
+ rootMargin: this._config.rootMargin,
2559
+ };
2560
+ return new IntersectionObserver((t) => this._observerCallback(t), t);
2561
+ }
2562
+ _observerCallback(t) {
2563
+ const e = (t) => this._targetLinks.get(`#${t.target.id}`),
2564
+ i = (t) => {
2565
+ (this._previousScrollData.visibleEntryTop = t.target.offsetTop),
2566
+ this._process(e(t));
2567
+ },
2568
+ s = (this._rootElement || document.documentElement).scrollTop,
2569
+ n = s >= this._previousScrollData.parentScrollTop;
2570
+ this._previousScrollData.parentScrollTop = s;
2571
+ for (const o of t) {
2572
+ if (!o.isIntersecting) {
2573
+ (this._activeTarget = null), this._clearActiveClass(e(o));
2574
+ continue;
2575
+ }
2576
+ const t =
2577
+ o.target.offsetTop >= this._previousScrollData.visibleEntryTop;
2578
+ if (n && t) {
2579
+ if ((i(o), !s)) return;
2580
+ } else n || t || i(o);
2581
+ }
2582
+ }
2583
+ _initializeTargetsAndObservables() {
2584
+ (this._targetLinks = new Map()), (this._observableSections = new Map());
2585
+ const t = V.find(Yi, this._config.target);
2586
+ for (const e of t) {
2587
+ if (!e.hash || u(e)) continue;
2588
+ const t = V.findOne(decodeURI(e.hash), this._element);
2589
+ d(t) &&
2590
+ (this._targetLinks.set(decodeURI(e.hash), e),
2591
+ this._observableSections.set(e.hash, t));
2592
+ }
2593
+ }
2594
+ _process(t) {
2595
+ this._activeTarget !== t &&
2596
+ (this._clearActiveClass(this._config.target),
2597
+ (this._activeTarget = t),
2598
+ t.classList.add(Xi),
2599
+ this._activateParents(t),
2600
+ F.trigger(this._element, Ki, { relatedTarget: t }));
2601
+ }
2602
+ _activateParents(t) {
2603
+ if (t.classList.contains("dropdown-item"))
2604
+ V.findOne(".dropdown-toggle", t.closest(".dropdown")).classList.add(Xi);
2605
+ else
2606
+ for (const e of V.parents(t, ".nav, .list-group"))
2607
+ for (const t of V.prev(e, Gi)) t.classList.add(Xi);
2608
+ }
2609
+ _clearActiveClass(t) {
2610
+ t.classList.remove(Xi);
2611
+ const e = V.find(`${Yi}.${Xi}`, t);
2612
+ for (const t of e) t.classList.remove(Xi);
2613
+ }
2614
+ static jQueryInterface(t) {
2615
+ return this.each(function () {
2616
+ const e = ts.getOrCreateInstance(this, t);
2617
+ if ("string" == typeof t) {
2618
+ if (void 0 === e[t] || t.startsWith("_") || "constructor" === t)
2619
+ throw new TypeError(`No method named "${t}"`);
2620
+ e[t]();
2621
+ }
2622
+ });
2623
+ }
2624
+ }
2625
+ F.on(window, Qi, () => {
2626
+ for (const t of V.find('[data-bs-spy="scroll"]')) ts.getOrCreateInstance(t);
2627
+ }),
2628
+ v(ts);
2629
+ const es = ".bs.tab",
2630
+ is = `hide${es}`,
2631
+ ss = `hidden${es}`,
2632
+ ns = `show${es}`,
2633
+ os = `shown${es}`,
2634
+ rs = `click${es}`,
2635
+ as = `keydown${es}`,
2636
+ ls = `load${es}`,
2637
+ cs = "ArrowLeft",
2638
+ hs = "ArrowRight",
2639
+ ds = "ArrowUp",
2640
+ us = "ArrowDown",
2641
+ _s = "Home",
2642
+ gs = "End",
2643
+ fs = "active",
2644
+ ms = "fade",
2645
+ ps = "show",
2646
+ bs = ".dropdown-toggle",
2647
+ vs = `:not(${bs})`,
2648
+ ys =
2649
+ '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',
2650
+ ws = `.nav-link${vs}, .list-group-item${vs}, [role="tab"]${vs}, ${ys}`,
2651
+ As = `.${fs}[data-bs-toggle="tab"], .${fs}[data-bs-toggle="pill"], .${fs}[data-bs-toggle="list"]`;
2652
+ class Es extends R {
2653
+ constructor(t) {
2654
+ super(t),
2655
+ (this._parent = this._element.closest(
2656
+ '.list-group, .nav, [role="tablist"]',
2657
+ )),
2658
+ this._parent &&
2659
+ (this._setInitialAttributes(this._parent, this._getChildren()),
2660
+ F.on(this._element, as, (t) => this._keydown(t)));
2661
+ }
2662
+ static get NAME() {
2663
+ return "tab";
2664
+ }
2665
+ show() {
2666
+ const t = this._element;
2667
+ if (this._elemIsActive(t)) return;
2668
+ const e = this._getActiveElem(),
2669
+ i = e ? F.trigger(e, is, { relatedTarget: t }) : null;
2670
+ F.trigger(t, ns, { relatedTarget: e }).defaultPrevented ||
2671
+ (i && i.defaultPrevented) ||
2672
+ (this._deactivate(e, t), this._activate(t, e));
2673
+ }
2674
+ _activate(t, e) {
2675
+ t &&
2676
+ (t.classList.add(fs),
2677
+ this._activate(V.getElementFromSelector(t)),
2678
+ this._queueCallback(
2679
+ () => {
2680
+ "tab" === t.getAttribute("role")
2681
+ ? (t.removeAttribute("tabindex"),
2682
+ t.setAttribute("aria-selected", !0),
2683
+ this._toggleDropDown(t, !0),
2684
+ F.trigger(t, os, { relatedTarget: e }))
2685
+ : t.classList.add(ps);
2686
+ },
2687
+ t,
2688
+ t.classList.contains(ms),
2689
+ ));
2690
+ }
2691
+ _deactivate(t, e) {
2692
+ t &&
2693
+ (t.classList.remove(fs),
2694
+ t.blur(),
2695
+ this._deactivate(V.getElementFromSelector(t)),
2696
+ this._queueCallback(
2697
+ () => {
2698
+ "tab" === t.getAttribute("role")
2699
+ ? (t.setAttribute("aria-selected", !1),
2700
+ t.setAttribute("tabindex", "-1"),
2701
+ this._toggleDropDown(t, !1),
2702
+ F.trigger(t, ss, { relatedTarget: e }))
2703
+ : t.classList.remove(ps);
2704
+ },
2705
+ t,
2706
+ t.classList.contains(ms),
2707
+ ));
2708
+ }
2709
+ _keydown(t) {
2710
+ if (![cs, hs, ds, us, _s, gs].includes(t.key)) return;
2711
+ t.stopPropagation(), t.preventDefault();
2712
+ const e = this._getChildren().filter((t) => !u(t));
2713
+ let i;
2714
+ if ([_s, gs].includes(t.key)) i = e[t.key === _s ? 0 : e.length - 1];
2715
+ else {
2716
+ const s = [hs, us].includes(t.key);
2717
+ i = A(e, t.target, s, !0);
2718
+ }
2719
+ i && (i.focus({ preventScroll: !0 }), Es.getOrCreateInstance(i).show());
2720
+ }
2721
+ _getChildren() {
2722
+ return V.find(ws, this._parent);
2723
+ }
2724
+ _getActiveElem() {
2725
+ return this._getChildren().find((t) => this._elemIsActive(t)) || null;
2726
+ }
2727
+ _setInitialAttributes(t, e) {
2728
+ this._setAttributeIfNotExists(t, "role", "tablist");
2729
+ for (const t of e) this._setInitialAttributesOnChild(t);
2730
+ }
2731
+ _setInitialAttributesOnChild(t) {
2732
+ t = this._getInnerElement(t);
2733
+ const e = this._elemIsActive(t),
2734
+ i = this._getOuterElement(t);
2735
+ t.setAttribute("aria-selected", e),
2736
+ i !== t && this._setAttributeIfNotExists(i, "role", "presentation"),
2737
+ e || t.setAttribute("tabindex", "-1"),
2738
+ this._setAttributeIfNotExists(t, "role", "tab"),
2739
+ this._setInitialAttributesOnTargetPanel(t);
2740
+ }
2741
+ _setInitialAttributesOnTargetPanel(t) {
2742
+ const e = V.getElementFromSelector(t);
2743
+ e &&
2744
+ (this._setAttributeIfNotExists(e, "role", "tabpanel"),
2745
+ t.id && this._setAttributeIfNotExists(e, "aria-labelledby", `${t.id}`));
2746
+ }
2747
+ _toggleDropDown(t, e) {
2748
+ const i = this._getOuterElement(t);
2749
+ if (!i.classList.contains("dropdown")) return;
2750
+ const s = (t, s) => {
2751
+ const n = V.findOne(t, i);
2752
+ n && n.classList.toggle(s, e);
2753
+ };
2754
+ s(bs, fs), s(".dropdown-menu", ps), i.setAttribute("aria-expanded", e);
2755
+ }
2756
+ _setAttributeIfNotExists(t, e, i) {
2757
+ t.hasAttribute(e) || t.setAttribute(e, i);
2758
+ }
2759
+ _elemIsActive(t) {
2760
+ return t.classList.contains(fs);
2761
+ }
2762
+ _getInnerElement(t) {
2763
+ return t.matches(ws) ? t : V.findOne(ws, t);
2764
+ }
2765
+ _getOuterElement(t) {
2766
+ return t.closest(".nav-item, .list-group-item") || t;
2767
+ }
2768
+ static jQueryInterface(t) {
2769
+ return this.each(function () {
2770
+ const e = Es.getOrCreateInstance(this);
2771
+ if ("string" == typeof t) {
2772
+ if (void 0 === e[t] || t.startsWith("_") || "constructor" === t)
2773
+ throw new TypeError(`No method named "${t}"`);
2774
+ e[t]();
2775
+ }
2776
+ });
2777
+ }
2778
+ }
2779
+ F.on(document, rs, ys, function (t) {
2780
+ ["A", "AREA"].includes(this.tagName) && t.preventDefault(),
2781
+ u(this) || Es.getOrCreateInstance(this).show();
2782
+ }),
2783
+ F.on(window, ls, () => {
2784
+ for (const t of V.find(As)) Es.getOrCreateInstance(t);
2785
+ }),
2786
+ v(Es);
2787
+ const Cs = ".bs.toast",
2788
+ Ts = `mouseover${Cs}`,
2789
+ ks = `mouseout${Cs}`,
2790
+ $s = `focusin${Cs}`,
2791
+ Ss = `focusout${Cs}`,
2792
+ Ls = `hide${Cs}`,
2793
+ Os = `hidden${Cs}`,
2794
+ Is = `show${Cs}`,
2795
+ Ds = `shown${Cs}`,
2796
+ Ns = "hide",
2797
+ Ps = "show",
2798
+ xs = "showing",
2799
+ Ms = { animation: "boolean", autohide: "boolean", delay: "number" },
2800
+ js = { animation: !0, autohide: !0, delay: 5e3 };
2801
+ class Fs extends R {
2802
+ constructor(t, e) {
2803
+ super(t, e),
2804
+ (this._timeout = null),
2805
+ (this._hasMouseInteraction = !1),
2806
+ (this._hasKeyboardInteraction = !1),
2807
+ this._setListeners();
2808
+ }
2809
+ static get Default() {
2810
+ return js;
2811
+ }
2812
+ static get DefaultType() {
2813
+ return Ms;
2814
+ }
2815
+ static get NAME() {
2816
+ return "toast";
2817
+ }
2818
+ show() {
2819
+ F.trigger(this._element, Is).defaultPrevented ||
2820
+ (this._clearTimeout(),
2821
+ this._config.animation && this._element.classList.add("fade"),
2822
+ this._element.classList.remove(Ns),
2823
+ f(this._element),
2824
+ this._element.classList.add(Ps, xs),
2825
+ this._queueCallback(
2826
+ () => {
2827
+ this._element.classList.remove(xs),
2828
+ F.trigger(this._element, Ds),
2829
+ this._maybeScheduleHide();
2830
+ },
2831
+ this._element,
2832
+ this._config.animation,
2833
+ ));
2834
+ }
2835
+ hide() {
2836
+ this.isShown() &&
2837
+ (F.trigger(this._element, Ls).defaultPrevented ||
2838
+ (this._element.classList.add(xs),
2839
+ this._queueCallback(
2840
+ () => {
2841
+ this._element.classList.add(Ns),
2842
+ this._element.classList.remove(xs, Ps),
2843
+ F.trigger(this._element, Os);
2844
+ },
2845
+ this._element,
2846
+ this._config.animation,
2847
+ )));
2848
+ }
2849
+ dispose() {
2850
+ this._clearTimeout(),
2851
+ this.isShown() && this._element.classList.remove(Ps),
2852
+ super.dispose();
2853
+ }
2854
+ isShown() {
2855
+ return this._element.classList.contains(Ps);
2856
+ }
2857
+ _maybeScheduleHide() {
2858
+ this._config.autohide &&
2859
+ (this._hasMouseInteraction ||
2860
+ this._hasKeyboardInteraction ||
2861
+ (this._timeout = setTimeout(() => {
2862
+ this.hide();
2863
+ }, this._config.delay)));
2864
+ }
2865
+ _onInteraction(t, e) {
2866
+ switch (t.type) {
2867
+ case "mouseover":
2868
+ case "mouseout":
2869
+ this._hasMouseInteraction = e;
2870
+ break;
2871
+ case "focusin":
2872
+ case "focusout":
2873
+ this._hasKeyboardInteraction = e;
2874
+ }
2875
+ if (e) return void this._clearTimeout();
2876
+ const i = t.relatedTarget;
2877
+ this._element === i ||
2878
+ this._element.contains(i) ||
2879
+ this._maybeScheduleHide();
2880
+ }
2881
+ _setListeners() {
2882
+ F.on(this._element, Ts, (t) => this._onInteraction(t, !0)),
2883
+ F.on(this._element, ks, (t) => this._onInteraction(t, !1)),
2884
+ F.on(this._element, $s, (t) => this._onInteraction(t, !0)),
2885
+ F.on(this._element, Ss, (t) => this._onInteraction(t, !1));
2886
+ }
2887
+ _clearTimeout() {
2888
+ clearTimeout(this._timeout), (this._timeout = null);
2889
+ }
2890
+ static jQueryInterface(t) {
2891
+ return this.each(function () {
2892
+ const e = Fs.getOrCreateInstance(this, t);
2893
+ if ("string" == typeof t) {
2894
+ if (void 0 === e[t]) throw new TypeError(`No method named "${t}"`);
2895
+ e[t](this);
2896
+ }
2897
+ });
2898
+ }
2899
+ }
2900
+ return (
2901
+ Q(Fs),
2902
+ v(Fs),
2903
+ {
2904
+ Alert: G,
2905
+ Button: Z,
2906
+ Carousel: Nt,
2907
+ Collapse: Qt,
2908
+ Dropdown: be,
2909
+ Modal: Ze,
2910
+ Offcanvas: pi,
2911
+ Popover: Wi,
2912
+ ScrollSpy: ts,
2913
+ Tab: Es,
2914
+ Toast: Fs,
2915
+ Tooltip: Fi,
2916
+ }
2917
+ );
2918
+ });
2919
+ //# sourceMappingURL=bootstrap.min.js.map