Full Code of mdbootstrap/mdb-ui-kit for AI

master 05b5e7f83f53 cached
365 files
1.4 MB
397.8k tokens
1940 symbols
1 requests
Download .txt
Showing preview only (1,549K chars total). Download the full file or copy to clipboard to get everything.
Repository: mdbootstrap/mdb-ui-kit
Branch: master
Commit: 05b5e7f83f53
Files: 365
Total size: 1.4 MB

Directory structure:
gitextract_2w7zpwz8/

├── .gitignore
├── License.txt
├── README.md
├── README.txt
├── index.html
├── package.json
└── src/
    ├── js/
    │   ├── autoinit/
    │   │   ├── callbacks/
    │   │   │   └── free.js
    │   │   ├── index.free.js
    │   │   ├── init.js
    │   │   └── initSelectors/
    │   │       └── free.js
    │   ├── bootstrap/
    │   │   ├── dist/
    │   │   │   ├── alert.js
    │   │   │   ├── base-component.js
    │   │   │   ├── button.js
    │   │   │   ├── carousel.js
    │   │   │   ├── collapse.js
    │   │   │   ├── dom/
    │   │   │   │   ├── data.js
    │   │   │   │   ├── event-handler.js
    │   │   │   │   ├── manipulator.js
    │   │   │   │   └── selector-engine.js
    │   │   │   ├── dropdown.js
    │   │   │   ├── modal.js
    │   │   │   ├── offcanvas.js
    │   │   │   ├── popover.js
    │   │   │   ├── scrollspy.js
    │   │   │   ├── tab.js
    │   │   │   ├── toast.js
    │   │   │   ├── tooltip.js
    │   │   │   └── util/
    │   │   │       ├── backdrop.js
    │   │   │       ├── component-functions.js
    │   │   │       ├── config.js
    │   │   │       ├── focustrap.js
    │   │   │       ├── index.js
    │   │   │       ├── sanitizer.js
    │   │   │       ├── scrollbar.js
    │   │   │       ├── swipe.js
    │   │   │       └── template-factory.js
    │   │   ├── mdb-prefix/
    │   │   │   ├── alert.js
    │   │   │   ├── base-component.js
    │   │   │   ├── button.js
    │   │   │   ├── carousel.js
    │   │   │   ├── collapse.js
    │   │   │   ├── dom/
    │   │   │   │   ├── data.js
    │   │   │   │   ├── event-handler.js
    │   │   │   │   ├── manipulator.js
    │   │   │   │   └── selector-engine.js
    │   │   │   ├── dropdown.js
    │   │   │   ├── modal.js
    │   │   │   ├── offcanvas.js
    │   │   │   ├── popover.js
    │   │   │   ├── scrollspy.js
    │   │   │   ├── tab.js
    │   │   │   ├── toast.js
    │   │   │   ├── tooltip.js
    │   │   │   └── util/
    │   │   │       ├── backdrop.js
    │   │   │       ├── component-functions.js
    │   │   │       ├── config.js
    │   │   │       ├── focustrap.js
    │   │   │       ├── index.js
    │   │   │       ├── sanitizer.js
    │   │   │       ├── scrollbar.js
    │   │   │       ├── swipe.js
    │   │   │       └── template-factory.js
    │   │   └── src/
    │   │       ├── alert.js
    │   │       ├── base-component.js
    │   │       ├── button.js
    │   │       ├── carousel.js
    │   │       ├── collapse.js
    │   │       ├── dom/
    │   │       │   ├── data.js
    │   │       │   ├── event-handler.js
    │   │       │   ├── manipulator.js
    │   │       │   └── selector-engine.js
    │   │       ├── dropdown.js
    │   │       ├── modal.js
    │   │       ├── offcanvas.js
    │   │       ├── popover.js
    │   │       ├── scrollspy.js
    │   │       ├── tab.js
    │   │       ├── toast.js
    │   │       ├── tooltip.js
    │   │       └── util/
    │   │           ├── backdrop.js
    │   │           ├── component-functions.js
    │   │           ├── config.js
    │   │           ├── focustrap.js
    │   │           ├── index.js
    │   │           ├── sanitizer.js
    │   │           ├── scrollbar.js
    │   │           ├── swipe.js
    │   │           └── template-factory.js
    │   ├── free/
    │   │   ├── alert.js
    │   │   ├── base-component.js
    │   │   ├── button.js
    │   │   ├── carousel.js
    │   │   ├── collapse.js
    │   │   ├── dropdown.js
    │   │   ├── input.js
    │   │   ├── modal.js
    │   │   ├── popover.js
    │   │   ├── range.js
    │   │   ├── ripple.js
    │   │   ├── scrollspy.js
    │   │   ├── tab.js
    │   │   ├── toast.js
    │   │   └── tooltip.js
    │   ├── mdb/
    │   │   ├── dom/
    │   │   │   ├── data.js
    │   │   │   ├── event-handler.js
    │   │   │   ├── manipulator.js
    │   │   │   └── selector-engine.js
    │   │   ├── perfect-scrollbar/
    │   │   │   ├── handlers/
    │   │   │   │   ├── click-rail.js
    │   │   │   │   ├── drag-thumb.js
    │   │   │   │   ├── keyboard.js
    │   │   │   │   ├── mouse-wheel.js
    │   │   │   │   └── touch.js
    │   │   │   ├── index.js
    │   │   │   ├── lib/
    │   │   │   │   ├── class-names.js
    │   │   │   │   ├── css.js
    │   │   │   │   ├── dom.js
    │   │   │   │   ├── event-manager.js
    │   │   │   │   └── util.js
    │   │   │   ├── process-scroll-diff.js
    │   │   │   └── update-geometry.js
    │   │   └── util/
    │   │       ├── focusTrap.js
    │   │       ├── index.js
    │   │       ├── keycodes.js
    │   │       ├── sanitizer.js
    │   │       ├── scrollbar.js
    │   │       ├── stack.js
    │   │       └── touch/
    │   │           ├── index.js
    │   │           ├── swipe.js
    │   │           └── touchUtil.js
    │   ├── mdb.free.es.js
    │   └── mdb.free.umd.js
    └── scss/
        ├── bootstrap/
        │   ├── _accordion.scss
        │   ├── _alert.scss
        │   ├── _badge.scss
        │   ├── _breadcrumb.scss
        │   ├── _button-group.scss
        │   ├── _buttons.scss
        │   ├── _card.scss
        │   ├── _carousel.scss
        │   ├── _close.scss
        │   ├── _containers.scss
        │   ├── _dropdown.scss
        │   ├── _forms.scss
        │   ├── _functions.scss
        │   ├── _grid.scss
        │   ├── _helpers.scss
        │   ├── _images.scss
        │   ├── _list-group.scss
        │   ├── _maps.scss
        │   ├── _mixins.scss
        │   ├── _modal.scss
        │   ├── _nav.scss
        │   ├── _navbar.scss
        │   ├── _offcanvas.scss
        │   ├── _pagination.scss
        │   ├── _placeholders.scss
        │   ├── _popover.scss
        │   ├── _progress.scss
        │   ├── _reboot.scss
        │   ├── _root.scss
        │   ├── _spinners.scss
        │   ├── _tables.scss
        │   ├── _toasts.scss
        │   ├── _tooltip.scss
        │   ├── _transitions.scss
        │   ├── _type.scss
        │   ├── _utilities.scss
        │   ├── _variables-dark.scss
        │   ├── _variables.scss
        │   ├── bootstrap-grid.scss
        │   ├── bootstrap-reboot.scss
        │   ├── bootstrap-utilities.scss
        │   ├── bootstrap.scss
        │   ├── forms/
        │   │   ├── _floating-labels.scss
        │   │   ├── _form-check.scss
        │   │   ├── _form-control.scss
        │   │   ├── _form-range.scss
        │   │   ├── _form-select.scss
        │   │   ├── _form-text.scss
        │   │   ├── _input-group.scss
        │   │   ├── _labels.scss
        │   │   └── _validation.scss
        │   ├── helpers/
        │   │   ├── _clearfix.scss
        │   │   ├── _color-bg.scss
        │   │   ├── _colored-links.scss
        │   │   ├── _focus-ring.scss
        │   │   ├── _icon-link.scss
        │   │   ├── _position.scss
        │   │   ├── _ratio.scss
        │   │   ├── _stacks.scss
        │   │   ├── _stretched-link.scss
        │   │   ├── _text-truncation.scss
        │   │   ├── _visually-hidden.scss
        │   │   └── _vr.scss
        │   ├── mixins/
        │   │   ├── _alert.scss
        │   │   ├── _backdrop.scss
        │   │   ├── _banner.scss
        │   │   ├── _border-radius.scss
        │   │   ├── _box-shadow.scss
        │   │   ├── _breakpoints.scss
        │   │   ├── _buttons.scss
        │   │   ├── _caret.scss
        │   │   ├── _clearfix.scss
        │   │   ├── _color-mode.scss
        │   │   ├── _color-scheme.scss
        │   │   ├── _container.scss
        │   │   ├── _deprecate.scss
        │   │   ├── _forms.scss
        │   │   ├── _gradients.scss
        │   │   ├── _grid.scss
        │   │   ├── _image.scss
        │   │   ├── _list-group.scss
        │   │   ├── _lists.scss
        │   │   ├── _pagination.scss
        │   │   ├── _reset-text.scss
        │   │   ├── _resize.scss
        │   │   ├── _table-variants.scss
        │   │   ├── _text-truncate.scss
        │   │   ├── _transition.scss
        │   │   ├── _utilities.scss
        │   │   └── _visually-hidden.scss
        │   ├── utilities/
        │   │   └── _api.scss
        │   └── vendor/
        │       └── _rfs.scss
        ├── bootstrap-rtl-fix/
        │   ├── _accordion.scss
        │   ├── _alert.scss
        │   ├── _badge.scss
        │   ├── _breadcrumb.scss
        │   ├── _button-group.scss
        │   ├── _buttons.scss
        │   ├── _card.scss
        │   ├── _carousel.scss
        │   ├── _close.scss
        │   ├── _containers.scss
        │   ├── _dropdown.scss
        │   ├── _forms.scss
        │   ├── _functions.scss
        │   ├── _grid.scss
        │   ├── _helpers.scss
        │   ├── _images.scss
        │   ├── _list-group.scss
        │   ├── _maps.scss
        │   ├── _mixins.scss
        │   ├── _modal.scss
        │   ├── _nav.scss
        │   ├── _navbar.scss
        │   ├── _offcanvas.scss
        │   ├── _pagination.scss
        │   ├── _placeholders.scss
        │   ├── _popover.scss
        │   ├── _progress.scss
        │   ├── _reboot.scss
        │   ├── _root.scss
        │   ├── _spinners.scss
        │   ├── _tables.scss
        │   ├── _toasts.scss
        │   ├── _tooltip.scss
        │   ├── _transitions.scss
        │   ├── _type.scss
        │   ├── _utilities.scss
        │   ├── _variables-dark.scss
        │   ├── _variables.scss
        │   ├── bootstrap-grid.scss
        │   ├── bootstrap-reboot.scss
        │   ├── bootstrap-utilities.scss
        │   ├── bootstrap.scss
        │   ├── forms/
        │   │   ├── _floating-labels.scss
        │   │   ├── _form-check.scss
        │   │   ├── _form-control.scss
        │   │   ├── _form-range.scss
        │   │   ├── _form-select.scss
        │   │   ├── _form-text.scss
        │   │   ├── _input-group.scss
        │   │   ├── _labels.scss
        │   │   └── _validation.scss
        │   ├── helpers/
        │   │   ├── _clearfix.scss
        │   │   ├── _color-bg.scss
        │   │   ├── _colored-links.scss
        │   │   ├── _focus-ring.scss
        │   │   ├── _icon-link.scss
        │   │   ├── _position.scss
        │   │   ├── _ratio.scss
        │   │   ├── _stacks.scss
        │   │   ├── _stretched-link.scss
        │   │   ├── _text-truncation.scss
        │   │   ├── _visually-hidden.scss
        │   │   └── _vr.scss
        │   ├── mixins/
        │   │   ├── _alert.scss
        │   │   ├── _backdrop.scss
        │   │   ├── _banner.scss
        │   │   ├── _border-radius.scss
        │   │   ├── _box-shadow.scss
        │   │   ├── _breakpoints.scss
        │   │   ├── _buttons.scss
        │   │   ├── _caret.scss
        │   │   ├── _clearfix.scss
        │   │   ├── _color-mode.scss
        │   │   ├── _color-scheme.scss
        │   │   ├── _container.scss
        │   │   ├── _deprecate.scss
        │   │   ├── _forms.scss
        │   │   ├── _gradients.scss
        │   │   ├── _grid.scss
        │   │   ├── _image.scss
        │   │   ├── _list-group.scss
        │   │   ├── _lists.scss
        │   │   ├── _pagination.scss
        │   │   ├── _reset-text.scss
        │   │   ├── _resize.scss
        │   │   ├── _table-variants.scss
        │   │   ├── _text-truncate.scss
        │   │   ├── _transition.scss
        │   │   ├── _utilities.scss
        │   │   └── _visually-hidden.scss
        │   ├── utilities/
        │   │   └── _api.scss
        │   └── vendor/
        │       └── _rfs.scss
        ├── custom/
        │   ├── _styles.scss
        │   └── _variables.scss
        ├── free/
        │   ├── _accordion.scss
        │   ├── _alert.scss
        │   ├── _badge.scss
        │   ├── _breadcrumb.scss
        │   ├── _button-group.scss
        │   ├── _buttons.scss
        │   ├── _card.scss
        │   ├── _carousel.scss
        │   ├── _close.scss
        │   ├── _colors.scss
        │   ├── _deprecated.scss
        │   ├── _dropdown.scss
        │   ├── _flag.scss
        │   ├── _functions.scss
        │   ├── _images.scss
        │   ├── _list-group.scss
        │   ├── _mixins.scss
        │   ├── _modal.scss
        │   ├── _nav.scss
        │   ├── _navbar.scss
        │   ├── _pagination.scss
        │   ├── _popover.scss
        │   ├── _progress.scss
        │   ├── _range.scss
        │   ├── _reboot.scss
        │   ├── _ripple.scss
        │   ├── _root.scss
        │   ├── _scrollspy.scss
        │   ├── _shadows.scss
        │   ├── _tables.scss
        │   ├── _toasts.scss
        │   ├── _tooltip.scss
        │   ├── _type.scss
        │   ├── _utilities.scss
        │   ├── _variables-dark.scss
        │   ├── _variables.scss
        │   ├── forms/
        │   │   ├── _form-check.scss
        │   │   ├── _form-control.scss
        │   │   ├── _form-file.scss
        │   │   ├── _form-range.scss
        │   │   ├── _form-select.scss
        │   │   ├── _input-group.scss
        │   │   └── _validation.scss
        │   └── mixins/
        │       ├── _buttons.scss
        │       ├── _color-mode.scss
        │       ├── _ripple.scss
        │       └── _table-variants.scss
        └── mdb.free.scss

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
node_modules


================================================
FILE: License.txt
================================================
MIT license for MDB Free

Free packages are available under the MIT License.

-- Highlights

● Free for personal use
● Free for commercial use
● No attribution required

-- Copyright notice

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions.

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

The software is provided "As is", without warranty of any kind, express or implied, including but not limited To the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall The authors or copyright holders be liable for any claim, damages or other liability, whether in an action of Contract, tort or otherwise, arising from, out of or in connection with the software or the use or other Dealings in the software.

================================================
FILE: README.md
================================================
Bootstrap 5 UI KIT - 700+ components, plain JavaScript, MIT license, simple installation.

MDB is a collection of free Bootstrap templates, themes, design tools & resources.

---

# Get started

### [>> Get Started in 1 minute](https://mdbootstrap.com/docs/standard/getting-started/installation/)
Simple installation via .zip, npm or cdnjs.


### [>> Install with Webpack](https://mdbootstrap.com/docs/standard/getting-started/installation/#section-webpack)
This option is useful for experienced developers it enables bundling, unit testing code formatting, linting, saas support & more.
 
### [>> Install with MDBGO](https://mdbgo.com/) 
 Free Hosting, WordPress support, custom domains, SSL support, free database, frontend & backend templates, webpack starter included, git repostiory, FTP & jenkins support.
 
### [>> Install with MDBGO + e-commerce shop integration](https://mdbgo.com/wordpress-shop/)
One click setup! MDB GO allows you to create a WordPress page with a single click.
Regardless whether you want to create a Travel Blog or an e-commerce shop to sell your product you can easily do that. You can even combine both into single page.


## About Material Design for Bootstrap 5 & Vanilla JavaScript

<p>Created by <a href="https://mdbootstrap.com"><img height="30" src="https://mdbootstrap.com/img/Marketing/general/logo/medium/mdb-r.png"></a>  
<a href="https://npmcharts.com/compare/mdbootstrap?minimal=true"> <img src="https://img.shields.io/npm/dm/mdbootstrap.svg?label=NPM%20Downloads" alt="Downloads"></a>
<a href="https://github.com/mdbootstrap/bootstrap-material-design/blob/master/License.pdf"><img src="https://img.shields.io/badge/license-MIT-green.svg" alt="License"></a>
<a href="https://x.com/intent/post?text=Thanks+%40mdbootstrap+for+creating+amazing+and+free+Material+Design+for+Bootstrap+5+UI+KIT+https%3A%2F%2Fmdbootstrap.com%2Fdocs%2Fjquery%2F&hashtags=javascript%2Ccode%2Cwebdesign%2Cbootstrap"><img src="https://img.shields.io/twitter/url/http/shields.io.svg?style=social&label=Let%20us%20know%20you%20were%20here%21&"></a>
<a href="https://mdbootstrap.com/learn/mdb-foundations/basics/introduction/">
  <img src="https://img.shields.io/static/v1?label=MDBootstrap&message=Tutorial&labelColor=007bff&color=ffffff&logoColor=007bff&textColor=000000" alt="MDBootstrap tutorial">
</a></p>


Trusted by <b>3 000 000+</b> developers & designers. Used by companies & institutions like
<table>
  <tbody>
    <tr>
      <td><img width="300" src="https://mdbootstrap.com/img/logo/brands/nasa.png"></td>
      <td><img src="https://mdbootstrap.com/img/logo/brands/nike.png"></td>
      <td><img src="https://mdbootstrap.com/img/logo/brands/amazon.png"></td>
      <td><img src="https://mdbootstrap.com/img/logo/brands/sony.png"></td>
      <td><img src="https://mdbootstrap.com/img/logo/brands/samsung.png">
      <td><img src="https://mdbootstrap.com/img/logo/brands/airbus.png">
      <td><img src="https://mdbootstrap.com/img/logo/brands/yahoo.png">
      <td><img src="https://mdbootstrap.com/img/logo/brands/deloitte.png">
      <td><img src="https://mdbootstrap.com/img/logo/brands/ge.png">
      <td><img src="https://mdbootstrap.com/img/logo/brands/kpmg.png">
      <td><img src="https://mdbootstrap.com/img/logo/brands/unity.png">
      <td><img src="https://mdbootstrap.com/img/logo/brands/ikea.png">
      <td><img src="https://mdbootstrap.com/img/logo/brands/aegon.png">
    </tr>
   </tbody>
</table>

<table>
  <tbody>
    <tr>
      <td>
          <a href="https://mdbootstrap.com/docs/standard/" alt="Bootstrap 5" rel="dofollow">
          		<img src="https://mdbootstrap.com/wp-content/themes/mdbootstrap4/content/en/_mdb5/standard/about/assets/mdb5-about.jpg">
          </a>
      </td>
      <td>
        <ul>
        <li><b><a href="https://mdbootstrap.com/docs/standard/">700+ UI components</a></b></li>          
         <li><b><a href="https://mdbootstrap.com/freebies/">Free templates</a></b></li>
         <li>Super simple, 1 minute installation</li>
         <li>Detailed docs & practical examples</li>
         <li>Lots of tutorials</li>
         <li><b>Plain JavaScript (but works also with jQuery)</b></li>
         <li>Huge and active community</li>
         <li><b>MIT license - free for personal & commercial use</b></li>
        </ul>
      </td>
    </tr>
   </tbody>
</table>

___

# Bootstrap 5 tutorial

**[>> Learn more about Bootstrap 5](https://mdbootstrap.com/docs/standard/)**


**[>> Bootstrap 5 Tutorial](https://mdbootstrap.com/learn/mdb-foundations/basics/introduction/)**

**[>> Subscribe to our YouTube channel with dozens of Bootstrap tutorials](https://www.youtube.com/c/Mdbootstrap)**

<table>
  <tbody>
    <tr>
      <td align="center">
         <a href="https://mdbootstrap.com/learn/mdb-foundations/basics/introduction/" alt="Bootstrap Tutorials" rel="dofollow">
          		<img src="https://mdbootstrap.com/wp-content/uploads/2020/12/learnmore-1.png">
          </a>
      </td>
      <td>
          <a href="https://mdbootstrap.com/learn/mdb-foundations/basics/introduction/#section-beginner" alt="Bootstrap 5" rel="dofollow">
          		<img src="https://mdbootstrap.com/learn/mdb-foundations/basics/introduction/assets/featured-image.png">
          </a>
      </td>
    </tr>
     <tr>
        <td align="center">
          <p align="center"><b>Start learning from Basics</b></p>
          <a href="https://mdbootstrap.com/learn/mdb-foundations/basics/introduction/" alt="Bootstrap 5" rel="dofollow">
          		<img src="https://mdbootstrap.com/wp-content/uploads/2020/12/Screenshot_26.png">
          </a>
         </td>
        <td align="center">
          <p align="center"><b>Learn Bootstrap 5 | Crash Course for Beginners in 1.5H</b></p>
          <a href="https://mdbootstrap.com/learn/mdb-foundations/basics/introduction/#section-beginner" alt="Bootstrap 5" rel="dofollow">
          		<img src="https://mdbootstrap.com/wp-content/uploads/2020/12/Screenshot_26.png">
          </a>
         </td>
      </tr>
   </tbody>
</table>

___

# Demo
#### Simplicity and ease of use are key features of MDB 5 UI Kit. You need only one minute to install and run it.

### Carousel

<p>A slideshow component for cycling through elements—images or slides of text—like a carousel.</p>

<a href="https://mdbootstrap.com/docs/standard/components/carousel/" alt="Bootstrap 5" rel="dofollow">
  <p align="center">
    <img src="https://mdbootstrap.com/img/Marketing/campaigns/demo-carousel.gif">
  </p>
</a>

### Buttons

<p>Use MDB custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.</p>

<a href="https://mdbootstrap.com/docs/standard/components/buttons/" alt="Bootstrap 5" rel="dofollow">
  <p align="center">
    <img src="https://mdbootstrap.com/img/Marketing/campaigns/demo-buttons.gif">
  </p>
</a>

<a href="https://mdbootstrap.com/docs/standard/components/buttons/" alt="Bootstrap 5" rel="dofollow">
  <p align="center">
    <img src="https://mdbootstrap.com/img/Marketing/campaigns/demo-social-buttons.png">
  </p>
</a>

<a href="https://mdbootstrap.com/docs/standard/components/buttons/" alt="Bootstrap 5" rel="dofollow">
  <p align="center">
    <img src="https://mdbootstrap.com/img/Marketing/campaigns/demo-buttons2.png">
  </p>
</a>

<a href="https://mdbootstrap.com/docs/standard/components/buttons/" alt="Bootstrap 5" rel="dofollow">
  <p align="center">
    <img src="https://mdbootstrap.com/img/Marketing/campaigns/demo-buttons-outline.gif">
  </p>
</a>


### Spinners

<p>Indicate the loading state of a component or page with MDB spinners, built entirely with HTML, CSS, and no JavaScript.</p>

<a href="https://mdbootstrap.com/docs/standard/components/spinners/" alt="Bootstrap 5" rel="dofollow">
  <p align="center">
    <img src="https://mdbootstrap.com/img/Marketing/campaigns/demo-loader.gif">
  </p>
</a>

<a href="https://mdbootstrap.com/docs/standard/components/spinners/" alt="Bootstrap 5" rel="dofollow">
  <p align="center">
    <img src="https://mdbootstrap.com/img/Marketing/campaigns/demo-color-spinners.gif">
  </p>
</a>

### Cards

<p>A card is a flexible and extensible content container. It includes options for headers and footers, a wide variety of content, contextual background colors, and powerful display options.</p>

<a href="https://mdbootstrap.com/docs/standard/components/cards/" alt="Bootstrap 5" rel="dofollow">
  <p align="center">
    <img src="https://mdbootstrap.com/img/Marketing/campaigns/demo-cards.png">
  </p>
</a>

### Validation

<p>Provide valuable, actionable feedback to your users with HTML5 form validation, via browser default behaviors or custom styles and JavaScript.</p>

<a href="https://mdbootstrap.com/docs/standard/forms/validation/" alt="Bootstrap 5" rel="dofollow">
  <p align="center">
    <img src="https://mdbootstrap.com/img/Marketing/campaigns/demo-validation.gif">
  </p>
 </a>
 <a href="https://mdbootstrap.com/docs/standard/forms/validation/" alt="Bootstrap 5" rel="dofollow">
   <p align="center">
    <img src="https://mdbootstrap.com/img/Marketing/campaigns/demo-validation2.gif">
  </p>
 </a>
 <a href="https://mdbootstrap.com/docs/standard/forms/validation/" alt="Bootstrap 5" rel="dofollow">
   <p align="center">
    <img src="https://mdbootstrap.com/img/Marketing/campaigns/demo-validation3.gif">
  </p>
</a>

### Forms

<p>Examples and usage guidelines for form control styles, layout options, and custom components for creating a wide variety of forms.</p>

 <a href="https://mdbootstrap.com/docs/standard/forms/overview/" alt="Bootstrap 5" rel="dofollow">
   <p align="center">
    <img src="https://mdbootstrap.com/img/Marketing/campaigns/demo-forms2.gif">
  </p>
 </a>
 <a href="https://mdbootstrap.com/docs/standard/forms/overview/" alt="Bootstrap 5" rel="dofollow">
   <p align="center">
    <img src="https://mdbootstrap.com/img/Marketing/campaigns/demo-forms3.gif">
  </p>
</a>


### Footer

<p>A footer is an additional navigation component. It can hold links, buttons, company info, copyrights, forms, and many other elements.</p>

<a href="https://mdbootstrap.com/docs/standard/navigation/footer/" alt="Bootstrap 5" rel="dofollow">
  <p align="center">
    <img src="https://mdbootstrap.com/img/Marketing/campaigns/demo-footer.png">
  </p>
</a>

### Modal

<p>Use MDB modal plugin to add dialogs to your site for lightboxes, user notifications, or completely custom content.</p>

<a href="https://mdbootstrap.com/docs/standard/components/modal/" alt="Bootstrap 5" rel="dofollow">
  <p align="center">
    <img src="https://mdbootstrap.com/img/Marketing/campaigns/demo-modal.gif">
  </p>
</a>

### Hover

<p>MDB hover effect appears when the user positions the computer cursor over an element without activating it. Hover effects make a website more interactive.</p>

<a href="https://mdbootstrap.com/docs/standard/content-styles/hover-effects/" alt="Bootstrap 5" rel="dofollow">
  <p align="center">
    <img src="https://mdbootstrap.com/img/Marketing/campaigns/demo-hover.gif">
  </p>
</a>

<a href="https://mdbootstrap.com/docs/standard/content-styles/hover-effects/" alt="Bootstrap 5" rel="dofollow">
  <p align="center">
    <img src="https://mdbootstrap.com/img/Marketing/campaigns/demo-hover2.png">
  </p>
</a>

### Tabs 

<p>Tabs are quasi-navigation components which can highly improve website clarity and increase user experience.</p>

<a href="https://mdbootstrap.com/docs/standard/navigation/tabs/" alt="Bootstrap 5" rel="dofollow">
  <p align="center">
    <img src="https://mdbootstrap.com/img/Marketing/campaigns/demo-tabs.gif">
  </p>
</a>

<a href="https://mdbootstrap.com/docs/standard/navigation/tabs/" alt="Bootstrap 5" rel="dofollow">
  <p align="center">
    <img src="https://mdbootstrap.com/img/Marketing/campaigns/demo-tabs2.gif">
  </p>
</a>

### Notes

<p>Notes are small components very helpful in inserting an additional piece of information.</p>

<a href="https://mdbootstrap.com/docs/standard/content-styles/typography/" alt="Bootstrap 5" rel="dofollow">
  <p align="center">
    <img src="https://mdbootstrap.com/img/Marketing/campaigns/demo-alerts.png">
  </p>
</a>

### ScrollSpy

<p>Automatically update Bootstrap navigation or list group components based on scroll position to indicate which link is currently active in the viewport.</p>

<a href="https://mdbootstrap.com/docs/standard/navigation/scrollspy/" alt="Bootstrap 5" rel="dofollow">
  <p align="center">
    <img src="https://mdbootstrap.com/img/Marketing/campaigns/demo-scrollspy.gif">
  </p>
</a>

<p>Also check out our standalone project <a href="https://perfectscrollbar.com/">Perfect Scrollbar</a> which is included in MDB.</p>

-----------------------------

# Free Bootstrap 5 templates

<p>All of the templates were created with MDB 5 UI KIT (Material Design for Bootstrap 5).</p>

<p>MDB is a free (MIT license) library, that provides extra features and significantly extends Bootstrap's capabilities.</p>

<table>
  <tbody>
    <tr>
      <td>
        <a href="https://mdbgo.io/ascensus/MDB5-templates/ecommerce.html" alt="Bootstrap 5" rel="dofollow">
          <img src="https://mdbootstrap.com/wp-content/themes/mdbootstrap4/content/en/_mdb5/standard/general/templates/assets/ecommerce.jpg">
        </a>
        <p align="center"><b>Ecommerce</b></p>
      <td>
        <a href="https://mdbgo.io/ascensus/MDB5-templates/full-carousel-cover.html" alt="Bootstrap 5" rel="dofollow">
          <img src="https://mdbootstrap.com/wp-content/themes/mdbootstrap4/content/en/_mdb5/standard/general/templates/assets/full-carousel-cover.jpg">
        </a>
        <p align="center"><b>Carousel Full Cover</b></p>
    </tr>
   </tbody>


  <tbody>
    <tr>
      <td>
        <a href="https://mdbgo.io/ascensus/MDB5-templates/full-image-cover.html" alt="Bootstrap 5" rel="dofollow">
          <img src="https://mdbootstrap.com/wp-content/themes/mdbootstrap4/content/en/_mdb5/standard/general/templates/assets/full-image-cover.jpg">
        </a>
        <p align="center"><b>Image Full Cover</b></p>
      <td>
        <a href="https://mdbgo.io/ascensus/MDB5-templates/portfolio.html" alt="Bootstrap 5" rel="dofollow">
          <img src="https://mdbootstrap.com/wp-content/themes/mdbootstrap4/content/en/_mdb5/standard/general/templates/assets/portfolio.jpg">
        </a>
        <p align="center"><b>Portfolio</b></p>
    </tr>
   </tbody>


  <tbody>
    <tr>
      <td>
        <a href="https://mdbgo.io/ascensus/MDB5-templates/post.html" alt="Bootstrap 5" rel="dofollow">
          <img src="https://mdbootstrap.com/wp-content/themes/mdbootstrap4/content/en/_mdb5/standard/general/templates/assets/post.jpg">
        </a>
        <p align="center"><b>Post</b></p>
      <td>
        <a href="https://mdbgo.io/ascensus/MDB5-templates/pricing.html" alt="Bootstrap 5" rel="dofollow">
          <img src="https://mdbootstrap.com/wp-content/themes/mdbootstrap4/content/en/_mdb5/standard/general/templates/assets/pricing.jpg">
        </a>
        <p align="center"><b>Pricing</b></p>
    </tr>
   </tbody>


  <tbody>
    <tr>
      <td>
        <a href="https://mdbgo.io/ascensus/MDB5-templates/full-video-cover.html" alt="Bootstrap 5" rel="dofollow">
          <img src="https://mdbootstrap.com/wp-content/themes/mdbootstrap4/content/en/_mdb5/standard/general/templates/assets/full-video-cover.jpg">
        </a>
        <p align="center"><b>Video Full Cover</b></p>
      <td>
        <a href="https://mdbgo.io/ascensus/MDB5-templates/half-carousel-cover.html" alt="Bootstrap 5" rel="dofollow">
          <img src="https://mdbootstrap.com/wp-content/themes/mdbootstrap4/content/en/_mdb5/standard/general/templates/assets/half-carousel-cover.jpg">
        </a>
        <p align="center"><b>Carousel Half Cover</b></p>
    </tr>
   </tbody>

  <tbody>
    <tr>
      <td>
        <a href="https://mdbgo.io/ascensus/MDB5-templates/half-video-cover.html" alt="Bootstrap 5" rel="dofollow">
          <img src="https://mdbootstrap.com/wp-content/themes/mdbootstrap4/content/en/_mdb5/standard/general/templates/assets/half-video-cover.jpg">
        </a>
        <p align="center"><b>Video Half Cover</b></p>
      <td>
        <a href="https://mdbgo.io/ascensus/MDB5-templates/login.html" alt="Bootstrap 5" rel="dofollow">
          <img src="https://mdbootstrap.com/wp-content/themes/mdbootstrap4/content/en/_mdb5/standard/general/templates/assets/login.jpg">
        </a>
        <p align="center"><b>Login</b></p>
    </tr>
   </tbody>

  <tbody>
    <tr>
      <td>
        <a href="https://mdbgo.io/ascensus/MDB5-templates/magazine.html" alt="Bootstrap 5" rel="dofollow">
          <img src="https://mdbootstrap.com/wp-content/themes/mdbootstrap4/content/en/_mdb5/standard/general/templates/assets/magazine.jpg">
        </a>
        <p align="center"><b>Magazine</b></p>
      <td>
        <a href="https://mdbgo.io/ascensus/MDB5-templates/checkout.html" alt="Bootstrap 5" rel="dofollow">
          <img src="https://mdbootstrap.com/wp-content/themes/mdbootstrap4/content/en/_mdb5/standard/general/templates/assets/checkout.jpg">
        </a>
        <p align="center"><b>Checkout</b></p>
    </tr>
   </tbody>

  <tbody>
    <tr>
      <td>
        <a href="https://mdbgo.io/ascensus/MDB5-templates/blog.html" alt="Bootstrap 5" rel="dofollow">
          <img src="https://mdbootstrap.com/wp-content/themes/mdbootstrap4/content/en/_mdb5/standard/general/templates/assets/blog.jpg">          
        </a>
          <p align="center"><b>Blog</b></p>
      <td>
        <a href="https://mdbgo.io/ascensus/MDB5-templates/product.html" alt="Bootstrap 5" rel="dofollow">
          <img src="https://mdbootstrap.com/wp-content/themes/mdbootstrap4/content/en/_mdb5/standard/general/templates/assets/product.jpg">
        </a>
        <p align="center"><b>Product</b></p>
    </tr>
   </tbody>

  <tbody>
    <tr>
      <td>
        <a href="https://mdbgo.io/ascensus/MDB5-templates/category.html" alt="Bootstrap 5" rel="dofollow">
          <img src="https://mdbootstrap.com/wp-content/themes/mdbootstrap4/content/en/_mdb5/standard/general/templates/assets/category.jpg">          
        </a>
          <p align="center"><b>Category</b></p>
      <td>
        <a href="https://mdbgo.io/ascensus/MDB5-templates/landing-page.html" alt="Bootstrap 5" rel="dofollow">
          <img src="https://mdbootstrap.com/wp-content/themes/mdbootstrap4/content/en/_mdb5/standard/general/templates/assets/landing-page.jpg">
        </a>
        <p align="center"><b>Landing Page</b></p>
    </tr>
   </tbody>

  <tbody>
    <tr>
      <td>
        <a href="https://mdbgo.io/ascensus/MDB5-templates/admin.html" alt="Bootstrap 5" rel="dofollow">
          <img src="https://mdbootstrap.com/wp-content/themes/mdbootstrap4/content/en/_mdb5/standard/general/templates/assets/admin.jpg">
        </a>
        <p align="center"><b>Admin</b></p>
      <td>
        <a href="https://mdbgo.io/ascensus/MDB5-templates/coming-soon.html" alt="Bootstrap 5" rel="dofollow">
          <img src="https://mdbootstrap.com/wp-content/themes/mdbootstrap4/content/en/_mdb5/standard/general/templates/assets/coming-soon.jpg">
        </a>
        <p align="center"><b>Coming Soon</b></p>
    </tr>
   </tbody>

  <tbody>
    <tr>
      <td>
        <a href="https://mdbgo.io/ascensus/MDB5-templates/classic-jumbotron.html" alt="Bootstrap 5" rel="dofollow">
          <img src="https://mdbootstrap.com/wp-content/themes/mdbootstrap4/content/en/_mdb5/standard/general/templates/assets/classic-jumbotron.jpg">
        </a>
        <p align="center"><b>Classic Jumbotron</b></p>
      <td>
        <a href="https://mdbgo.io/ascensus/MDB5-templates/one-column.html" alt="Bootstrap 5" rel="dofollow">
          <img src="https://mdbootstrap.com/wp-content/themes/mdbootstrap4/content/en/_mdb5/standard/general/templates/assets/one-column.jpg">
        </a>
        <p align="center"><b>One Column</b></p>
    </tr>
   </tbody>

  <tbody>
    <tr>
      <td>
        <a href="https://mdbgo.io/ascensus/MDB5-templates/two-columns.html" alt="Bootstrap 5" rel="dofollow">
          <img src="https://mdbootstrap.com/wp-content/themes/mdbootstrap4/content/en/_mdb5/standard/general/templates/assets/two-columns.jpg">
        </a>
        <p align="center"><b>Two Columns</b></p>
      <td>
        <a href="https://mdbgo.io/ascensus/MDB5-templates/three-columns.html" alt="Bootstrap 5" rel="dofollow">
          <img src="https://mdbootstrap.com/wp-content/themes/mdbootstrap4/content/en/_mdb5/standard/general/templates/assets/three-columns.jpg">
        </a>
        <p align="center"><b>Three Columns</b></p>
  </tr>
   </tbody>
</table>

___

# Extended documentation

<ul>
<li><a href="https://mdbootstrap.com/docs/standard/extended/bootstrap-address-form/">Bootstrap Address Form</a></li>
<li><a href="https://mdbootstrap.com/docs/standard/extended/avatar/">Bootstrap Avatar</a></li>
<li><a href="https://mdbootstrap.com/docs/standard/extended/back-to-top/">Bootstrap Back To Top Button</a></li>
<li><a href="https://mdbootstrap.com/docs/standard/extended/carousel-with-thumbnails/">Bootstrap Carousel Slider with Thumbnails</a></li>
<li><a href="https://mdbootstrap.com/docs/standard/extended/chat/">Bootstrap Chat</a></li>
<li><a href="https://mdbootstrap.com/docs/standard/extended/code/">Bootstrap Code Blocks</a></li>
<li><a href="https://mdbootstrap.com/docs/standard/extended/comments/">Bootstrap Comments</a></li>
<li><a href="https://mdbootstrap.com/docs/standard/extended/bootstrap-comparison-table/">Bootstrap Comparison Table</a></li>
<li><a href="https://mdbootstrap.com/docs/standard/extended/credit-card/">Bootstrap Credit Card Form</a></li>
<li><a href="https://mdbootstrap.com/docs/standard/extended/drawer/">Bootstrap Drawer</a></li>
<li><a href="https://mdbootstrap.com/docs/standard/extended/dropdown-multilevel/">Bootstrap Nested Dropdown</a></li>
<li><a href="https://mdbootstrap.com/docs/standard/extended/faq/">Bootstrap FAQ component / section</a></li>
<li><a href="https://mdbootstrap.com/docs/standard/extended/gallery/">Bootstrap Gallery</a></li>
<li><a href="https://mdbootstrap.com/docs/standard/extended/hamburger-menu/">Bootstrap Hamburger Menu</a></li>
<li><a href="https://mdbootstrap.com/docs/standard/extended/bootstrap-invoice/">Bootstrap Invoice</a></li>
<li><a href="https://mdbootstrap.com/docs/standard/extended/jumbotron/">Bootstrap Jumbotron</a></li>
<li><a href="https://mdbootstrap.com/docs/standard/extended/login/">Bootstrap Login Form</a></li>
<li><a href="https://mdbootstrap.com/docs/standard/extended/maps/">Bootstrap Maps</a></li>
<li><a href="https://mdbootstrap.com/docs/standard/extended/media-object/">Bootstrap Media Object</a></li>
<li><a href="https://mdbootstrap.com/docs/standard/extended/mega-menu/">Bootstrap Mega Menu</a></li> 
<li><a href="https://mdbootstrap.com/docs/standard/extended/multiselect/">Bootstrap Multiselect</a></li> 
<li><a href="https://mdbootstrap.com/docs/standard/extended/news-feed/">Bootstrap News Feed</a></li> 
<li><a href="https://mdbootstrap.com/docs/standard/extended/offcanvas/">Bootstrap Offcanvas</a></li> 
<li><a href="https://mdbootstrap.com/docs/standard/extended/order-details/">Bootstrap Order Details</a></li> 
<li><a href="https://mdbootstrap.com/docs/standard/extended/page-transitions/">Bootstrap Page Transitions</a></li> 
<li><a href="https://mdbootstrap.com/docs/standard/extended/payment-forms/">Bootstrap Payment Forms</a></li> 
<li><a href="https://mdbootstrap.com/docs/standard/extended/product-cards/">Bootstrap Product Cards</a></li> 
<li><a href="https://mdbootstrap.com/docs/standard/extended/profiles/">Bootstrap Profiles</a></li>  
<li><a href="https://mdbootstrap.com/docs/standard/extended/quotes/">Bootstrap Quotes</a></li> 
<li><a href="https://mdbootstrap.com/docs/standard/extended/registration/">Bootstrap Registration Form</a></li> 
<li><a href="https://mdbootstrap.com/docs/standard/extended/search-expanding/">Bootstrap Expanding Search Bar</a></li> 
<li><a href="https://mdbootstrap.com/docs/standard/extended/shopping-carts/">Bootstrap Shopping Carts</a></li> 
<li><a href="https://mdbootstrap.com/docs/standard/extended/side-navbar/">Bootstrap Side Navbar</a></li>  
<li><a href="https://mdbootstrap.com/docs/standard/extended/sidebar/">Bootstrap Sidebar</a></li>  
<li><a href="https://mdbootstrap.com/docs/standard/extended/social-media/">Bootstrap Social Media Icons & Buttons</a></li>  
<li><a href="https://mdbootstrap.com/docs/standard/extended/square-buttons/">Bootstrap Square Buttons</a></li>  
<li><a href="https://mdbootstrap.com/docs/standard/extended/bootstrap-survey-form/">Bootstrap Survey Form</a></li>  
<li><a href="https://mdbootstrap.com/docs/standard/extended/testimonial-slider/">Bootstrap Testimonial Slider</a></li>  
<li><a href="https://mdbootstrap.com/docs/standard/extended/testimonials/">Bootstrap Testimonials</a></li>  
<li><a href="https://mdbootstrap.com/docs/standard/extended/textarea/">Bootstrap Textarea</a></li>  
<li><a href="https://mdbootstrap.com/docs/standard/extended/timeline/">Bootstrap Timeline</a></li>  
<li><a href="https://mdbootstrap.com/docs/standard/extended/to-do-list/">Bootstrap To Do List</a></li>  
<li><a href="https://mdbootstrap.com/docs/standard/extended/video-carousel/">Bootstrap Video Carousel / Gallery</a></li>  
<li><a href="https://mdbootstrap.com/docs/standard/extended/weather/">Bootstrap Weather</a></li>  
<li><a href="https://mdbootstrap.com/docs/standard/extended/dark-mode/">Bootstrap Dark Mode</a></li> 
<li><a href="https://mdbootstrap.com/docs/standard/extended/padding/">Bootstrap Padding</a></li> 
<li><a href="https://mdbootstrap.com/docs/standard/extended/modal-size/">Bootstrap Modal Size</a></li> 
<li><a href="https://mdbootstrap.com/docs/standard/extended/modal-methods/">Bootstrap Modal Show, Close, Hide & Toggle</a></li> 
<li><a href="https://mdbootstrap.com/docs/standard/extended/modal-backdrop/">Bootstrap Backdrop</a></li> 
<li><a href="https://mdbootstrap.com/docs/standard/extended/card-deck/">Bootstrap Card Deck</a></li> 
<li><a href="https://mdbootstrap.com/docs/standard/extended/table-filter/">Bootstrap Table Filter</a></li> 
<li><a href="https://mdbootstrap.com/docs/standard/extended/slider/">Bootstrap Slider</a></li> 
<li><a href="https://mdbootstrap.com/docs/standard/extended/logo/">Bootstrap Logo</a></li> 
<li><a href="https://mdbootstrap.com/docs/standard/extended/popup/">Bootstrap Popup</a></li> 
<li><a href="https://mdbootstrap.com/docs/standard/extended/max-width/">Bootstrap Max Width</a></li>
<li><a href="https://mdbootstrap.com/docs/standard/extended/hero/">Bootstrap Hero</a></li>
<li><a href="https://mdbootstrap.com/docs/standard/extended/select-dropdown/">Bootstrap Select Dropdown</a></li>
<li><a href="https://mdbootstrap.com/docs/standard/extended/labels/">Bootstrap Labels</a></li>
<li><a href="https://mdbootstrap.com/docs/standard/extended/dialog/">Bootstrap Dialog</a></li>
<li><a href="https://mdbootstrap.com/docs/standard/extended/screen-sizes/">Bootstrap Screen Sizes</a></li>
<li><a href="https://mdbootstrap.com/docs/standard/extended/dropdown-button/">Bootstrap Dropdown Button</a></li>
<li><a href="https://mdbootstrap.com/docs/standard/extended/side-menu/">Bootstrap Side Menu</a></li>
<li><a href="https://mdbootstrap.com/docs/standard/extended/table-fixed-header/">Bootstrap Table Fixed Header</a></li>
<li><a href="https://mdbootstrap.com/docs/standard/extended/border-radius/">Bootstrap Border Radius</a></li>
<li><a href="https://mdbootstrap.com/docs/standard/extended/popover-on-hover/">Bootstrap Popover On Hover</a></li>
<li><a href="https://mdbootstrap.com/docs/standard/extended/overlay/">Bootstrap Overlay</a></li>
<li><a href="https://mdbootstrap.com/docs/standard/extended/height/">Bootstrap Height</a></li>
<li><a href="https://mdbootstrap.com/docs/standard/extended/widgets/">Bootstrap Widgets</a></li>

</ul>


================================================
FILE: README.txt
================================================
MDB5
Version: FREE 9.3.0

Documentation:
https://mdbootstrap.com/docs/standard/

Contact:
contact@mdbootstrap.com

================================================
FILE: index.html
================================================
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
    <meta http-equiv="x-ua-compatible" content="ie=edge" />
    <title>Material Design for Bootstrap</title>
    <!-- MDB icon -->
    <link rel="icon" href="img/mdb-favicon.ico" type="image/x-icon" />
    <!-- Font Awesome -->
    <link
      rel="stylesheet"
      href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css"
    />
    <!-- Google Fonts Roboto -->
    <link
      rel="stylesheet"
      href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700;900&display=swap"
    />
    <!-- MDB -->
    <link rel="stylesheet" href="css/mdb.min.css" />
  </head>
  <body>
    <!-- Start your project here-->
    <div class="container">
      <div class="d-flex justify-content-center align-items-center" style="height: 100vh">
        <div class="text-center">
          <img
            class="mb-4"
            src="https://mdbootstrap.com/img/logo/mdb-transparent-250px.png"
            style="width: 250px; height: 90px"
          />
          <h5 class="mb-3">Thank you for using our product. We're glad you're with us.</h5>
          <p class="mb-3">MDB Team</p>
          <a
            class="btn btn-primary btn-lg"
            data-mdb-ripple-init
            href="https://mdbootstrap.com/docs/standard/getting-started/"
            target="_blank"
            role="button"
            >Start MDB tutorial</a
          >
        </div>
      </div>
    </div>
    <!-- End your project here-->

    <!-- MDB -->
    <script type="text/javascript" src="js/mdb.umd.min.js"></script>
    <!-- Custom scripts -->
    <script type="text/javascript"></script>
  </body>
</html>


================================================
FILE: package.json
================================================
{
  "name": "mdb-ui-kit",
  "version": "9.3.0",
  "type": "module",
  "main": "./js/mdb.umd.min.js",
  "module": "./js/mdb.es.min.js",
  "homepage": "https://mdbootstrap.com/docs/standard/",
  "repository": "https://github.com/mdbootstrap/mdb-ui-kit.git",
  "author": "MDBootstrap",
  "license": "SEE LICENSE IN <License.txt>"
}

================================================
FILE: src/js/autoinit/callbacks/free.js
================================================
import EventHandler from '../../mdb/dom/event-handler';
import SelectorEngine from '../../mdb/dom/selector-engine';
import Manipulator from '../../mdb/dom/manipulator';
import {
  isDisabled,
  getElementFromSelector,
  isVisible,
  getSelectorFromElement,
} from '../../mdb/util';
import { enableDismissTrigger } from '../../bootstrap/mdb-prefix/util/component-functions';

const callbackInitState = new Map();

const alertCallback = (component, initSelector) => {
  const Alert = component;

  if (!callbackInitState.has(component.name)) {
    enableDismissTrigger(Alert);
    callbackInitState.set(component.name, true);
  }

  // MDB init
  SelectorEngine.find(initSelector).forEach((element) => {
    return Alert.getOrCreateInstance(element);
  });
};

const buttonCallback = (component, initSelector) => {
  const Button = component;
  const EVENT_CLICK_DATA_API = `click.bs.${component.name}.data-api`;

  if (!callbackInitState.has(component.name)) {
    // BS init
    EventHandler.on(document, EVENT_CLICK_DATA_API, initSelector, (event) => {
      event.preventDefault();

      const button = event.target.closest(initSelector);
      const data = Button.getOrCreateInstance(button);

      data.toggle();
    });
    callbackInitState.set(component.name, true);
  }

  // MDB init
  SelectorEngine.find(initSelector).forEach((element) => {
    return Button.getOrCreateInstance(element);
  });
};

const carouselCallback = (component, initSelector) => {
  if (callbackInitState.has(component.name)) {
    return;
  }

  const EVENT_CLICK_DATA_API = `click.bs.${component.name}.data-api`;
  const SELECTOR_DATA_SLIDE = '[data-mdb-slide], [data-mdb-slide-to]';
  const CLASS_NAME_CAROUSEL = 'carousel';
  const Carousel = component;
  const EVENT_LOAD_DATA_API = `load.bs.${component.name}.data-api`;
  const SELECTOR_DATA_RIDE = initSelector;

  EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {
    const target = getElementFromSelector(this);

    if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {
      return;
    }

    event.preventDefault();

    const carousel = Carousel.getOrCreateInstance(target);
    const slideIndex = this.getAttribute('data-mdb-slide-to');

    if (slideIndex) {
      carousel.to(slideIndex);
      carousel._maybeEnableCycle();
      return;
    }

    if (Manipulator.getDataAttribute(this, 'slide') === 'next') {
      carousel.next();
      carousel._maybeEnableCycle();
      return;
    }

    carousel.prev();
    carousel._maybeEnableCycle();
  });

  EventHandler.on(window, EVENT_LOAD_DATA_API, () => {
    const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);

    carousels.forEach((carousel) => {
      Carousel.getOrCreateInstance(carousel);
    });
  });

  callbackInitState.set(component.name, true);
};

const collapseCallback = (component, initSelector) => {
  const EVENT_CLICK_DATA_API = `click.bs.${component.name}.data-api`;
  const SELECTOR_DATA_TOGGLE = initSelector;
  const Collapse = component;

  if (!callbackInitState.has(component.name)) {
    EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
      // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
      if (
        event.target.tagName === 'A' ||
        (event.delegateTarget && event.delegateTarget.tagName === 'A')
      ) {
        event.preventDefault();
      }

      const selector = getSelectorFromElement(this);
      const selectorElements = SelectorEngine.find(selector);

      selectorElements.forEach((element) => {
        Collapse.getOrCreateInstance(element, { toggle: false }).toggle();
      });
    });

    callbackInitState.set(component.name, true);
  }

  SelectorEngine.find(SELECTOR_DATA_TOGGLE).forEach((el) => {
    const selector = getSelectorFromElement(el);
    const selectorElements = SelectorEngine.find(selector);

    selectorElements.forEach((element) => {
      Collapse.getOrCreateInstance(element, { toggle: false });
    });
  });
};

const dropdownCallback = (component, initSelector) => {
  const EVENT_CLICK_DATA_API = `click.bs.${component.name}.data-api`;
  const EVENT_KEYDOWN_DATA_API = `keydown.bs.${component.name}.data-api`;
  const EVENT_KEYUP_DATA_API = `keyup.bs.${component.name}.data-api`;
  const SELECTOR_MENU = '.dropdown-menu';
  const SELECTOR_DATA_TOGGLE = `[data-mdb-${component.NAME}-initialized]`;
  const Dropdown = component;

  if (!callbackInitState.has(component.name)) {
    EventHandler.on(
      document,
      EVENT_KEYDOWN_DATA_API,
      SELECTOR_DATA_TOGGLE,
      Dropdown.dataApiKeydownHandler
    );
    EventHandler.on(
      document,
      EVENT_KEYDOWN_DATA_API,
      SELECTOR_MENU,
      Dropdown.dataApiKeydownHandler
    );
    EventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus);
    EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);
    EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
      event.preventDefault();
      Dropdown.getOrCreateInstance(this).toggle();
    });
  }

  callbackInitState.set(component.name, true);

  SelectorEngine.find(initSelector).forEach((el) => {
    Dropdown.getOrCreateInstance(el);
  });
};

const inputCallback = (component, initSelector) => {
  const SELECTOR_DATA_INIT = initSelector;
  const SELECTOR_OUTLINE_INPUT = `${SELECTOR_DATA_INIT} input`;
  const SELECTOR_OUTLINE_TEXTAREA = `${SELECTOR_DATA_INIT} textarea`;
  const Input = component;

  if (!callbackInitState.has(component.name)) {
    EventHandler.on(document, 'focus', SELECTOR_OUTLINE_INPUT, Input.activate(new Input()));
    EventHandler.on(document, 'input', SELECTOR_OUTLINE_INPUT, Input.activate(new Input()));
    EventHandler.on(document, 'blur', SELECTOR_OUTLINE_INPUT, Input.deactivate(new Input()));

    EventHandler.on(document, 'focus', SELECTOR_OUTLINE_TEXTAREA, Input.activate(new Input()));
    EventHandler.on(document, 'input', SELECTOR_OUTLINE_TEXTAREA, Input.activate(new Input()));
    EventHandler.on(document, 'blur', SELECTOR_OUTLINE_TEXTAREA, Input.deactivate(new Input()));

    EventHandler.on(window, 'shown.bs.modal', (e) => {
      SelectorEngine.find(SELECTOR_OUTLINE_INPUT, e.target).forEach((element) => {
        const instance = Input.getInstance(element.parentNode);
        if (!instance) {
          return;
        }
        instance.update();
      });
      SelectorEngine.find(SELECTOR_OUTLINE_TEXTAREA, e.target).forEach((element) => {
        const instance = Input.getInstance(element.parentNode);
        if (!instance) {
          return;
        }
        instance.update();
      });
    });

    EventHandler.on(window, 'shown.bs.dropdown', (e) => {
      const target = e.target.parentNode.querySelector('.dropdown-menu');
      if (target) {
        SelectorEngine.find(SELECTOR_OUTLINE_INPUT, target).forEach((element) => {
          const instance = Input.getInstance(element.parentNode);
          if (!instance) {
            return;
          }
          instance.update();
        });
        SelectorEngine.find(SELECTOR_OUTLINE_TEXTAREA, target).forEach((element) => {
          const instance = Input.getInstance(element.parentNode);
          if (!instance) {
            return;
          }
          instance.update();
        });
      }
    });

    EventHandler.on(window, 'shown.bs.tab', (e) => {
      let targetId;

      if (e.target.href) {
        targetId = e.target.href.split('#')[1];
      } else {
        targetId = Manipulator.getDataAttribute(e.target, 'target').split('#')[1];
      }

      const target = SelectorEngine.findOne(`#${targetId}`);
      SelectorEngine.find(SELECTOR_OUTLINE_INPUT, target).forEach((element) => {
        const instance = Input.getInstance(element.parentNode);
        if (!instance) {
          return;
        }
        instance.update();
      });
      SelectorEngine.find(SELECTOR_OUTLINE_TEXTAREA, target).forEach((element) => {
        const instance = Input.getInstance(element.parentNode);
        if (!instance) {
          return;
        }
        instance.update();
      });
    });

    // form reset handler
    EventHandler.on(window, 'reset', (e) => {
      SelectorEngine.find(SELECTOR_OUTLINE_INPUT, e.target).forEach((element) => {
        const instance = Input.getInstance(element.parentNode);
        if (!instance) {
          return;
        }
        instance.forceInactive();
      });
      SelectorEngine.find(SELECTOR_OUTLINE_TEXTAREA, e.target).forEach((element) => {
        const instance = Input.getInstance(element.parentNode);
        if (!instance) {
          return;
        }
        instance.forceInactive();
      });
    });

    // auto-fill
    EventHandler.on(window, 'onautocomplete', (e) => {
      const instance = Input.getInstance(e.target.parentNode);
      if (!instance || !e.cancelable) {
        return;
      }
      instance.forceActive();
    });

    callbackInitState.set(component.name, true);
  }

  // auto-init
  SelectorEngine.find(SELECTOR_DATA_INIT).map((element) => Input.getOrCreateInstance(element));
};

const modalCallback = (component, initSelector) => {
  const EVENT_CLICK_DATA_API = `click.bs.${component.name}.data-api`;
  const OPEN_SELECTOR = '.modal.show';
  const Modal = component;
  const EVENT_SHOW = `show.bs.${component.name}`;
  const EVENT_HIDDEN = `hidden.bs.${component.name}`;

  if (!callbackInitState.has(component.name)) {
    EventHandler.on(document, EVENT_CLICK_DATA_API, initSelector, function (event) {
      const target = getElementFromSelector(this);

      if (['A', 'AREA'].includes(this.tagName)) {
        event.preventDefault();
      }

      EventHandler.one(target, EVENT_SHOW, (showEvent) => {
        if (showEvent.defaultPrevented) {
          // only register focus restorer if modal will actually get shown
          return;
        }

        EventHandler.one(target, EVENT_HIDDEN, () => {
          if (isVisible(this)) {
            this.focus();
          }
        });
      });

      // avoid conflict when clicking modal toggler while another one is open
      const alreadyOpenedModals = SelectorEngine.find(OPEN_SELECTOR);
      alreadyOpenedModals.forEach((modal) => {
        if (!modal.classList.contains('modal-non-invasive-show')) {
          Modal.getInstance(modal).hide();
        }
      });

      const data = Modal.getOrCreateInstance(target);

      data.toggle(this);
    });

    enableDismissTrigger(Modal);
    callbackInitState.set(component.name, true);
  }

  SelectorEngine.find(initSelector).forEach((el) => {
    const selector = getSelectorFromElement(el);
    const selectorElement = SelectorEngine.findOne(selector);

    Modal.getOrCreateInstance(selectorElement);
  });
};

const popoverCallback = (component, initSelector) => {
  const Popover = component;
  const SELECTOR_DATA_TOGGLE = initSelector;

  SelectorEngine.find(SELECTOR_DATA_TOGGLE).forEach((el) => {
    Popover.getOrCreateInstance(el);
  });
};

const offcanvasCallback = (component, initSelector) => {
  if (callbackInitState.has(component.name)) {
    return;
  }

  const EVENT_CLICK_DATA_API = `click.bs.${component.name}.data-api`;
  const OPEN_SELECTOR = '.offcanvas.show';
  const Offcanvas = component;
  const EVENT_HIDDEN = `hidden.bs.${component.name}`;
  const EVENT_LOAD_DATA_API = `load.bs.${component.name}.data-api`;
  const EVENT_RESIZE = `resize.bs.${component.name}`;

  EventHandler.on(document, EVENT_CLICK_DATA_API, initSelector, function (event) {
    const target = getElementFromSelector(this);

    if (['A', 'AREA'].includes(this.tagName)) {
      event.preventDefault();
    }

    if (isDisabled(this)) {
      return;
    }

    EventHandler.one(target, EVENT_HIDDEN, () => {
      // focus on trigger when it is closed
      if (isVisible(this)) {
        this.focus();
      }
    });

    // avoid conflict when clicking a toggler of an offcanvas, while another is open
    const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);
    if (alreadyOpen && alreadyOpen !== target) {
      Offcanvas.getInstance(alreadyOpen).hide();
    }

    const data = Offcanvas.getOrCreateInstance(target);
    data.toggle(this);
  });

  EventHandler.on(window, EVENT_LOAD_DATA_API, () => {
    SelectorEngine.find(OPEN_SELECTOR).forEach((selector) => {
      Offcanvas.getOrCreateInstance(selector).show();
    });
  });

  EventHandler.on(window, EVENT_RESIZE, () => {
    SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]').forEach((element) => {
      if (getComputedStyle(element).position !== 'fixed') {
        Offcanvas.getOrCreateInstance(element).hide();
      }
    });
  });

  enableDismissTrigger(Offcanvas);
  callbackInitState.set(component.name, true);
};

const scrollspyCallback = (component, initSelector) => {
  if (callbackInitState.has(component.name)) {
    return;
  }

  const EVENT_LOAD_DATA_API = `load.bs.${component.name}.data-api`;
  const ScrollSpy = component;

  EventHandler.on(window, EVENT_LOAD_DATA_API, () => {
    SelectorEngine.find(initSelector).forEach((el) => {
      ScrollSpy.getOrCreateInstance(el);
    });
  });

  callbackInitState.set(component.name, true);
};

const tabCallback = (component, initSelector) => {
  const EVENT_LOAD_DATA_API = `load.bs.${component.name}.data-api`;
  const EVENT_CLICK_DATA_API = `click.bs.${component.name}.data-api`;
  const CLASS_NAME_ACTIVE = 'active';
  const SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-mdb-tab-init], .${CLASS_NAME_ACTIVE}[data-mdb-pill-init], .${CLASS_NAME_ACTIVE}[data-mdb-toggle="list"]`;
  const Tab = component;

  if (!callbackInitState.has(component.name)) {
    EventHandler.on(document, EVENT_CLICK_DATA_API, initSelector, function (event) {
      if (['A', 'AREA'].includes(this.tagName)) {
        event.preventDefault();
      }

      if (isDisabled(this)) {
        return;
      }

      Tab.getOrCreateInstance(this).show();
    });

    EventHandler.on(window, EVENT_LOAD_DATA_API, () => {
      SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE).forEach((element) => {
        Tab.getOrCreateInstance(element);
      });
    });

    callbackInitState.set(component.name, true);
  }
};

const toastCallback = (component, initSelector) => {
  const Toast = component;

  if (!callbackInitState.has(component.name)) {
    enableDismissTrigger(Toast);
    callbackInitState.set(component.name, true);
  }

  // MDB init
  SelectorEngine.find(initSelector).forEach((element) => {
    return Toast.getOrCreateInstance(element);
  });
};

const rippleCallback = (component, initSelector) => {
  const Ripple = component;

  if (!callbackInitState.has(component.name)) {
    EventHandler.one(document, 'mousedown', initSelector, Ripple.autoInitial(new Ripple()));
    callbackInitState.set(component.name, true);
  }
};

export {
  alertCallback,
  buttonCallback,
  carouselCallback,
  collapseCallback,
  dropdownCallback,
  inputCallback,
  modalCallback,
  offcanvasCallback,
  tabCallback,
  toastCallback,
  popoverCallback,
  rippleCallback,
  scrollspyCallback,
};


================================================
FILE: src/js/autoinit/index.free.js
================================================
import defaultInitSelectors from './initSelectors/free';
import { InitMDB } from './init';

const initMDBInstance = new InitMDB(defaultInitSelectors);
const initMDB = initMDBInstance.initMDB;

export default initMDB;


================================================
FILE: src/js/autoinit/init.js
================================================
import SelectorEngine from '../mdb/dom/selector-engine';
import { defineJQueryPlugin } from '../mdb/util/index';

const mapComponentsData = (() => {
  const componentsData = [];
  return {
    set(componentName) {
      componentsData.push(componentName);
    },
    get(componentName) {
      return componentsData.includes(componentName);
    },
  };
})();

export const InitializedComponents = {
  set(componentName) {
    mapComponentsData.set(componentName);
  },
  get(componentName) {
    return mapComponentsData.get(componentName);
  },
};

const isInitialized = (componentName) => {
  return InitializedComponents.get(componentName);
};

export const bindCallbackEventsIfNeeded = (component) => {
  if (!isInitialized(component.NAME)) {
    const manualInit = true;
    initComponent(component, manualInit);
  }
};

const initComponent = (component, manualInit = false) => {
  if (!component || InitializedComponents.get(component.NAME)) {
    return;
  }

  if (!manualInit) {
    InitializedComponents.set(component.NAME);
  }

  const thisComponent = _defaultInitSelectors[component.NAME] || null;
  const isToggler = thisComponent?.isToggler || false;

  defineJQueryPlugin(component);
  if (thisComponent?.advanced) {
    thisComponent.advanced(component, thisComponent?.selector);
    return;
  }

  if (isToggler) {
    thisComponent.callback(component, thisComponent?.selector);

    return;
  }

  if (manualInit) {
    return;
  }

  SelectorEngine.find(thisComponent?.selector).forEach((element) => {
    let instance = component.getInstance(element);
    if (!instance) {
      instance = new component(element); // eslint-disable-line
      if (thisComponent?.onInit) {
        instance[thisComponent.onInit]();
      }
    }
  });
};

let _defaultInitSelectors;
export class InitMDB {
  constructor(defaultInitSelectors) {
    _defaultInitSelectors = defaultInitSelectors;
  }

  init = (components) => {
    components.forEach((component) => initComponent(component));
  };

  initMDB = (components, checkOtherImports = false) => {
    const componentList = Object.keys(_defaultInitSelectors).map((element) => {
      const requireAutoInit = Boolean(
        document.querySelector(_defaultInitSelectors[element].selector)
      );

      if (requireAutoInit) {
        const component = components[_defaultInitSelectors[element].name];
        if (!component && !InitializedComponents.get(element) && checkOtherImports) {
          // eslint-disable-next-line no-console
          console.warn(
            `Please import ${_defaultInitSelectors[element].name} from "MDB" package and add it to a object parameter inside "initMDB" function`
          );
        }
        return component;
      }

      return null;
    });

    this.init(componentList);
  };
}


================================================
FILE: src/js/autoinit/initSelectors/free.js
================================================
import {
  alertCallback,
  dropdownCallback,
  offcanvasCallback,
  tabCallback,
  buttonCallback,
  modalCallback,
  rippleCallback,
  collapseCallback,
  carouselCallback,
  scrollspyCallback,
  toastCallback,
  inputCallback,
} from '../callbacks/free';

const defaultInitSelectors = {
  // Bootstrap Components
  alert: {
    name: 'Alert',
    selector: '[data-mdb-alert-init]',
    isToggler: true,
    callback: alertCallback,
  },
  button: {
    name: 'Button',
    selector: '[data-mdb-button-init]',
    isToggler: true,
    callback: buttonCallback,
  },
  carousel: {
    name: 'Carousel',
    selector: '[data-mdb-carousel-init]',
    isToggler: true,
    callback: carouselCallback,
  },
  collapse: {
    name: 'Collapse',
    selector: '[data-mdb-collapse-init]',
    isToggler: true,
    callback: collapseCallback,
  },
  dropdown: {
    name: 'Dropdown',
    selector: '[data-mdb-dropdown-init]',
    isToggler: true,
    callback: dropdownCallback,
  },
  modal: {
    name: 'Modal',
    selector: '[data-mdb-modal-init]',
    isToggler: true,
    callback: modalCallback,
  },
  offcanvas: {
    name: 'Offcanvas',
    selector: '[data-mdb-offcanvas-init]',
    isToggler: true,
    callback: offcanvasCallback,
  },
  scrollspy: {
    name: 'ScrollSpy',
    selector: '[data-mdb-scrollspy-init]',
    isToggler: true,
    callback: scrollspyCallback,
  },
  tab: {
    name: 'Tab',
    selector: '[data-mdb-tab-init], [data-mdb-pill-init], [data-mdb-list-init]',
    isToggler: true,
    callback: tabCallback,
  },
  toast: {
    name: 'Toast',
    selector: '[data-mdb-toast-init]',
    isToggler: true,
    callback: toastCallback,
  },
  tooltip: {
    name: 'Tooltip',
    selector: '[data-mdb-tooltip-init]',
    isToggler: false,
  },
  input: {
    name: 'Input',
    selector: '[data-mdb-input-init]',
    isToggler: true,
    callback: inputCallback,
  },
  range: {
    name: 'Range',
    selector: '[data-mdb-range-init]',
    isToggler: false,
  },
  ripple: {
    name: 'Ripple',
    selector: '[data-mdb-ripple-init]',
    isToggler: true,
    callback: rippleCallback,
  },
  popover: {
    name: 'Popover',
    selector: '[data-mdb-popover-init]',
    isToggler: false,
    callback: rippleCallback,
  },
};

export default defaultInitSelectors;


================================================
FILE: src/js/bootstrap/dist/alert.js
================================================
/*!
 * Bootstrap alert.js v5.3.3 (https://getbootstrap.com/)
 * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 */
(function (global, factory) {
  typeof exports === 'object' && typeof module !== 'undefined'
    ? (module.exports = factory(
        require('./base-component.js'),
        require('./dom/event-handler.js'),
        require('./util/component-functions.js'),
        require('./util/index.js')
      ))
    : typeof define === 'function' && define.amd
    ? define(
        ['./base-component', './dom/event-handler', './util/component-functions', './util/index'],
        factory
      )
    : ((global = typeof globalThis !== 'undefined' ? globalThis : global || self),
      (global.Alert = factory(
        global.BaseComponent,
        global.EventHandler,
        global.ComponentFunctions,
        global.Index
      )));
})(this, function (BaseComponent, EventHandler, componentFunctions_js, index_js) {
  'use strict';

  /**
   * --------------------------------------------------------------------------
   * Bootstrap alert.js
   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
   * --------------------------------------------------------------------------
   */

  /**
   * Constants
   */

  const NAME = 'alert';
  const DATA_KEY = 'bs.alert';
  const EVENT_KEY = `.${DATA_KEY}`;
  const EVENT_CLOSE = `close${EVENT_KEY}`;
  const EVENT_CLOSED = `closed${EVENT_KEY}`;
  const CLASS_NAME_FADE = 'fade';
  const CLASS_NAME_SHOW = 'show';

  /**
   * Class definition
   */

  class Alert extends BaseComponent {
    // Getters
    static get NAME() {
      return NAME;
    }

    // Public
    close() {
      const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);
      if (closeEvent.defaultPrevented) {
        return;
      }
      this._element.classList.remove(CLASS_NAME_SHOW);
      const isAnimated = this._element.classList.contains(CLASS_NAME_FADE);
      this._queueCallback(() => this._destroyElement(), this._element, isAnimated);
    }

    // Private
    _destroyElement() {
      this._element.remove();
      EventHandler.trigger(this._element, EVENT_CLOSED);
      this.dispose();
    }

    // Static
    static jQueryInterface(config) {
      return this.each(function () {
        const data = Alert.getOrCreateInstance(this);
        if (typeof config !== 'string') {
          return;
        }
        if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
          throw new TypeError(`No method named "${config}"`);
        }
        data[config](this);
      });
    }
  }

  /**
   * Data API implementation
   */

  componentFunctions_js.enableDismissTrigger(Alert, 'close');

  /**
   * jQuery
   */

  index_js.defineJQueryPlugin(Alert);

  return Alert;
});
//# sourceMappingURL=alert.js.map


================================================
FILE: src/js/bootstrap/dist/base-component.js
================================================
/*!
 * Bootstrap base-component.js v5.3.3 (https://getbootstrap.com/)
 * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 */
(function (global, factory) {
  typeof exports === 'object' && typeof module !== 'undefined'
    ? (module.exports = factory(
        require('./dom/data.js'),
        require('./dom/event-handler.js'),
        require('./util/config.js'),
        require('./util/index.js')
      ))
    : typeof define === 'function' && define.amd
    ? define(['./dom/data', './dom/event-handler', './util/config', './util/index'], factory)
    : ((global = typeof globalThis !== 'undefined' ? globalThis : global || self),
      (global.BaseComponent = factory(
        global.Data,
        global.EventHandler,
        global.Config,
        global.Index
      )));
})(this, function (Data, EventHandler, Config, index_js) {
  'use strict';

  /**
   * --------------------------------------------------------------------------
   * Bootstrap base-component.js
   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
   * --------------------------------------------------------------------------
   */

  /**
   * Constants
   */

  const VERSION = '5.3.3';

  /**
   * Class definition
   */

  class BaseComponent extends Config {
    constructor(element, config) {
      super();
      element = index_js.getElement(element);
      if (!element) {
        return;
      }
      this._element = element;
      this._config = this._getConfig(config);
      Data.set(this._element, this.constructor.DATA_KEY, this);
    }

    // Public
    dispose() {
      Data.remove(this._element, this.constructor.DATA_KEY);
      EventHandler.off(this._element, this.constructor.EVENT_KEY);
      for (const propertyName of Object.getOwnPropertyNames(this)) {
        this[propertyName] = null;
      }
    }
    _queueCallback(callback, element, isAnimated = true) {
      index_js.executeAfterTransition(callback, element, isAnimated);
    }
    _getConfig(config) {
      config = this._mergeConfigObj(config, this._element);
      config = this._configAfterMerge(config);
      this._typeCheckConfig(config);
      return config;
    }

    // Static
    static getInstance(element) {
      return Data.get(index_js.getElement(element), this.DATA_KEY);
    }
    static getOrCreateInstance(element, config = {}) {
      return (
        this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)
      );
    }
    static get VERSION() {
      return VERSION;
    }
    static get DATA_KEY() {
      return `bs.${this.NAME}`;
    }
    static get EVENT_KEY() {
      return `.${this.DATA_KEY}`;
    }
    static eventName(name) {
      return `${name}${this.EVENT_KEY}`;
    }
  }

  return BaseComponent;
});
//# sourceMappingURL=base-component.js.map


================================================
FILE: src/js/bootstrap/dist/button.js
================================================
/*!
 * Bootstrap button.js v5.3.3 (https://getbootstrap.com/)
 * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 */
(function (global, factory) {
  typeof exports === 'object' && typeof module !== 'undefined'
    ? (module.exports = factory(
        require('./base-component.js'),
        require('./dom/event-handler.js'),
        require('./util/index.js')
      ))
    : typeof define === 'function' && define.amd
    ? define(['./base-component', './dom/event-handler', './util/index'], factory)
    : ((global = typeof globalThis !== 'undefined' ? globalThis : global || self),
      (global.Button = factory(global.BaseComponent, global.EventHandler, global.Index)));
})(this, function (BaseComponent, EventHandler, index_js) {
  'use strict';

  /**
   * --------------------------------------------------------------------------
   * Bootstrap button.js
   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
   * --------------------------------------------------------------------------
   */

  /**
   * Constants
   */

  const NAME = 'button';
  const DATA_KEY = 'bs.button';
  const EVENT_KEY = `.${DATA_KEY}`;
  const DATA_API_KEY = '.data-api';
  const CLASS_NAME_ACTIVE = 'active';
  const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="button"]';
  const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;

  /**
   * Class definition
   */

  class Button extends BaseComponent {
    // Getters
    static get NAME() {
      return NAME;
    }

    // Public
    toggle() {
      // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method
      this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE));
    }

    // Static
    static jQueryInterface(config) {
      return this.each(function () {
        const data = Button.getOrCreateInstance(this);
        if (config === 'toggle') {
          data[config]();
        }
      });
    }
  }

  /**
   * Data API implementation
   */

  EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, (event) => {
    event.preventDefault();
    const button = event.target.closest(SELECTOR_DATA_TOGGLE);
    const data = Button.getOrCreateInstance(button);
    data.toggle();
  });

  /**
   * jQuery
   */

  index_js.defineJQueryPlugin(Button);

  return Button;
});
//# sourceMappingURL=button.js.map


================================================
FILE: src/js/bootstrap/dist/carousel.js
================================================
/*!
 * Bootstrap carousel.js v5.3.3 (https://getbootstrap.com/)
 * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 */
(function (global, factory) {
  typeof exports === 'object' && typeof module !== 'undefined'
    ? (module.exports = factory(
        require('./base-component.js'),
        require('./dom/event-handler.js'),
        require('./dom/manipulator.js'),
        require('./dom/selector-engine.js'),
        require('./util/index.js'),
        require('./util/swipe.js')
      ))
    : typeof define === 'function' && define.amd
    ? define(
        [
          './base-component',
          './dom/event-handler',
          './dom/manipulator',
          './dom/selector-engine',
          './util/index',
          './util/swipe',
        ],
        factory
      )
    : ((global = typeof globalThis !== 'undefined' ? globalThis : global || self),
      (global.Carousel = factory(
        global.BaseComponent,
        global.EventHandler,
        global.Manipulator,
        global.SelectorEngine,
        global.Index,
        global.Swipe
      )));
})(this, function (BaseComponent, EventHandler, Manipulator, SelectorEngine, index_js, Swipe) {
  'use strict';

  /**
   * --------------------------------------------------------------------------
   * Bootstrap carousel.js
   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
   * --------------------------------------------------------------------------
   */

  /**
   * Constants
   */

  const NAME = 'carousel';
  const DATA_KEY = 'bs.carousel';
  const EVENT_KEY = `.${DATA_KEY}`;
  const DATA_API_KEY = '.data-api';
  const ARROW_LEFT_KEY = 'ArrowLeft';
  const ARROW_RIGHT_KEY = 'ArrowRight';
  const TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch

  const ORDER_NEXT = 'next';
  const ORDER_PREV = 'prev';
  const DIRECTION_LEFT = 'left';
  const DIRECTION_RIGHT = 'right';
  const EVENT_SLIDE = `slide${EVENT_KEY}`;
  const EVENT_SLID = `slid${EVENT_KEY}`;
  const EVENT_KEYDOWN = `keydown${EVENT_KEY}`;
  const EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`;
  const EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`;
  const EVENT_DRAG_START = `dragstart${EVENT_KEY}`;
  const EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`;
  const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
  const CLASS_NAME_CAROUSEL = 'carousel';
  const CLASS_NAME_ACTIVE = 'active';
  const CLASS_NAME_SLIDE = 'slide';
  const CLASS_NAME_END = 'carousel-item-end';
  const CLASS_NAME_START = 'carousel-item-start';
  const CLASS_NAME_NEXT = 'carousel-item-next';
  const CLASS_NAME_PREV = 'carousel-item-prev';
  const SELECTOR_ACTIVE = '.active';
  const SELECTOR_ITEM = '.carousel-item';
  const SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM;
  const SELECTOR_ITEM_IMG = '.carousel-item img';
  const SELECTOR_INDICATORS = '.carousel-indicators';
  const SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';
  const SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]';
  const KEY_TO_DIRECTION = {
    [ARROW_LEFT_KEY]: DIRECTION_RIGHT,
    [ARROW_RIGHT_KEY]: DIRECTION_LEFT,
  };
  const Default = {
    interval: 5000,
    keyboard: true,
    pause: 'hover',
    ride: false,
    touch: true,
    wrap: true,
  };
  const DefaultType = {
    interval: '(number|boolean)',
    // TODO:v6 remove boolean support
    keyboard: 'boolean',
    pause: '(string|boolean)',
    ride: '(boolean|string)',
    touch: 'boolean',
    wrap: 'boolean',
  };

  /**
   * Class definition
   */

  class Carousel extends BaseComponent {
    constructor(element, config) {
      super(element, config);
      this._interval = null;
      this._activeElement = null;
      this._isSliding = false;
      this.touchTimeout = null;
      this._swipeHelper = null;
      this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);
      this._addEventListeners();
      if (this._config.ride === CLASS_NAME_CAROUSEL) {
        this.cycle();
      }
    }

    // Getters
    static get Default() {
      return Default;
    }
    static get DefaultType() {
      return DefaultType;
    }
    static get NAME() {
      return NAME;
    }

    // Public
    next() {
      this._slide(ORDER_NEXT);
    }
    nextWhenVisible() {
      // FIXME TODO use `document.visibilityState`
      // Don't call next when the page isn't visible
      // or the carousel or its parent isn't visible
      if (!document.hidden && index_js.isVisible(this._element)) {
        this.next();
      }
    }
    prev() {
      this._slide(ORDER_PREV);
    }
    pause() {
      if (this._isSliding) {
        index_js.triggerTransitionEnd(this._element);
      }
      this._clearInterval();
    }
    cycle() {
      this._clearInterval();
      this._updateInterval();
      this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval);
    }
    _maybeEnableCycle() {
      if (!this._config.ride) {
        return;
      }
      if (this._isSliding) {
        EventHandler.one(this._element, EVENT_SLID, () => this.cycle());
        return;
      }
      this.cycle();
    }
    to(index) {
      const items = this._getItems();
      if (index > items.length - 1 || index < 0) {
        return;
      }
      if (this._isSliding) {
        EventHandler.one(this._element, EVENT_SLID, () => this.to(index));
        return;
      }
      const activeIndex = this._getItemIndex(this._getActive());
      if (activeIndex === index) {
        return;
      }
      const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;
      this._slide(order, items[index]);
    }
    dispose() {
      if (this._swipeHelper) {
        this._swipeHelper.dispose();
      }
      super.dispose();
    }

    // Private
    _configAfterMerge(config) {
      config.defaultInterval = config.interval;
      return config;
    }
    _addEventListeners() {
      if (this._config.keyboard) {
        EventHandler.on(this._element, EVENT_KEYDOWN, (event) => this._keydown(event));
      }
      if (this._config.pause === 'hover') {
        EventHandler.on(this._element, EVENT_MOUSEENTER, () => this.pause());
        EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle());
      }
      if (this._config.touch && Swipe.isSupported()) {
        this._addTouchEventListeners();
      }
    }
    _addTouchEventListeners() {
      for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {
        EventHandler.on(img, EVENT_DRAG_START, (event) => event.preventDefault());
      }
      const endCallBack = () => {
        if (this._config.pause !== 'hover') {
          return;
        }

        // If it's a touch-enabled device, mouseenter/leave are fired as
        // part of the mouse compatibility events on first tap - the carousel
        // would stop cycling until user tapped out of it;
        // here, we listen for touchend, explicitly pause the carousel
        // (as if it's the second time we tap on it, mouseenter compat event
        // is NOT fired) and after a timeout (to allow for mouse compatibility
        // events to fire) we explicitly restart cycling

        this.pause();
        if (this.touchTimeout) {
          clearTimeout(this.touchTimeout);
        }
        this.touchTimeout = setTimeout(
          () => this._maybeEnableCycle(),
          TOUCHEVENT_COMPAT_WAIT + this._config.interval
        );
      };
      const swipeConfig = {
        leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),
        rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),
        endCallback: endCallBack,
      };
      this._swipeHelper = new Swipe(this._element, swipeConfig);
    }
    _keydown(event) {
      if (/input|textarea/i.test(event.target.tagName)) {
        return;
      }
      const direction = KEY_TO_DIRECTION[event.key];
      if (direction) {
        event.preventDefault();
        this._slide(this._directionToOrder(direction));
      }
    }
    _getItemIndex(element) {
      return this._getItems().indexOf(element);
    }
    _setActiveIndicatorElement(index) {
      if (!this._indicatorsElement) {
        return;
      }
      const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement);
      activeIndicator.classList.remove(CLASS_NAME_ACTIVE);
      activeIndicator.removeAttribute('aria-current');
      const newActiveIndicator = SelectorEngine.findOne(
        `[data-bs-slide-to="${index}"]`,
        this._indicatorsElement
      );
      if (newActiveIndicator) {
        newActiveIndicator.classList.add(CLASS_NAME_ACTIVE);
        newActiveIndicator.setAttribute('aria-current', 'true');
      }
    }
    _updateInterval() {
      const element = this._activeElement || this._getActive();
      if (!element) {
        return;
      }
      const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);
      this._config.interval = elementInterval || this._config.defaultInterval;
    }
    _slide(order, element = null) {
      if (this._isSliding) {
        return;
      }
      const activeElement = this._getActive();
      const isNext = order === ORDER_NEXT;
      const nextElement =
        element ||
        index_js.getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap);
      if (nextElement === activeElement) {
        return;
      }
      const nextElementIndex = this._getItemIndex(nextElement);
      const triggerEvent = (eventName) => {
        return EventHandler.trigger(this._element, eventName, {
          relatedTarget: nextElement,
          direction: this._orderToDirection(order),
          from: this._getItemIndex(activeElement),
          to: nextElementIndex,
        });
      };
      const slideEvent = triggerEvent(EVENT_SLIDE);
      if (slideEvent.defaultPrevented) {
        return;
      }
      if (!activeElement || !nextElement) {
        // Some weirdness is happening, so we bail
        // TODO: change tests that use empty divs to avoid this check
        return;
      }
      const isCycling = Boolean(this._interval);
      this.pause();
      this._isSliding = true;
      this._setActiveIndicatorElement(nextElementIndex);
      this._activeElement = nextElement;
      const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;
      const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;
      nextElement.classList.add(orderClassName);
      index_js.reflow(nextElement);
      activeElement.classList.add(directionalClassName);
      nextElement.classList.add(directionalClassName);
      const completeCallBack = () => {
        nextElement.classList.remove(directionalClassName, orderClassName);
        nextElement.classList.add(CLASS_NAME_ACTIVE);
        activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName);
        this._isSliding = false;
        triggerEvent(EVENT_SLID);
      };
      this._queueCallback(completeCallBack, activeElement, this._isAnimated());
      if (isCycling) {
        this.cycle();
      }
    }
    _isAnimated() {
      return this._element.classList.contains(CLASS_NAME_SLIDE);
    }
    _getActive() {
      return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
    }
    _getItems() {
      return SelectorEngine.find(SELECTOR_ITEM, this._element);
    }
    _clearInterval() {
      if (this._interval) {
        clearInterval(this._interval);
        this._interval = null;
      }
    }
    _directionToOrder(direction) {
      if (index_js.isRTL()) {
        return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;
      }
      return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;
    }
    _orderToDirection(order) {
      if (index_js.isRTL()) {
        return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;
      }
      return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;
    }

    // Static
    static jQueryInterface(config) {
      return this.each(function () {
        const data = Carousel.getOrCreateInstance(this, config);
        if (typeof config === 'number') {
          data.to(config);
          return;
        }
        if (typeof config === 'string') {
          if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
            throw new TypeError(`No method named "${config}"`);
          }
          data[config]();
        }
      });
    }
  }

  /**
   * Data API implementation
   */

  EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {
    const target = SelectorEngine.getElementFromSelector(this);
    if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {
      return;
    }
    event.preventDefault();
    const carousel = Carousel.getOrCreateInstance(target);
    const slideIndex = this.getAttribute('data-bs-slide-to');
    if (slideIndex) {
      carousel.to(slideIndex);
      carousel._maybeEnableCycle();
      return;
    }
    if (Manipulator.getDataAttribute(this, 'slide') === 'next') {
      carousel.next();
      carousel._maybeEnableCycle();
      return;
    }
    carousel.prev();
    carousel._maybeEnableCycle();
  });
  EventHandler.on(window, EVENT_LOAD_DATA_API, () => {
    const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);
    for (const carousel of carousels) {
      Carousel.getOrCreateInstance(carousel);
    }
  });

  /**
   * jQuery
   */

  index_js.defineJQueryPlugin(Carousel);

  return Carousel;
});
//# sourceMappingURL=carousel.js.map


================================================
FILE: src/js/bootstrap/dist/collapse.js
================================================
/*!
 * Bootstrap collapse.js v5.3.3 (https://getbootstrap.com/)
 * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 */
(function (global, factory) {
  typeof exports === 'object' && typeof module !== 'undefined'
    ? (module.exports = factory(
        require('./base-component.js'),
        require('./dom/event-handler.js'),
        require('./dom/selector-engine.js'),
        require('./util/index.js')
      ))
    : typeof define === 'function' && define.amd
    ? define(
        ['./base-component', './dom/event-handler', './dom/selector-engine', './util/index'],
        factory
      )
    : ((global = typeof globalThis !== 'undefined' ? globalThis : global || self),
      (global.Collapse = factory(
        global.BaseComponent,
        global.EventHandler,
        global.SelectorEngine,
        global.Index
      )));
})(this, function (BaseComponent, EventHandler, SelectorEngine, index_js) {
  'use strict';

  /**
   * --------------------------------------------------------------------------
   * Bootstrap collapse.js
   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
   * --------------------------------------------------------------------------
   */

  /**
   * Constants
   */

  const NAME = 'collapse';
  const DATA_KEY = 'bs.collapse';
  const EVENT_KEY = `.${DATA_KEY}`;
  const DATA_API_KEY = '.data-api';
  const EVENT_SHOW = `show${EVENT_KEY}`;
  const EVENT_SHOWN = `shown${EVENT_KEY}`;
  const EVENT_HIDE = `hide${EVENT_KEY}`;
  const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
  const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
  const CLASS_NAME_SHOW = 'show';
  const CLASS_NAME_COLLAPSE = 'collapse';
  const CLASS_NAME_COLLAPSING = 'collapsing';
  const CLASS_NAME_COLLAPSED = 'collapsed';
  const CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;
  const CLASS_NAME_HORIZONTAL = 'collapse-horizontal';
  const WIDTH = 'width';
  const HEIGHT = 'height';
  const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';
  const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="collapse"]';
  const Default = {
    parent: null,
    toggle: true,
  };
  const DefaultType = {
    parent: '(null|element)',
    toggle: 'boolean',
  };

  /**
   * Class definition
   */

  class Collapse extends BaseComponent {
    constructor(element, config) {
      super(element, config);
      this._isTransitioning = false;
      this._triggerArray = [];
      const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE);
      for (const elem of toggleList) {
        const selector = SelectorEngine.getSelectorFromElement(elem);
        const filterElement = SelectorEngine.find(selector).filter(
          (foundElement) => foundElement === this._element
        );
        if (selector !== null && filterElement.length) {
          this._triggerArray.push(elem);
        }
      }
      this._initializeChildren();
      if (!this._config.parent) {
        this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());
      }
      if (this._config.toggle) {
        this.toggle();
      }
    }

    // Getters
    static get Default() {
      return Default;
    }
    static get DefaultType() {
      return DefaultType;
    }
    static get NAME() {
      return NAME;
    }

    // Public
    toggle() {
      if (this._isShown()) {
        this.hide();
      } else {
        this.show();
      }
    }
    show() {
      if (this._isTransitioning || this._isShown()) {
        return;
      }
      let activeChildren = [];

      // find active children
      if (this._config.parent) {
        activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)
          .filter((element) => element !== this._element)
          .map((element) =>
            Collapse.getOrCreateInstance(element, {
              toggle: false,
            })
          );
      }
      if (activeChildren.length && activeChildren[0]._isTransitioning) {
        return;
      }
      const startEvent = EventHandler.trigger(this._element, EVENT_SHOW);
      if (startEvent.defaultPrevented) {
        return;
      }
      for (const activeInstance of activeChildren) {
        activeInstance.hide();
      }
      const dimension = this._getDimension();
      this._element.classList.remove(CLASS_NAME_COLLAPSE);
      this._element.classList.add(CLASS_NAME_COLLAPSING);
      this._element.style[dimension] = 0;
      this._addAriaAndCollapsedClass(this._triggerArray, true);
      this._isTransitioning = true;
      const complete = () => {
        this._isTransitioning = false;
        this._element.classList.remove(CLASS_NAME_COLLAPSING);
        this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);
        this._element.style[dimension] = '';
        EventHandler.trigger(this._element, EVENT_SHOWN);
      };
      const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
      const scrollSize = `scroll${capitalizedDimension}`;
      this._queueCallback(complete, this._element, true);
      this._element.style[dimension] = `${this._element[scrollSize]}px`;
    }
    hide() {
      if (this._isTransitioning || !this._isShown()) {
        return;
      }
      const startEvent = EventHandler.trigger(this._element, EVENT_HIDE);
      if (startEvent.defaultPrevented) {
        return;
      }
      const dimension = this._getDimension();
      this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;
      index_js.reflow(this._element);
      this._element.classList.add(CLASS_NAME_COLLAPSING);
      this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);
      for (const trigger of this._triggerArray) {
        const element = SelectorEngine.getElementFromSelector(trigger);
        if (element && !this._isShown(element)) {
          this._addAriaAndCollapsedClass([trigger], false);
        }
      }
      this._isTransitioning = true;
      const complete = () => {
        this._isTransitioning = false;
        this._element.classList.remove(CLASS_NAME_COLLAPSING);
        this._element.classList.add(CLASS_NAME_COLLAPSE);
        EventHandler.trigger(this._element, EVENT_HIDDEN);
      };
      this._element.style[dimension] = '';
      this._queueCallback(complete, this._element, true);
    }
    _isShown(element = this._element) {
      return element.classList.contains(CLASS_NAME_SHOW);
    }

    // Private
    _configAfterMerge(config) {
      config.toggle = Boolean(config.toggle); // Coerce string values
      config.parent = index_js.getElement(config.parent);
      return config;
    }
    _getDimension() {
      return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;
    }
    _initializeChildren() {
      if (!this._config.parent) {
        return;
      }
      const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE);
      for (const element of children) {
        const selected = SelectorEngine.getElementFromSelector(element);
        if (selected) {
          this._addAriaAndCollapsedClass([element], this._isShown(selected));
        }
      }
    }
    _getFirstLevelChildren(selector) {
      const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);
      // remove children if greater depth
      return SelectorEngine.find(selector, this._config.parent).filter(
        (element) => !children.includes(element)
      );
    }
    _addAriaAndCollapsedClass(triggerArray, isOpen) {
      if (!triggerArray.length) {
        return;
      }
      for (const element of triggerArray) {
        element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);
        element.setAttribute('aria-expanded', isOpen);
      }
    }

    // Static
    static jQueryInterface(config) {
      const _config = {};
      if (typeof config === 'string' && /show|hide/.test(config)) {
        _config.toggle = false;
      }
      return this.each(function () {
        const data = Collapse.getOrCreateInstance(this, _config);
        if (typeof config === 'string') {
          if (typeof data[config] === 'undefined') {
            throw new TypeError(`No method named "${config}"`);
          }
          data[config]();
        }
      });
    }
  }

  /**
   * Data API implementation
   */

  EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
    // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
    if (
      event.target.tagName === 'A' ||
      (event.delegateTarget && event.delegateTarget.tagName === 'A')
    ) {
      event.preventDefault();
    }
    for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {
      Collapse.getOrCreateInstance(element, {
        toggle: false,
      }).toggle();
    }
  });

  /**
   * jQuery
   */

  index_js.defineJQueryPlugin(Collapse);

  return Collapse;
});
//# sourceMappingURL=collapse.js.map


================================================
FILE: src/js/bootstrap/dist/dom/data.js
================================================
/*!
 * Bootstrap data.js v5.3.3 (https://getbootstrap.com/)
 * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 */
(function (global, factory) {
  typeof exports === 'object' && typeof module !== 'undefined'
    ? (module.exports = factory())
    : typeof define === 'function' && define.amd
    ? define(factory)
    : ((global = typeof globalThis !== 'undefined' ? globalThis : global || self),
      (global.Data = factory()));
})(this, function () {
  'use strict';

  /**
   * --------------------------------------------------------------------------
   * Bootstrap dom/data.js
   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
   * --------------------------------------------------------------------------
   */

  /**
   * Constants
   */

  const elementMap = new Map();
  const data = {
    set(element, key, instance) {
      if (!elementMap.has(element)) {
        elementMap.set(element, new Map());
      }
      const instanceMap = elementMap.get(element);

      // make it clear we only want one instance per element
      // can be removed later when multiple key/instances are fine to be used
      if (!instanceMap.has(key) && instanceMap.size !== 0) {
        // eslint-disable-next-line no-console
        console.error(
          `Bootstrap doesn't allow more than one instance per element. Bound instance: ${
            Array.from(instanceMap.keys())[0]
          }.`
        );
        return;
      }
      instanceMap.set(key, instance);
    },
    get(element, key) {
      if (elementMap.has(element)) {
        return elementMap.get(element).get(key) || null;
      }
      return null;
    },
    remove(element, key) {
      if (!elementMap.has(element)) {
        return;
      }
      const instanceMap = elementMap.get(element);
      instanceMap.delete(key);

      // free up element references if there are no instances left for an element
      if (instanceMap.size === 0) {
        elementMap.delete(element);
      }
    },
  };

  return data;
});
//# sourceMappingURL=data.js.map


================================================
FILE: src/js/bootstrap/dist/dom/event-handler.js
================================================
/*!
 * Bootstrap event-handler.js v5.3.3 (https://getbootstrap.com/)
 * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 */
(function (global, factory) {
  typeof exports === 'object' && typeof module !== 'undefined'
    ? (module.exports = factory(require('../util/index.js')))
    : typeof define === 'function' && define.amd
    ? define(['../util/index'], factory)
    : ((global = typeof globalThis !== 'undefined' ? globalThis : global || self),
      (global.EventHandler = factory(global.Index)));
})(this, function (index_js) {
  'use strict';

  /**
   * --------------------------------------------------------------------------
   * Bootstrap dom/event-handler.js
   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
   * --------------------------------------------------------------------------
   */

  /**
   * Constants
   */

  const namespaceRegex = /[^.]*(?=\..*)\.|.*/;
  const stripNameRegex = /\..*/;
  const stripUidRegex = /::\d+$/;
  const eventRegistry = {}; // Events storage
  let uidEvent = 1;
  const customEvents = {
    mouseenter: 'mouseover',
    mouseleave: 'mouseout',
  };
  const nativeEvents = new Set([
    'click',
    'dblclick',
    'mouseup',
    'mousedown',
    'contextmenu',
    'mousewheel',
    'DOMMouseScroll',
    'mouseover',
    'mouseout',
    'mousemove',
    'selectstart',
    'selectend',
    'keydown',
    'keypress',
    'keyup',
    'orientationchange',
    'touchstart',
    'touchmove',
    'touchend',
    'touchcancel',
    'pointerdown',
    'pointermove',
    'pointerup',
    'pointerleave',
    'pointercancel',
    'gesturestart',
    'gesturechange',
    'gestureend',
    'focus',
    'blur',
    'change',
    'reset',
    'select',
    'submit',
    'focusin',
    'focusout',
    'load',
    'unload',
    'beforeunload',
    'resize',
    'move',
    'DOMContentLoaded',
    'readystatechange',
    'error',
    'abort',
    'scroll',
  ]);

  /**
   * Private methods
   */

  function makeEventUid(element, uid) {
    return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++;
  }
  function getElementEvents(element) {
    const uid = makeEventUid(element);
    element.uidEvent = uid;
    eventRegistry[uid] = eventRegistry[uid] || {};
    return eventRegistry[uid];
  }
  function bootstrapHandler(element, fn) {
    return function handler(event) {
      hydrateObj(event, {
        delegateTarget: element,
      });
      if (handler.oneOff) {
        EventHandler.off(element, event.type, fn);
      }
      return fn.apply(element, [event]);
    };
  }
  function bootstrapDelegationHandler(element, selector, fn) {
    return function handler(event) {
      const domElements = element.querySelectorAll(selector);
      for (let { target } = event; target && target !== this; target = target.parentNode) {
        for (const domElement of domElements) {
          if (domElement !== target) {
            continue;
          }
          hydrateObj(event, {
            delegateTarget: target,
          });
          if (handler.oneOff) {
            EventHandler.off(element, event.type, selector, fn);
          }
          return fn.apply(target, [event]);
        }
      }
    };
  }
  function findHandler(events, callable, delegationSelector = null) {
    return Object.values(events).find(
      (event) => event.callable === callable && event.delegationSelector === delegationSelector
    );
  }
  function normalizeParameters(originalTypeEvent, handler, delegationFunction) {
    const isDelegated = typeof handler === 'string';
    // TODO: tooltip passes `false` instead of selector, so we need to check
    const callable = isDelegated ? delegationFunction : handler || delegationFunction;
    let typeEvent = getTypeEvent(originalTypeEvent);
    if (!nativeEvents.has(typeEvent)) {
      typeEvent = originalTypeEvent;
    }
    return [isDelegated, callable, typeEvent];
  }
  function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {
    if (typeof originalTypeEvent !== 'string' || !element) {
      return;
    }
    let [isDelegated, callable, typeEvent] = normalizeParameters(
      originalTypeEvent,
      handler,
      delegationFunction
    );

    // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position
    // this prevents the handler from being dispatched the same way as mouseover or mouseout does
    if (originalTypeEvent in customEvents) {
      const wrapFunction = (fn) => {
        return function (event) {
          if (
            !event.relatedTarget ||
            (event.relatedTarget !== event.delegateTarget &&
              !event.delegateTarget.contains(event.relatedTarget))
          ) {
            return fn.call(this, event);
          }
        };
      };
      callable = wrapFunction(callable);
    }
    const events = getElementEvents(element);
    const handlers = events[typeEvent] || (events[typeEvent] = {});
    const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);
    if (previousFunction) {
      previousFunction.oneOff = previousFunction.oneOff && oneOff;
      return;
    }
    const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''));
    const fn = isDelegated
      ? bootstrapDelegationHandler(element, handler, callable)
      : bootstrapHandler(element, callable);
    fn.delegationSelector = isDelegated ? handler : null;
    fn.callable = callable;
    fn.oneOff = oneOff;
    fn.uidEvent = uid;
    handlers[uid] = fn;
    element.addEventListener(typeEvent, fn, isDelegated);
  }
  function removeHandler(element, events, typeEvent, handler, delegationSelector) {
    const fn = findHandler(events[typeEvent], handler, delegationSelector);
    if (!fn) {
      return;
    }
    element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));
    delete events[typeEvent][fn.uidEvent];
  }
  function removeNamespacedHandlers(element, events, typeEvent, namespace) {
    const storeElementEvent = events[typeEvent] || {};
    for (const [handlerKey, event] of Object.entries(storeElementEvent)) {
      if (handlerKey.includes(namespace)) {
        removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);
      }
    }
  }
  function getTypeEvent(event) {
    // allow to get the native events from namespaced events ('click.bs.button' --> 'click')
    event = event.replace(stripNameRegex, '');
    return customEvents[event] || event;
  }
  const EventHandler = {
    on(element, event, handler, delegationFunction) {
      addHandler(element, event, handler, delegationFunction, false);
    },
    one(element, event, handler, delegationFunction) {
      addHandler(element, event, handler, delegationFunction, true);
    },
    off(element, originalTypeEvent, handler, delegationFunction) {
      if (typeof originalTypeEvent !== 'string' || !element) {
        return;
      }
      const [isDelegated, callable, typeEvent] = normalizeParameters(
        originalTypeEvent,
        handler,
        delegationFunction
      );
      const inNamespace = typeEvent !== originalTypeEvent;
      const events = getElementEvents(element);
      const storeElementEvent = events[typeEvent] || {};
      const isNamespace = originalTypeEvent.startsWith('.');
      if (typeof callable !== 'undefined') {
        // Simplest case: handler is passed, remove that listener ONLY.
        if (!Object.keys(storeElementEvent).length) {
          return;
        }
        removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);
        return;
      }
      if (isNamespace) {
        for (const elementEvent of Object.keys(events)) {
          removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));
        }
      }
      for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {
        const handlerKey = keyHandlers.replace(stripUidRegex, '');
        if (!inNamespace || originalTypeEvent.includes(handlerKey)) {
          removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);
        }
      }
    },
    trigger(element, event, args) {
      if (typeof event !== 'string' || !element) {
        return null;
      }
      const $ = index_js.getjQuery();
      const typeEvent = getTypeEvent(event);
      const inNamespace = event !== typeEvent;
      let jQueryEvent = null;
      let bubbles = true;
      let nativeDispatch = true;
      let defaultPrevented = false;
      if (inNamespace && $) {
        jQueryEvent = $.Event(event, args);
        $(element).trigger(jQueryEvent);
        bubbles = !jQueryEvent.isPropagationStopped();
        nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();
        defaultPrevented = jQueryEvent.isDefaultPrevented();
      }
      const evt = hydrateObj(
        new Event(event, {
          bubbles,
          cancelable: true,
        }),
        args
      );
      if (defaultPrevented) {
        evt.preventDefault();
      }
      if (nativeDispatch) {
        element.dispatchEvent(evt);
      }
      if (evt.defaultPrevented && jQueryEvent) {
        jQueryEvent.preventDefault();
      }
      return evt;
    },
  };
  function hydrateObj(obj, meta = {}) {
    for (const [key, value] of Object.entries(meta)) {
      try {
        obj[key] = value;
      } catch (_unused) {
        Object.defineProperty(obj, key, {
          configurable: true,
          get() {
            return value;
          },
        });
      }
    }
    return obj;
  }

  return EventHandler;
});
//# sourceMappingURL=event-handler.js.map


================================================
FILE: src/js/bootstrap/dist/dom/manipulator.js
================================================
/*!
 * Bootstrap manipulator.js v5.3.3 (https://getbootstrap.com/)
 * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 */
(function (global, factory) {
  typeof exports === 'object' && typeof module !== 'undefined'
    ? (module.exports = factory())
    : typeof define === 'function' && define.amd
    ? define(factory)
    : ((global = typeof globalThis !== 'undefined' ? globalThis : global || self),
      (global.Manipulator = factory()));
})(this, function () {
  'use strict';

  /**
   * --------------------------------------------------------------------------
   * Bootstrap dom/manipulator.js
   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
   * --------------------------------------------------------------------------
   */

  function normalizeData(value) {
    if (value === 'true') {
      return true;
    }
    if (value === 'false') {
      return false;
    }
    if (value === Number(value).toString()) {
      return Number(value);
    }
    if (value === '' || value === 'null') {
      return null;
    }
    if (typeof value !== 'string') {
      return value;
    }
    try {
      return JSON.parse(decodeURIComponent(value));
    } catch (_unused) {
      return value;
    }
  }
  function normalizeDataKey(key) {
    return key.replace(/[A-Z]/g, (chr) => `-${chr.toLowerCase()}`);
  }
  const Manipulator = {
    setDataAttribute(element, key, value) {
      element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);
    },
    removeDataAttribute(element, key) {
      element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);
    },
    getDataAttributes(element) {
      if (!element) {
        return {};
      }
      const attributes = {};
      const bsKeys = Object.keys(element.dataset).filter(
        (key) => key.startsWith('bs') && !key.startsWith('bsConfig')
      );
      for (const key of bsKeys) {
        let pureKey = key.replace(/^bs/, '');
        pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);
        attributes[pureKey] = normalizeData(element.dataset[key]);
      }
      return attributes;
    },
    getDataAttribute(element, key) {
      return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));
    },
  };

  return Manipulator;
});
//# sourceMappingURL=manipulator.js.map


================================================
FILE: src/js/bootstrap/dist/dom/selector-engine.js
================================================
/*!
 * Bootstrap selector-engine.js v5.3.3 (https://getbootstrap.com/)
 * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 */
(function (global, factory) {
  typeof exports === 'object' && typeof module !== 'undefined'
    ? (module.exports = factory(require('../util/index.js')))
    : typeof define === 'function' && define.amd
    ? define(['../util/index'], factory)
    : ((global = typeof globalThis !== 'undefined' ? globalThis : global || self),
      (global.SelectorEngine = factory(global.Index)));
})(this, function (index_js) {
  'use strict';

  /**
   * --------------------------------------------------------------------------
   * Bootstrap dom/selector-engine.js
   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
   * --------------------------------------------------------------------------
   */

  const getSelector = (element) => {
    let selector = element.getAttribute('data-bs-target');
    if (!selector || selector === '#') {
      let hrefAttribute = element.getAttribute('href');

      // The only valid content that could double as a selector are IDs or classes,
      // so everything starting with `#` or `.`. If a "real" URL is used as the selector,
      // `document.querySelector` will rightfully complain it is invalid.
      // See https://github.com/twbs/bootstrap/issues/32273
      if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {
        return null;
      }

      // Just in case some CMS puts out a full URL with the anchor appended
      if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {
        hrefAttribute = `#${hrefAttribute.split('#')[1]}`;
      }
      selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null;
    }
    return selector
      ? selector
          .split(',')
          .map((sel) => index_js.parseSelector(sel))
          .join(',')
      : null;
  };
  const SelectorEngine = {
    find(selector, element = document.documentElement) {
      return [].concat(...Element.prototype.querySelectorAll.call(element, selector));
    },
    findOne(selector, element = document.documentElement) {
      return Element.prototype.querySelector.call(element, selector);
    },
    children(element, selector) {
      return [].concat(...element.children).filter((child) => child.matches(selector));
    },
    parents(element, selector) {
      const parents = [];
      let ancestor = element.parentNode.closest(selector);
      while (ancestor) {
        parents.push(ancestor);
        ancestor = ancestor.parentNode.closest(selector);
      }
      return parents;
    },
    prev(element, selector) {
      let previous = element.previousElementSibling;
      while (previous) {
        if (previous.matches(selector)) {
          return [previous];
        }
        previous = previous.previousElementSibling;
      }
      return [];
    },
    // TODO: this is now unused; remove later along with prev()
    next(element, selector) {
      let next = element.nextElementSibling;
      while (next) {
        if (next.matches(selector)) {
          return [next];
        }
        next = next.nextElementSibling;
      }
      return [];
    },
    focusableChildren(element) {
      const focusables = [
        'a',
        'button',
        'input',
        'textarea',
        'select',
        'details',
        '[tabindex]',
        '[contenteditable="true"]',
      ]
        .map((selector) => `${selector}:not([tabindex^="-"])`)
        .join(',');
      return this.find(focusables, element).filter(
        (el) => !index_js.isDisabled(el) && index_js.isVisible(el)
      );
    },
    getSelectorFromElement(element) {
      const selector = getSelector(element);
      if (selector) {
        return SelectorEngine.findOne(selector) ? selector : null;
      }
      return null;
    },
    getElementFromSelector(element) {
      const selector = getSelector(element);
      return selector ? SelectorEngine.findOne(selector) : null;
    },
    getMultipleElementsFromSelector(element) {
      const selector = getSelector(element);
      return selector ? SelectorEngine.find(selector) : [];
    },
  };

  return SelectorEngine;
});
//# sourceMappingURL=selector-engine.js.map


================================================
FILE: src/js/bootstrap/dist/dropdown.js
================================================
/*!
 * Bootstrap dropdown.js v5.3.3 (https://getbootstrap.com/)
 * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 */
(function (global, factory) {
  typeof exports === 'object' && typeof module !== 'undefined'
    ? (module.exports = factory(
        require('@popperjs/core'),
        require('./base-component.js'),
        require('./dom/event-handler.js'),
        require('./dom/manipulator.js'),
        require('./dom/selector-engine.js'),
        require('./util/index.js')
      ))
    : typeof define === 'function' && define.amd
    ? define(
        [
          '@popperjs/core',
          './base-component',
          './dom/event-handler',
          './dom/manipulator',
          './dom/selector-engine',
          './util/index',
        ],
        factory
      )
    : ((global = typeof globalThis !== 'undefined' ? globalThis : global || self),
      (global.Dropdown = factory(
        global['@popperjs/core'],
        global.BaseComponent,
        global.EventHandler,
        global.Manipulator,
        global.SelectorEngine,
        global.Index
      )));
})(this, function (Popper, BaseComponent, EventHandler, Manipulator, SelectorEngine, index_js) {
  'use strict';

  function _interopNamespaceDefault(e) {
    const n = Object.create(null, { [Symbol.toStringTag]: { value: 'Module' } });
    if (e) {
      for (const k in e) {
        if (k !== 'default') {
          const d = Object.getOwnPropertyDescriptor(e, k);
          Object.defineProperty(
            n,
            k,
            d.get
              ? d
              : {
                  enumerable: true,
                  get: () => e[k],
                }
          );
        }
      }
    }
    n.default = e;
    return Object.freeze(n);
  }

  const Popper__namespace = /*#__PURE__*/ _interopNamespaceDefault(Popper);

  /**
   * --------------------------------------------------------------------------
   * Bootstrap dropdown.js
   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
   * --------------------------------------------------------------------------
   */

  /**
   * Constants
   */

  const NAME = 'dropdown';
  const DATA_KEY = 'bs.dropdown';
  const EVENT_KEY = `.${DATA_KEY}`;
  const DATA_API_KEY = '.data-api';
  const ESCAPE_KEY = 'Escape';
  const TAB_KEY = 'Tab';
  const ARROW_UP_KEY = 'ArrowUp';
  const ARROW_DOWN_KEY = 'ArrowDown';
  const RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button

  const EVENT_HIDE = `hide${EVENT_KEY}`;
  const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
  const EVENT_SHOW = `show${EVENT_KEY}`;
  const EVENT_SHOWN = `shown${EVENT_KEY}`;
  const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
  const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`;
  const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`;
  const CLASS_NAME_SHOW = 'show';
  const CLASS_NAME_DROPUP = 'dropup';
  const CLASS_NAME_DROPEND = 'dropend';
  const CLASS_NAME_DROPSTART = 'dropstart';
  const CLASS_NAME_DROPUP_CENTER = 'dropup-center';
  const CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center';
  const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)';
  const SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE}.${CLASS_NAME_SHOW}`;
  const SELECTOR_MENU = '.dropdown-menu';
  const SELECTOR_NAVBAR = '.navbar';
  const SELECTOR_NAVBAR_NAV = '.navbar-nav';
  const SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';
  const PLACEMENT_TOP = index_js.isRTL() ? 'top-end' : 'top-start';
  const PLACEMENT_TOPEND = index_js.isRTL() ? 'top-start' : 'top-end';
  const PLACEMENT_BOTTOM = index_js.isRTL() ? 'bottom-end' : 'bottom-start';
  const PLACEMENT_BOTTOMEND = index_js.isRTL() ? 'bottom-start' : 'bottom-end';
  const PLACEMENT_RIGHT = index_js.isRTL() ? 'left-start' : 'right-start';
  const PLACEMENT_LEFT = index_js.isRTL() ? 'right-start' : 'left-start';
  const PLACEMENT_TOPCENTER = 'top';
  const PLACEMENT_BOTTOMCENTER = 'bottom';
  const Default = {
    autoClose: true,
    boundary: 'clippingParents',
    display: 'dynamic',
    offset: [0, 2],
    popperConfig: null,
    reference: 'toggle',
  };
  const DefaultType = {
    autoClose: '(boolean|string)',
    boundary: '(string|element)',
    display: 'string',
    offset: '(array|string|function)',
    popperConfig: '(null|object|function)',
    reference: '(string|element|object)',
  };

  /**
   * Class definition
   */

  class Dropdown extends BaseComponent {
    constructor(element, config) {
      super(element, config);
      this._popper = null;
      this._parent = this._element.parentNode; // dropdown wrapper
      // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/
      this._menu =
        SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||
        SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||
        SelectorEngine.findOne(SELECTOR_MENU, this._parent);
      this._inNavbar = this._detectNavbar();
    }

    // Getters
    static get Default() {
      return Default;
    }
    static get DefaultType() {
      return DefaultType;
    }
    static get NAME() {
      return NAME;
    }

    // Public
    toggle() {
      return this._isShown() ? this.hide() : this.show();
    }
    show() {
      if (index_js.isDisabled(this._element) || this._isShown()) {
        return;
      }
      const relatedTarget = {
        relatedTarget: this._element,
      };
      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget);
      if (showEvent.defaultPrevented) {
        return;
      }
      this._createPopper();

      // If this is a touch-enabled device we add extra
      // empty mouseover listeners to the body's immediate children;
      // only needed because of broken event delegation on iOS
      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
      if (
        'ontouchstart' in document.documentElement &&
        !this._parent.closest(SELECTOR_NAVBAR_NAV)
      ) {
        for (const element of [].concat(...document.body.children)) {
          EventHandler.on(element, 'mouseover', index_js.noop);
        }
      }
      this._element.focus();
      this._element.setAttribute('aria-expanded', true);
      this._menu.classList.add(CLASS_NAME_SHOW);
      this._element.classList.add(CLASS_NAME_SHOW);
      EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget);
    }
    hide() {
      if (index_js.isDisabled(this._element) || !this._isShown()) {
        return;
      }
      const relatedTarget = {
        relatedTarget: this._element,
      };
      this._completeHide(relatedTarget);
    }
    dispose() {
      if (this._popper) {
        this._popper.destroy();
      }
      super.dispose();
    }
    update() {
      this._inNavbar = this._detectNavbar();
      if (this._popper) {
        this._popper.update();
      }
    }

    // Private
    _completeHide(relatedTarget) {
      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget);
      if (hideEvent.defaultPrevented) {
        return;
      }

      // If this is a touch-enabled device we remove the extra
      // empty mouseover listeners we added for iOS support
      if ('ontouchstart' in document.documentElement) {
        for (const element of [].concat(...document.body.children)) {
          EventHandler.off(element, 'mouseover', index_js.noop);
        }
      }
      if (this._popper) {
        this._popper.destroy();
      }
      this._menu.classList.remove(CLASS_NAME_SHOW);
      this._element.classList.remove(CLASS_NAME_SHOW);
      this._element.setAttribute('aria-expanded', 'false');
      Manipulator.removeDataAttribute(this._menu, 'popper');
      EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget);
    }
    _getConfig(config) {
      config = super._getConfig(config);
      if (
        typeof config.reference === 'object' &&
        !index_js.isElement(config.reference) &&
        typeof config.reference.getBoundingClientRect !== 'function'
      ) {
        // Popper virtual elements require a getBoundingClientRect method
        throw new TypeError(
          `${NAME.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`
        );
      }
      return config;
    }
    _createPopper() {
      if (typeof Popper__namespace === 'undefined') {
        throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");
      }
      let referenceElement = this._element;
      if (this._config.reference === 'parent') {
        referenceElement = this._parent;
      } else if (index_js.isElement(this._config.reference)) {
        referenceElement = index_js.getElement(this._config.reference);
      } else if (typeof this._config.reference === 'object') {
        referenceElement = this._config.reference;
      }
      const popperConfig = this._getPopperConfig();
      this._popper = Popper__namespace.createPopper(referenceElement, this._menu, popperConfig);
    }
    _isShown() {
      return this._menu.classList.contains(CLASS_NAME_SHOW);
    }
    _getPlacement() {
      const parentDropdown = this._parent;
      if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {
        return PLACEMENT_RIGHT;
      }
      if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {
        return PLACEMENT_LEFT;
      }
      if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {
        return PLACEMENT_TOPCENTER;
      }
      if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {
        return PLACEMENT_BOTTOMCENTER;
      }

      // We need to trim the value because custom properties can also include spaces
      const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end';
      if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {
        return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;
      }
      return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;
    }
    _detectNavbar() {
      return this._element.closest(SELECTOR_NAVBAR) !== null;
    }
    _getOffset() {
      const { offset } = this._config;
      if (typeof offset === 'string') {
        return offset.split(',').map((value) => Number.parseInt(value, 10));
      }
      if (typeof offset === 'function') {
        return (popperData) => offset(popperData, this._element);
      }
      return offset;
    }
    _getPopperConfig() {
      const defaultBsPopperConfig = {
        placement: this._getPlacement(),
        modifiers: [
          {
            name: 'preventOverflow',
            options: {
              boundary: this._config.boundary,
            },
          },
          {
            name: 'offset',
            options: {
              offset: this._getOffset(),
            },
          },
        ],
      };

      // Disable Popper if we have a static display or Dropdown is in Navbar
      if (this._inNavbar || this._config.display === 'static') {
        Manipulator.setDataAttribute(this._menu, 'popper', 'static'); // TODO: v6 remove
        defaultBsPopperConfig.modifiers = [
          {
            name: 'applyStyles',
            enabled: false,
          },
        ];
      }
      return {
        ...defaultBsPopperConfig,
        ...index_js.execute(this._config.popperConfig, [defaultBsPopperConfig]),
      };
    }
    _selectMenuItem({ key, target }) {
      const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter((element) =>
        index_js.isVisible(element)
      );
      if (!items.length) {
        return;
      }

      // if target isn't included in items (e.g. when expanding the dropdown)
      // allow cycling to get the last item in case key equals ARROW_UP_KEY
      index_js
        .getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target))
        .focus();
    }

    // Static
    static jQueryInterface(config) {
      return this.each(function () {
        const data = Dropdown.getOrCreateInstance(this, config);
        if (typeof config !== 'string') {
          return;
        }
        if (typeof data[config] === 'undefined') {
          throw new TypeError(`No method named "${config}"`);
        }
        data[config]();
      });
    }
    static clearMenus(event) {
      if (
        event.button === RIGHT_MOUSE_BUTTON ||
        (event.type === 'keyup' && event.key !== TAB_KEY)
      ) {
        return;
      }
      const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);
      for (const toggle of openToggles) {
        const context = Dropdown.getInstance(toggle);
        if (!context || context._config.autoClose === false) {
          continue;
        }
        const composedPath = event.composedPath();
        const isMenuTarget = composedPath.includes(context._menu);
        if (
          composedPath.includes(context._element) ||
          (context._config.autoClose === 'inside' && !isMenuTarget) ||
          (context._config.autoClose === 'outside' && isMenuTarget)
        ) {
          continue;
        }

        // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu
        if (
          context._menu.contains(event.target) &&
          ((event.type === 'keyup' && event.key === TAB_KEY) ||
            /input|select|option|textarea|form/i.test(event.target.tagName))
        ) {
          continue;
        }
        const relatedTarget = {
          relatedTarget: context._element,
        };
        if (event.type === 'click') {
          relatedTarget.clickEvent = event;
        }
        context._completeHide(relatedTarget);
      }
    }
    static dataApiKeydownHandler(event) {
      // If not an UP | DOWN | ESCAPE key => not a dropdown command
      // If input/textarea && if key is other than ESCAPE => not a dropdown command

      const isInput = /input|textarea/i.test(event.target.tagName);
      const isEscapeEvent = event.key === ESCAPE_KEY;
      const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key);
      if (!isUpOrDownEvent && !isEscapeEvent) {
        return;
      }
      if (isInput && !isEscapeEvent) {
        return;
      }
      event.preventDefault();

      // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/
      const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE)
        ? this
        : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] ||
          SelectorEngine.next(this, SELECTOR_DATA_TOGGLE)[0] ||
          SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode);
      const instance = Dropdown.getOrCreateInstance(getToggleButton);
      if (isUpOrDownEvent) {
        event.stopPropagation();
        instance.show();
        instance._selectMenuItem(event);
        return;
      }
      if (instance._isShown()) {
        // else is escape and we check if it is shown
        event.stopPropagation();
        instance.hide();
        getToggleButton.focus();
      }
    }
  }

  /**
   * Data API implementation
   */

  EventHandler.on(
    document,
    EVENT_KEYDOWN_DATA_API,
    SELECTOR_DATA_TOGGLE,
    Dropdown.dataApiKeydownHandler
  );
  EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);
  EventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus);
  EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);
  EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
    event.preventDefault();
    Dropdown.getOrCreateInstance(this).toggle();
  });

  /**
   * jQuery
   */

  index_js.defineJQueryPlugin(Dropdown);

  return Dropdown;
});
//# sourceMappingURL=dropdown.js.map


================================================
FILE: src/js/bootstrap/dist/modal.js
================================================
/*!
 * Bootstrap modal.js v5.3.3 (https://getbootstrap.com/)
 * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 */
(function (global, factory) {
  typeof exports === 'object' && typeof module !== 'undefined'
    ? (module.exports = factory(
        require('./base-component.js'),
        require('./dom/event-handler.js'),
        require('./dom/selector-engine.js'),
        require('./util/backdrop.js'),
        require('./util/component-functions.js'),
        require('./util/focustrap.js'),
        require('./util/index.js'),
        require('./util/scrollbar.js')
      ))
    : typeof define === 'function' && define.amd
    ? define(
        [
          './base-component',
          './dom/event-handler',
          './dom/selector-engine',
          './util/backdrop',
          './util/component-functions',
          './util/focustrap',
          './util/index',
          './util/scrollbar',
        ],
        factory
      )
    : ((global = typeof globalThis !== 'undefined' ? globalThis : global || self),
      (global.Modal = factory(
        global.BaseComponent,
        global.EventHandler,
        global.SelectorEngine,
        global.Backdrop,
        global.ComponentFunctions,
        global.Focustrap,
        global.Index,
        global.Scrollbar
      )));
})(
  this,
  function (
    BaseComponent,
    EventHandler,
    SelectorEngine,
    Backdrop,
    componentFunctions_js,
    FocusTrap,
    index_js,
    ScrollBarHelper
  ) {
    'use strict';

    /**
     * --------------------------------------------------------------------------
     * Bootstrap modal.js
     * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
     * --------------------------------------------------------------------------
     */

    /**
     * Constants
     */

    const NAME = 'modal';
    const DATA_KEY = 'bs.modal';
    const EVENT_KEY = `.${DATA_KEY}`;
    const DATA_API_KEY = '.data-api';
    const ESCAPE_KEY = 'Escape';
    const EVENT_HIDE = `hide${EVENT_KEY}`;
    const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`;
    const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
    const EVENT_SHOW = `show${EVENT_KEY}`;
    const EVENT_SHOWN = `shown${EVENT_KEY}`;
    const EVENT_RESIZE = `resize${EVENT_KEY}`;
    const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`;
    const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`;
    const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`;
    const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
    const CLASS_NAME_OPEN = 'modal-open';
    const CLASS_NAME_FADE = 'fade';
    const CLASS_NAME_SHOW = 'show';
    const CLASS_NAME_STATIC = 'modal-static';
    const OPEN_SELECTOR = '.modal.show';
    const SELECTOR_DIALOG = '.modal-dialog';
    const SELECTOR_MODAL_BODY = '.modal-body';
    const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="modal"]';
    const Default = {
      backdrop: true,
      focus: true,
      keyboard: true,
    };
    const DefaultType = {
      backdrop: '(boolean|string)',
      focus: 'boolean',
      keyboard: 'boolean',
    };

    /**
     * Class definition
     */

    class Modal extends BaseComponent {
      constructor(element, config) {
        super(element, config);
        this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);
        this._backdrop = this._initializeBackDrop();
        this._focustrap = this._initializeFocusTrap();
        this._isShown = false;
        this._isTransitioning = false;
        this._scrollBar = new ScrollBarHelper();
        this._addEventListeners();
      }

      // Getters
      static get Default() {
        return Default;
      }
      static get DefaultType() {
        return DefaultType;
      }
      static get NAME() {
        return NAME;
      }

      // Public
      toggle(relatedTarget) {
        return this._isShown ? this.hide() : this.show(relatedTarget);
      }
      show(relatedTarget) {
        if (this._isShown || this._isTransitioning) {
          return;
        }
        const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {
          relatedTarget,
        });
        if (showEvent.defaultPrevented) {
          return;
        }
        this._isShown = true;
        this._isTransitioning = true;
        this._scrollBar.hide();
        document.body.classList.add(CLASS_NAME_OPEN);
        this._adjustDialog();
        this._backdrop.show(() => this._showElement(relatedTarget));
      }
      hide() {
        if (!this._isShown || this._isTransitioning) {
          return;
        }
        const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);
        if (hideEvent.defaultPrevented) {
          return;
        }
        this._isShown = false;
        this._isTransitioning = true;
        this._focustrap.deactivate();
        this._element.classList.remove(CLASS_NAME_SHOW);
        this._queueCallback(() => this._hideModal(), this._element, this._isAnimated());
      }
      dispose() {
        EventHandler.off(window, EVENT_KEY);
        EventHandler.off(this._dialog, EVENT_KEY);
        this._backdrop.dispose();
        this._focustrap.deactivate();
        super.dispose();
      }
      handleUpdate() {
        this._adjustDialog();
      }

      // Private
      _initializeBackDrop() {
        return new Backdrop({
          isVisible: Boolean(this._config.backdrop),
          // 'static' option will be translated to true, and booleans will keep their value,
          isAnimated: this._isAnimated(),
        });
      }
      _initializeFocusTrap() {
        return new FocusTrap({
          trapElement: this._element,
        });
      }
      _showElement(relatedTarget) {
        // try to append dynamic modal
        if (!document.body.contains(this._element)) {
          document.body.append(this._element);
        }
        this._element.style.display = 'block';
        this._element.removeAttribute('aria-hidden');
        this._element.setAttribute('aria-modal', true);
        this._element.setAttribute('role', 'dialog');
        this._element.scrollTop = 0;
        const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);
        if (modalBody) {
          modalBody.scrollTop = 0;
        }
        index_js.reflow(this._element);
        this._element.classList.add(CLASS_NAME_SHOW);
        const transitionComplete = () => {
          if (this._config.focus) {
            this._focustrap.activate();
          }
          this._isTransitioning = false;
          EventHandler.trigger(this._element, EVENT_SHOWN, {
            relatedTarget,
          });
        };
        this._queueCallback(transitionComplete, this._dialog, this._isAnimated());
      }
      _addEventListeners() {
        EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, (event) => {
          if (event.key !== ESCAPE_KEY) {
            return;
          }
          if (this._config.keyboard) {
            this.hide();
            return;
          }
          this._triggerBackdropTransition();
        });
        EventHandler.on(window, EVENT_RESIZE, () => {
          if (this._isShown && !this._isTransitioning) {
            this._adjustDialog();
          }
        });
        EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, (event) => {
          // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks
          EventHandler.one(this._element, EVENT_CLICK_DISMISS, (event2) => {
            if (this._element !== event.target || this._element !== event2.target) {
              return;
            }
            if (this._config.backdrop === 'static') {
              this._triggerBackdropTransition();
              return;
            }
            if (this._config.backdrop) {
              this.hide();
            }
          });
        });
      }
      _hideModal() {
        this._element.style.display = 'none';
        this._element.setAttribute('aria-hidden', true);
        this._element.removeAttribute('aria-modal');
        this._element.removeAttribute('role');
        this._isTransitioning = false;
        this._backdrop.hide(() => {
          document.body.classList.remove(CLASS_NAME_OPEN);
          this._resetAdjustments();
          this._scrollBar.reset();
          EventHandler.trigger(this._element, EVENT_HIDDEN);
        });
      }
      _isAnimated() {
        return this._element.classList.contains(CLASS_NAME_FADE);
      }
      _triggerBackdropTransition() {
        const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
        if (hideEvent.defaultPrevented) {
          return;
        }
        const isModalOverflowing =
          this._element.scrollHeight > document.documentElement.clientHeight;
        const initialOverflowY = this._element.style.overflowY;
        // return if the following background transition hasn't yet completed
        if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {
          return;
        }
        if (!isModalOverflowing) {
          this._element.style.overflowY = 'hidden';
        }
        this._element.classList.add(CLASS_NAME_STATIC);
        this._queueCallback(() => {
          this._element.classList.remove(CLASS_NAME_STATIC);
          this._queueCallback(() => {
            this._element.style.overflowY = initialOverflowY;
          }, this._dialog);
        }, this._dialog);
        this._element.focus();
      }

      /**
       * The following methods are used to handle overflowing modals
       */

      _adjustDialog() {
        const isModalOverflowing =
          this._element.scrollHeight > document.documentElement.clientHeight;
        const scrollbarWidth = this._scrollBar.getWidth();
        const isBodyOverflowing = scrollbarWidth > 0;
        if (isBodyOverflowing && !isModalOverflowing) {
          const property = index_js.isRTL() ? 'paddingLeft' : 'paddingRight';
          this._element.style[property] = `${scrollbarWidth}px`;
        }
        if (!isBodyOverflowing && isModalOverflowing) {
          const property = index_js.isRTL() ? 'paddingRight' : 'paddingLeft';
          this._element.style[property] = `${scrollbarWidth}px`;
        }
      }
      _resetAdjustments() {
        this._element.style.paddingLeft = '';
        this._element.style.paddingRight = '';
      }

      // Static
      static jQueryInterface(config, relatedTarget) {
        return this.each(function () {
          const data = Modal.getOrCreateInstance(this, config);
          if (typeof config !== 'string') {
            return;
          }
          if (typeof data[config] === 'undefined') {
            throw new TypeError(`No method named "${config}"`);
          }
          data[config](relatedTarget);
        });
      }
    }

    /**
     * Data API implementation
     */

    EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
      const target = SelectorEngine.getElementFromSelector(this);
      if (['A', 'AREA'].includes(this.tagName)) {
        event.preventDefault();
      }
      EventHandler.one(target, EVENT_SHOW, (showEvent) => {
        if (showEvent.defaultPrevented) {
          // only register focus restorer if modal will actually get shown
          return;
        }
        EventHandler.one(target, EVENT_HIDDEN, () => {
          if (index_js.isVisible(this)) {
            this.focus();
          }
        });
      });

      // avoid conflict when clicking modal toggler while another one is open
      const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);
      if (alreadyOpen) {
        Modal.getInstance(alreadyOpen).hide();
      }
      const data = Modal.getOrCreateInstance(target);
      data.toggle(this);
    });
    componentFunctions_js.enableDismissTrigger(Modal);

    /**
     * jQuery
     */

    index_js.defineJQueryPlugin(Modal);

    return Modal;
  }
);
//# sourceMappingURL=modal.js.map


================================================
FILE: src/js/bootstrap/dist/offcanvas.js
================================================
/*!
 * Bootstrap offcanvas.js v5.3.3 (https://getbootstrap.com/)
 * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 */
(function (global, factory) {
  typeof exports === 'object' && typeof module !== 'undefined'
    ? (module.exports = factory(
        require('./base-component.js'),
        require('./dom/event-handler.js'),
        require('./dom/selector-engine.js'),
        require('./util/backdrop.js'),
        require('./util/component-functions.js'),
        require('./util/focustrap.js'),
        require('./util/index.js'),
        require('./util/scrollbar.js')
      ))
    : typeof define === 'function' && define.amd
    ? define(
        [
          './base-component',
          './dom/event-handler',
          './dom/selector-engine',
          './util/backdrop',
          './util/component-functions',
          './util/focustrap',
          './util/index',
          './util/scrollbar',
        ],
        factory
      )
    : ((global = typeof globalThis !== 'undefined' ? globalThis : global || self),
      (global.Offcanvas = factory(
        global.BaseComponent,
        global.EventHandler,
        global.SelectorEngine,
        global.Backdrop,
        global.ComponentFunctions,
        global.Focustrap,
        global.Index,
        global.Scrollbar
      )));
})(
  this,
  function (
    BaseComponent,
    EventHandler,
    SelectorEngine,
    Backdrop,
    componentFunctions_js,
    FocusTrap,
    index_js,
    ScrollBarHelper
  ) {
    'use strict';

    /**
     * --------------------------------------------------------------------------
     * Bootstrap offcanvas.js
     * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
     * --------------------------------------------------------------------------
     */

    /**
     * Constants
     */

    const NAME = 'offcanvas';
    const DATA_KEY = 'bs.offcanvas';
    const EVENT_KEY = `.${DATA_KEY}`;
    const DATA_API_KEY = '.data-api';
    const EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`;
    const ESCAPE_KEY = 'Escape';
    const CLASS_NAME_SHOW = 'show';
    const CLASS_NAME_SHOWING = 'showing';
    const CLASS_NAME_HIDING = 'hiding';
    const CLASS_NAME_BACKDROP = 'offcanvas-backdrop';
    const OPEN_SELECTOR = '.offcanvas.show';
    const EVENT_SHOW = `show${EVENT_KEY}`;
    const EVENT_SHOWN = `shown${EVENT_KEY}`;
    const EVENT_HIDE = `hide${EVENT_KEY}`;
    const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`;
    const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
    const EVENT_RESIZE = `resize${EVENT_KEY}`;
    const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
    const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`;
    const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="offcanvas"]';
    const Default = {
      backdrop: true,
      keyboard: true,
      scroll: false,
    };
    const DefaultType = {
      backdrop: '(boolean|string)',
      keyboard: 'boolean',
      scroll: 'boolean',
    };

    /**
     * Class definition
     */

    class Offcanvas extends BaseComponent {
      constructor(element, config) {
        super(element, config);
        this._isShown = false;
        this._backdrop = this._initializeBackDrop();
        this._focustrap = this._initializeFocusTrap();
        this._addEventListeners();
      }

      // Getters
      static get Default() {
        return Default;
      }
      static get DefaultType() {
        return DefaultType;
      }
      static get NAME() {
        return NAME;
      }

      // Public
      toggle(relatedTarget) {
        return this._isShown ? this.hide() : this.show(relatedTarget);
      }
      show(relatedTarget) {
        if (this._isShown) {
          return;
        }
        const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {
          relatedTarget,
        });
        if (showEvent.defaultPrevented) {
          return;
        }
        this._isShown = true;
        this._backdrop.show();
        if (!this._config.scroll) {
          new ScrollBarHelper().hide();
        }
        this._element.setAttribute('aria-modal', true);
        this._element.setAttribute('role', 'dialog');
        this._element.classList.add(CLASS_NAME_SHOWING);
        const completeCallBack = () => {
          if (!this._config.scroll || this._config.backdrop) {
            this._focustrap.activate();
          }
          this._element.classList.add(CLASS_NAME_SHOW);
          this._element.classList.remove(CLASS_NAME_SHOWING);
          EventHandler.trigger(this._element, EVENT_SHOWN, {
            relatedTarget,
          });
        };
        this._queueCallback(completeCallBack, this._element, true);
      }
      hide() {
        if (!this._isShown) {
          return;
        }
        const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);
        if (hideEvent.defaultPrevented) {
          return;
        }
        this._focustrap.deactivate();
        this._element.blur();
        this._isShown = false;
        this._element.classList.add(CLASS_NAME_HIDING);
        this._backdrop.hide();
        const completeCallback = () => {
          this._element.classList.remove(CLASS_NAME_SHOW, CLASS_NAME_HIDING);
          this._element.removeAttribute('aria-modal');
          this._element.removeAttribute('role');
          if (!this._config.scroll) {
            new ScrollBarHelper().reset();
          }
          EventHandler.trigger(this._element, EVENT_HIDDEN);
        };
        this._queueCallback(completeCallback, this._element, true);
      }
      dispose() {
        this._backdrop.dispose();
        this._focustrap.deactivate();
        super.dispose();
      }

      // Private
      _initializeBackDrop() {
        const clickCallback = () => {
          if (this._config.backdrop === 'static') {
            EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
            return;
          }
          this.hide();
        };

        // 'static' option will be translated to true, and booleans will keep their value
        const isVisible = Boolean(this._config.backdrop);
        return new Backdrop({
          className: CLASS_NAME_BACKDROP,
          isVisible,
          isAnimated: true,
          rootElement: this._element.parentNode,
          clickCallback: isVisible ? clickCallback : null,
        });
      }
      _initializeFocusTrap() {
        return new FocusTrap({
          trapElement: this._element,
        });
      }
      _addEventListeners() {
        EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, (event) => {
          if (event.key !== ESCAPE_KEY) {
            return;
          }
          if (this._config.keyboard) {
            this.hide();
            return;
          }
          EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
        });
      }

      // Static
      static jQueryInterface(config) {
        return this.each(function () {
          const data = Offcanvas.getOrCreateInstance(this, config);
          if (typeof config !== 'string') {
            return;
          }
          if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
            throw new TypeError(`No method named "${config}"`);
          }
          data[config](this);
        });
      }
    }

    /**
     * Data API implementation
     */

    EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
      const target = SelectorEngine.getElementFromSelector(this);
      if (['A', 'AREA'].includes(this.tagName)) {
        event.preventDefault();
      }
      if (index_js.isDisabled(this)) {
        return;
      }
      EventHandler.one(target, EVENT_HIDDEN, () => {
        // focus on trigger when it is closed
        if (index_js.isVisible(this)) {
          this.focus();
        }
      });

      // avoid conflict when clicking a toggler of an offcanvas, while another is open
      const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);
      if (alreadyOpen && alreadyOpen !== target) {
        Offcanvas.getInstance(alreadyOpen).hide();
      }
      const data = Offcanvas.getOrCreateInstance(target);
      data.toggle(this);
    });
    EventHandler.on(window, EVENT_LOAD_DATA_API, () => {
      for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {
        Offcanvas.getOrCreateInstance(selector).show();
      }
    });
    EventHandler.on(window, EVENT_RESIZE, () => {
      for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {
        if (getComputedStyle(element).position !== 'fixed') {
          Offcanvas.getOrCreateInstance(element).hide();
        }
      }
    });
    componentFunctions_js.enableDismissTrigger(Offcanvas);

    /**
     * jQuery
     */

    index_js.defineJQueryPlugin(Offcanvas);

    return Offcanvas;
  }
);
//# sourceMappingURL=offcanvas.js.map


================================================
FILE: src/js/bootstrap/dist/popover.js
================================================
/*!
 * Bootstrap popover.js v5.3.3 (https://getbootstrap.com/)
 * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 */
(function (global, factory) {
  typeof exports === 'object' && typeof module !== 'undefined'
    ? (module.exports = factory(require('./tooltip.js'), require('./util/index.js')))
    : typeof define === 'function' && define.amd
    ? define(['./tooltip', './util/index'], factory)
    : ((global = typeof globalThis !== 'undefined' ? globalThis : global || self),
      (global.Popover = factory(global.Tooltip, global.Index)));
})(this, function (Tooltip, index_js) {
  'use strict';

  /**
   * --------------------------------------------------------------------------
   * Bootstrap popover.js
   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
   * --------------------------------------------------------------------------
   */

  /**
   * Constants
   */

  const NAME = 'popover';
  const SELECTOR_TITLE = '.popover-header';
  const SELECTOR_CONTENT = '.popover-body';
  const Default = {
    ...Tooltip.Default,
    content: '',
    offset: [0, 8],
    placement: 'right',
    template:
      '<div class="popover" role="tooltip">' +
      '<div class="popover-arrow"></div>' +
      '<h3 class="popover-header"></h3>' +
      '<div class="popover-body"></div>' +
      '</div>',
    trigger: 'click',
  };
  const DefaultType = {
    ...Tooltip.DefaultType,
    content: '(null|string|element|function)',
  };

  /**
   * Class definition
   */

  class Popover extends Tooltip {
    // Getters
    static get Default() {
      return Default;
    }
    static get DefaultType() {
      return DefaultType;
    }
    static get NAME() {
      return NAME;
    }

    // Overrides
    _isWithContent() {
      return this._getTitle() || this._getContent();
    }

    // Private
    _getContentForTemplate() {
      return {
        [SELECTOR_TITLE]: this._getTitle(),
        [SELECTOR_CONTENT]: this._getContent(),
      };
    }
    _getContent() {
      return this._resolvePossibleFunction(this._config.content);
    }

    // Static
    static jQueryInterface(config) {
      return this.each(function () {
        const data = Popover.getOrCreateInstance(this, config);
        if (typeof config !== 'string') {
          return;
        }
        if (typeof data[config] === 'undefined') {
          throw new TypeError(`No method named "${config}"`);
        }
        data[config]();
      });
    }
  }

  /**
   * jQuery
   */

  index_js.defineJQueryPlugin(Popover);

  return Popover;
});
//# sourceMappingURL=popover.js.map


================================================
FILE: src/js/bootstrap/dist/scrollspy.js
================================================
/*!
 * Bootstrap scrollspy.js v5.3.3 (https://getbootstrap.com/)
 * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 */
(function (global, factory) {
  typeof exports === 'object' && typeof module !== 'undefined'
    ? (module.exports = factory(
        require('./base-component.js'),
        require('./dom/event-handler.js'),
        require('./dom/selector-engine.js'),
        require('./util/index.js')
      ))
    : typeof define === 'function' && define.amd
    ? define(
        ['./base-component', './dom/event-handler', './dom/selector-engine', './util/index'],
        factory
      )
    : ((global = typeof globalThis !== 'undefined' ? globalThis : global || self),
      (global.Scrollspy = factory(
        global.BaseComponent,
        global.EventHandler,
        global.SelectorEngine,
        global.Index
      )));
})(this, function (BaseComponent, EventHandler, SelectorEngine, index_js) {
  'use strict';

  /**
   * --------------------------------------------------------------------------
   * Bootstrap scrollspy.js
   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
   * --------------------------------------------------------------------------
   */

  /**
   * Constants
   */

  const NAME = 'scrollspy';
  const DATA_KEY = 'bs.scrollspy';
  const EVENT_KEY = `.${DATA_KEY}`;
  const DATA_API_KEY = '.data-api';
  const EVENT_ACTIVATE = `activate${EVENT_KEY}`;
  const EVENT_CLICK = `click${EVENT_KEY}`;
  const EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`;
  const CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';
  const CLASS_NAME_ACTIVE = 'active';
  const SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]';
  const SELECTOR_TARGET_LINKS = '[href]';
  const SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';
  const SELECTOR_NAV_LINKS = '.nav-link';
  const SELECTOR_NAV_ITEMS = '.nav-item';
  const SELECTOR_LIST_ITEMS = '.list-group-item';
  const SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`;
  const SELECTOR_DROPDOWN = '.dropdown';
  const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';
  const Default = {
    offset: null,
    // TODO: v6 @deprecated, keep it for backwards compatibility reasons
    rootMargin: '0px 0px -25%',
    smoothScroll: false,
    target: null,
    threshold: [0.1, 0.5, 1],
  };
  const DefaultType = {
    offset: '(number|null)',
    // TODO v6 @deprecated, keep it for backwards compatibility reasons
    rootMargin: 'string',
    smoothScroll: 'boolean',
    target: 'element',
    threshold: 'array',
  };

  /**
   * Class definition
   */

  class ScrollSpy extends BaseComponent {
    constructor(element, config) {
      super(element, config);

      // this._element is the observablesContainer and config.target the menu links wrapper
      this._targetLinks = new Map();
      this._observableSections = new Map();
      this._rootElement =
        getComputedStyle(this._element).overflowY === 'visible' ? null : this._element;
      this._activeTarget = null;
      this._observer = null;
      this._previousScrollData = {
        visibleEntryTop: 0,
        parentScrollTop: 0,
      };
      this.refresh(); // initialize
    }

    // Getters
    static get Default() {
      return Default;
    }
    static get DefaultType() {
      return DefaultType;
    }
    static get NAME() {
      return NAME;
    }

    // Public
    refresh() {
      this._initializeTargetsAndObservables();
      this._maybeEnableSmoothScroll();
      if (this._observer) {
        this._observer.disconnect();
      } else {
        this._observer = this._getNewObserver();
      }
      for (const section of this._observableSections.values()) {
        this._observer.observe(section);
      }
    }
    dispose() {
      this._observer.disconnect();
      super.dispose();
    }

    // Private
    _configAfterMerge(config) {
      // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case
      config.target = index_js.getElement(config.target) || document.body;

      // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only
      config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin;
      if (typeof config.threshold === 'string') {
        config.threshold = config.threshold.split(',').map((value) => Number.parseFloat(value));
      }
      return config;
    }
    _maybeEnableSmoothScroll() {
      if (!this._config.smoothScroll) {
        return;
      }

      // unregister any previous listeners
      EventHandler.off(this._config.target, EVENT_CLICK);
      EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, (event) => {
        const observableSection = this._observableSections.get(event.target.hash);
        if (observableSection) {
          event.preventDefault();
          const root = this._rootElement || window;
          const height = observableSection.offsetTop - this._element.offsetTop;
          if (root.scrollTo) {
            root.scrollTo({
              top: height,
              behavior: 'smooth',
            });
            return;
          }

          // Chrome 60 doesn't support `scrollTo`
          root.scrollTop = height;
        }
      });
    }
    _getNewObserver() {
      const options = {
        root: this._rootElement,
        threshold: this._config.threshold,
        rootMargin: this._config.rootMargin,
      };
      return new IntersectionObserver((entries) => this._observerCallback(entries), options);
    }

    // The logic of selection
    _observerCallback(entries) {
      const targetElement = (entry) => this._targetLinks.get(`#${entry.target.id}`);
      const activate = (entry) => {
        this._previousScrollData.visibleEntryTop = entry.target.offsetTop;
        this._process(targetElement(entry));
      };
      const parentScrollTop = (this._rootElement || document.documentElement).scrollTop;
      const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop;
      this._previousScrollData.parentScrollTop = parentScrollTop;
      for (const entry of entries) {
        if (!entry.isIntersecting) {
          this._activeTarget = null;
          this._clearActiveClass(targetElement(entry));
          continue;
        }
        const entryIsLowerThanPrevious =
          entry.target.offsetTop >= this._previousScrollData.visibleEntryTop;
        // if we are scrolling down, pick the bigger offsetTop
        if (userScrollsDown && entryIsLowerThanPrevious) {
          activate(entry);
          // if parent isn't scrolled, let's keep the first visible item, breaking the iteration
          if (!parentScrollTop) {
            return;
          }
          continue;
        }

        // if we are scrolling up, pick the smallest offsetTop
        if (!userScrollsDown && !entryIsLowerThanPrevious) {
          activate(entry);
        }
      }
    }
    _initializeTargetsAndObservables() {
      this._targetLinks = new Map();
      this._observableSections = new Map();
      const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target);
      for (const anchor of targetLinks) {
        // ensure that the anchor has an id and is not disabled
        if (!anchor.hash || index_js.isDisabled(anchor)) {
          continue;
        }
        const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element);

        // ensure that the observableSection exists & is visible
        if (index_js.isVisible(observableSection)) {
          this._targetLinks.set(decodeURI(anchor.hash), anchor);
          this._observableSections.set(anchor.hash, observableSection);
        }
      }
    }
    _process(target) {
      if (this._activeTarget === target) {
        return;
      }
      this._clearActiveClass(this._config.target);
      this._activeTarget = target;
      target.classList.add(CLASS_NAME_ACTIVE);
      this._activateParents(target);
      EventHandler.trigger(this._element, EVENT_ACTIVATE, {
        relatedTarget: target,
      });
    }
    _activateParents(target) {
      // Activate dropdown parents
      if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {
        SelectorEngine.findOne(
          SELECTOR_DROPDOWN_TOGGLE,
          target.closest(SELECTOR_DROPDOWN)
        ).classList.add(CLASS_NAME_ACTIVE);
        return;
      }
      for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {
        // Set triggered links parents as active
        // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
        for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {
          item.classList.add(CLASS_NAME_ACTIVE);
        }
      }
    }
    _clearActiveClass(parent) {
      parent.classList.remove(CLASS_NAME_ACTIVE);
      const activeNodes = SelectorEngine.find(
        `${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE}`,
        parent
      );
      for (const node of activeNodes) {
        node.classList.remove(CLASS_NAME_ACTIVE);
      }
    }

    // Static
    static jQueryInterface(config) {
      return this.each(function () {
        const data = ScrollSpy.getOrCreateInstance(this, config);
        if (typeof config !== 'string') {
          return;
        }
        if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
          throw new TypeError(`No method named "${config}"`);
        }
        data[config]();
      });
    }
  }

  /**
   * Data API implementation
   */

  EventHandler.on(window, EVENT_LOAD_DATA_API, () => {
    for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {
      ScrollSpy.getOrCreateInstance(spy);
    }
  });

  /**
   * jQuery
   */

  index_js.defineJQueryPlugin(ScrollSpy);

  return ScrollSpy;
});
//# sourceMappingURL=scrollspy.js.map


================================================
FILE: src/js/bootstrap/dist/tab.js
================================================
/*!
 * Bootstrap tab.js v5.3.3 (https://getbootstrap.com/)
 * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 */
(function (global, factory) {
  typeof exports === 'object' && typeof module !== 'undefined'
    ? (module.exports = factory(
        require('./base-component.js'),
        require('./dom/event-handler.js'),
        require('./dom/selector-engine.js'),
        require('./util/index.js')
      ))
    : typeof define === 'function' && define.amd
    ? define(
        ['./base-component', './dom/event-handler', './dom/selector-engine', './util/index'],
        factory
      )
    : ((global = typeof globalThis !== 'undefined' ? globalThis : global || self),
      (global.Tab = factory(
        global.BaseComponent,
        global.EventHandler,
        global.SelectorEngine,
        global.Index
      )));
})(this, function (BaseComponent, EventHandler, SelectorEngine, index_js) {
  'use strict';

  /**
   * --------------------------------------------------------------------------
   * Bootstrap tab.js
   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
   * --------------------------------------------------------------------------
   */

  /**
   * Constants
   */

  const NAME = 'tab';
  const DATA_KEY = 'bs.tab';
  const EVENT_KEY = `.${DATA_KEY}`;
  const EVENT_HIDE = `hide${EVENT_KEY}`;
  const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
  const EVENT_SHOW = `show${EVENT_KEY}`;
  const EVENT_SHOWN = `shown${EVENT_KEY}`;
  const EVENT_CLICK_DATA_API = `click${EVENT_KEY}`;
  const EVENT_KEYDOWN = `keydown${EVENT_KEY}`;
  const EVENT_LOAD_DATA_API = `load${EVENT_KEY}`;
  const ARROW_LEFT_KEY = 'ArrowLeft';
  const ARROW_RIGHT_KEY = 'ArrowRight';
  const ARROW_UP_KEY = 'ArrowUp';
  const ARROW_DOWN_KEY = 'ArrowDown';
  const HOME_KEY = 'Home';
  const END_KEY = 'End';
  const CLASS_NAME_ACTIVE = 'active';
  const CLASS_NAME_FADE = 'fade';
  const CLASS_NAME_SHOW = 'show';
  const CLASS_DROPDOWN = 'dropdown';
  const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';
  const SELECTOR_DROPDOWN_MENU = '.dropdown-menu';
  const NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`;
  const SELECTOR_TAB_PANEL = '.list-group, .nav, [role="tablist"]';
  const SELECTOR_OUTER = '.nav-item, .list-group-item';
  const SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role="tab"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`;
  const SELECTOR_DATA_TOGGLE =
    '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]'; // TODO: could only be `tab` in v6
  const SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`;
  const SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle="tab"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="pill"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="list"]`;

  /**
   * Class definition
   */

  class Tab extends BaseComponent {
    constructor(element) {
      super(element);
      this._parent = this._element.closest(SELECTOR_TAB_PANEL);
      if (!this._parent) {
        return;
        // TODO: should throw exception in v6
        // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`)
      }

      // Set up initial aria attributes
      this._setInitialAttributes(this._parent, this._getChildren());
      EventHandler.on(this._element, EVENT_KEYDOWN, (event) => this._keydown(event));
    }

    // Getters
    static get NAME() {
      return NAME;
    }

    // Public
    show() {
      // Shows this elem and deactivate the active sibling if exists
      const innerElem = this._element;
      if (this._elemIsActive(innerElem)) {
        return;
      }

      // Search for active tab on same parent to deactivate it
      const active = this._getActiveElem();
      const hideEvent = active
        ? EventHandler.trigger(active, EVENT_HIDE, {
            relatedTarget: innerElem,
          })
        : null;
      const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW, {
        relatedTarget: active,
      });
      if (showEvent.defaultPrevented || (hideEvent && hideEvent.defaultPrevented)) {
        return;
      }
      this._deactivate(active, innerElem);
      this._activate(innerElem, active);
    }

    // Private
    _activate(element, relatedElem) {
      if (!element) {
        return;
      }
      element.classList.add(CLASS_NAME_ACTIVE);
      this._activate(SelectorEngine.getElementFromSelector(element)); // Search and activate/show the proper section

      const complete = () => {
        if (element.getAttribute('role') !== 'tab') {
          element.classList.add(CLASS_NAME_SHOW);
          return;
        }
        element.removeAttribute('tabindex');
        element.setAttribute('aria-selected', true);
        this._toggleDropDown(element, true);
        EventHandler.trigger(element, EVENT_SHOWN, {
          relatedTarget: relatedElem,
        });
      };
      this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE));
    }
    _deactivate(element, relatedElem) {
      if (!element) {
        return;
      }
      element.classList.remove(CLASS_NAME_ACTIVE);
      element.blur();
      this._deactivate(SelectorEngine.getElementFromSelector(element)); // Search and deactivate the shown section too

      const complete = () => {
        if (element.getAttribute('role') !== 'tab') {
          element.classList.remove(CLASS_NAME_SHOW);
          return;
        }
        element.setAttribute('aria-selected', false);
        element.setAttribute('tabindex', '-1');
        this._toggleDropDown(element, false);
        EventHandler.trigger(element, EVENT_HIDDEN, {
          relatedTarget: relatedElem,
        });
      };
      this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE));
    }
    _keydown(event) {
      if (
        ![
          ARROW_LEFT_KEY,
          ARROW_RIGHT_KEY,
          ARROW_UP_KEY,
          ARROW_DOWN_KEY,
          HOME_KEY,
          END_KEY,
        ].includes(event.key)
      ) {
        return;
      }
      event.stopPropagation(); // stopPropagation/preventDefault both added to support up/down keys without scrolling the page
      event.preventDefault();
      const children = this._getChildren().filter((element) => !index_js.isDisabled(element));
      let nextActiveElement;
      if ([HOME_KEY, END_KEY].includes(event.key)) {
        nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1];
      } else {
        const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key);
        nextActiveElement = index_js.getNextActiveElement(children, event.target, isNext, true);
      }
      if (nextActiveElement) {
        nextActiveElement.focus({
          preventScroll: true,
        });
        Tab.getOrCreateInstance(nextActiveElement).show();
      }
    }
    _getChildren() {
      // collection of inner elements
      return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent);
    }
    _getActiveElem() {
      return this._getChildren().find((child) => this._elemIsActive(child)) || null;
    }
    _setInitialAttributes(parent, children) {
      this._setAttributeIfNotExists(parent, 'role', 'tablist');
      for (const child of children) {
        this._setInitialAttributesOnChild(child);
      }
    }
    _setInitialAttributesOnChild(child) {
      child = this._getInnerElement(child);
      const isActive = this._elemIsActive(child);
      const outerElem = this._getOuterElement(child);
      child.setAttribute('aria-selected', isActive);
      if (outerElem !== child) {
        this._setAttributeIfNotExists(outerElem, 'role', 'presentation');
      }
      if (!isActive) {
        child.setAttribute('tabindex', '-1');
      }
      this._setAttributeIfNotExists(child, 'role', 'tab');

      // set attributes to the related panel too
      this._setInitialAttributesOnTargetPanel(child);
    }
    _setInitialAttributesOnTargetPanel(child) {
      const target = SelectorEngine.getElementFromSelector(child);
      if (!target) {
        return;
      }
      this._setAttributeIfNotExists(target, 'role', 'tabpanel');
      if (child.id) {
        this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`);
      }
    }
    _toggleDropDown(element, open) {
      const outerElem = this._getOuterElement(element);
      if (!outerElem.classList.contains(CLASS_DROPDOWN)) {
        return;
      }
      const toggle = (selector, className) => {
        const element = SelectorEngine.findOne(selector, outerElem);
        if (element) {
          element.classList.toggle(className, open);
        }
      };
      toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE);
      toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW);
      outerElem.setAttribute('aria-expanded', open);
    }
    _setAttributeIfNotExists(element, attribute, value) {
      if (!element.hasAttribute(attribute)) {
        element.setAttribute(attribute, value);
      }
    }
    _elemIsActive(elem) {
      return elem.classList.contains(CLASS_NAME_ACTIVE);
    }

    // Try to get the inner element (usually the .nav-link)
    _getInnerElement(elem) {
      return elem.matches(SELECTOR_INNER_ELEM)
        ? elem
        : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem);
    }

    // Try to get the outer element (usually the .nav-item)
    _getOuterElement(elem) {
      return elem.closest(SELECTOR_OUTER) || elem;
    }

    // Static
    static jQueryInterface(config) {
      return this.each(function () {
        const data = Tab.getOrCreateInstance(this);
        if (typeof config !== 'string') {
          return;
        }
        if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
          throw new TypeError(`No method named "${config}"`);
        }
        data[config]();
      });
    }
  }

  /**
   * Data API implementation
   */

  EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
    if (['A', 'AREA'].includes(this.tagName)) {
      event.preventDefault();
    }
    if (index_js.isDisabled(this)) {
      return;
    }
    Tab.getOrCreateInstance(this).show();
  });

  /**
   * Initialize on focus
   */
  EventHandler.on(window, EVENT_LOAD_DATA_API, () => {
    for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {
      Tab.getOrCreateInstance(element);
    }
  });
  /**
   * jQuery
   */

  index_js.defineJQueryPlugin(Tab);

  return Tab;
});
//# sourceMappingURL=tab.js.map


================================================
FILE: src/js/bootstrap/dist/toast.js
================================================
/*!
 * Bootstrap toast.js v5.3.3 (https://getbootstrap.com/)
 * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 */
(function (global, factory) {
  typeof exports === 'object' && typeof module !== 'undefined'
    ? (module.exports = factory(
        require('./base-component.js'),
        require('./dom/event-handler.js'),
        require('./util/component-functions.js'),
        require('./util/index.js')
      ))
    : typeof define === 'function' && define.amd
    ? define(
        ['./base-component', './dom/event-handler', './util/component-functions', './util/index'],
        factory
      )
    : ((global = typeof globalThis !== 'undefined' ? globalThis : global || self),
      (global.Toast = factory(
        global.BaseComponent,
        global.EventHandler,
        global.ComponentFunctions,
        global.Index
      )));
})(this, function (BaseComponent, EventHandler, componentFunctions_js, index_js) {
  'use strict';

  /**
   * --------------------------------------------------------------------------
   * Bootstrap toast.js
   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
   * --------------------------------------------------------------------------
   */

  /**
   * Constants
   */

  const NAME = 'toast';
  const DATA_KEY = 'bs.toast';
  const EVENT_KEY = `.${DATA_KEY}`;
  const EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`;
  const EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`;
  const EVENT_FOCUSIN = `focusin${EVENT_KEY}`;
  const EVENT_FOCUSOUT = `focusout${EVENT_KEY}`;
  const EVENT_HIDE = `hide${EVENT_KEY}`;
  const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
  const EVENT_SHOW = `show${EVENT_KEY}`;
  const EVENT_SHOWN = `shown${EVENT_KEY}`;
  const CLASS_NAME_FADE = 'fade';
  const CLASS_NAME_HIDE = 'hide'; // @deprecated - kept here only for backwards compatibility
  const CLASS_NAME_SHOW = 'show';
  const CLASS_NAME_SHOWING = 'showing';
  const DefaultType = {
    animation: 'boolean',
    autohide: 'boolean',
    delay: 'number',
  };
  const Default = {
    animation: true,
    autohide: true,
    delay: 5000,
  };

  /**
   * Class definition
   */

  class Toast extends BaseComponent {
    constructor(element, config) {
      super(element, config);
      this._timeout = null;
      this._hasMouseInteraction = false;
      this._hasKeyboardInteraction = false;
      this._setListeners();
    }

    // Getters
    static get Default() {
      return Default;
    }
    static get DefaultType() {
      return DefaultType;
    }
    static get NAME() {
      return NAME;
    }

    // Public
    show() {
      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW);
      if (showEvent.defaultPrevented) {
        return;
      }
      this._clearTimeout();
      if (this._config.animation) {
        this._element.classList.add(CLASS_NAME_FADE);
      }
      const complete = () => {
        this._element.classList.remove(CLASS_NAME_SHOWING);
        EventHandler.trigger(this._element, EVENT_SHOWN);
        this._maybeScheduleHide();
      };
      this._element.classList.remove(CLASS_NAME_HIDE); // @deprecated
      index_js.reflow(this._element);
      this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING);
      this._queueCallback(complete, this._element, this._config.animation);
    }
    hide() {
      if (!this.isShown()) {
        return;
      }
      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);
      if (hideEvent.defaultPrevented) {
        return;
      }
      const complete = () => {
        this._element.classList.add(CLASS_NAME_HIDE); // @deprecated
        this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW);
        EventHandler.trigger(this._element, EVENT_HIDDEN);
      };
      this._element.classList.add(CLASS_NAME_SHOWING);
      this._queueCallback(complete, this._element, this._config.animation);
    }
    dispose() {
      this._clearTimeout();
      if (this.isShown()) {
        this._element.classList.remove(CLASS_NAME_SHOW);
      }
      super.dispose();
    }
    isShown() {
      return this._element.classList.contains(CLASS_NAME_SHOW);
    }

    // Private

    _maybeScheduleHide() {
      if (!this._config.autohide) {
        return;
      }
      if (this._hasMouseInteraction || this._hasKeyboardInteraction) {
        return;
      }
      this._timeout = setTimeout(() => {
        this.hide();
      }, this._config.delay);
    }
    _onInteraction(event, isInteracting) {
      switch (event.type) {
        case 'mouseover':
        case 'mouseout': {
          this._hasMouseInteraction = isInteracting;
          break;
        }
        case 'focusin':
        case 'focusout': {
          this._hasKeyboardInteraction = isInteracting;
          break;
        }
      }
      if (isInteracting) {
        this._clearTimeout();
        return;
      }
      const nextElement = event.relatedTarget;
      if (this._element === nextElement || this._element.contains(nextElement)) {
        return;
      }
      this._maybeScheduleHide();
    }
    _setListeners() {
      EventHandler.on(this._element, EVENT_MOUSEOVER, (event) => this._onInteraction(event, true));
      EventHandler.on(this._element, EVENT_MOUSEOUT, (event) => this._onInteraction(event, false));
      EventHandler.on(this._element, EVENT_FOCUSIN, (event) => this._onInteraction(event, true));
      EventHandler.on(this._element, EVENT_FOCUSOUT, (event) => this._onInteraction(event, false));
    }
    _clearTimeout() {
      clearTimeout(this._timeout);
      this._timeout = null;
    }

    // Static
    static jQueryInterface(config) {
      return this.each(function () {
        const data = Toast.getOrCreateInstance(this, config);
        if (typeof config === 'string') {
          if (typeof data[config] === 'undefined') {
            throw new TypeError(`No method named "${config}"`);
          }
          data[config](this);
        }
      });
    }
  }

  /**
   * Data API implementation
   */

  componentFunctions_js.enableDismissTrigger(Toast);

  /**
   * jQuery
   */

  index_js.defineJQueryPlugin(Toast);

  return Toast;
});
//# sourceMappingURL=toast.js.map


================================================
FILE: src/js/bootstrap/dist/tooltip.js
================================================
/*!
 * Bootstrap tooltip.js v5.3.3 (https://getbootstrap.com/)
 * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 */
(function (global, factory) {
  typeof exports === 'object' && typeof module !== 'undefined'
    ? (module.exports = factory(
        require('@popperjs/core'),
        require('./base-component.js'),
        require('./dom/event-handler.js'),
        require('./dom/manipulator.js'),
        require('./util/index.js'),
        require('./util/sanitizer.js'),
        require('./util/template-factory.js')
      ))
    : typeof define === 'function' && define.amd
    ? define(
        [
          '@popperjs/core',
          './base-component',
          './dom/event-handler',
          './dom/manipulator',
          './util/index',
          './util/sanitizer',
          './util/template-factory',
        ],
        factory
      )
    : ((global = typeof globalThis !== 'undefined' ? globalThis : global || self),
      (global.Tooltip = factory(
        global['@popperjs/core'],
        global.BaseComponent,
        global.EventHandler,
        global.Manipulator,
        global.Index,
        global.Sanitizer,
        global.TemplateFactory
      )));
})(
  this,
  function (
    Popper,
    BaseComponent,
    EventHandler,
    Manipulator,
    index_js,
    sanitizer_js,
    TemplateFactory
  ) {
    'use strict';

    function _interopNamespaceDefault(e) {
      const n = Object.create(null, { [Symbol.toStringTag]: { value: 'Module' } });
      if (e) {
        for (const k in e) {
          if (k !== 'default') {
            const d = Object.getOwnPropertyDescriptor(e, k);
            Object.defineProperty(
              n,
              k,
              d.get
                ? d
                : {
                    enumerable: true,
                    get: () => e[k],
                  }
            );
          }
        }
      }
      n.default = e;
      return Object.freeze(n);
    }

    const Popper__namespace = /*#__PURE__*/ _interopNamespaceDefault(Popper);

    /**
     * --------------------------------------------------------------------------
     * Bootstrap tooltip.js
     * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
     * --------------------------------------------------------------------------
     */

    /**
     * Constants
     */

    const NAME = 'tooltip';
    const DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);
    const CLASS_NAME_FADE = 'fade';
    const CLASS_NAME_MODAL = 'modal';
    const CLASS_NAME_SHOW = 'show';
    const SELECTOR_TOOLTIP_INNER = '.tooltip-inner';
    const SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;
    const EVENT_MODAL_HIDE = 'hide.bs.modal';
    const TRIGGER_HOVER = 'hover';
    const TRIGGER_FOCUS = 'focus';
    const TRIGGER_CLICK = 'click';
    const TRIGGER_MANUAL = 'manual';
    const EVENT_HIDE = 'hide';
    const EVENT_HIDDEN = 'hidden';
    const EVENT_SHOW = 'show';
    const EVENT_SHOWN = 'shown';
    const EVENT_INSERTED = 'inserted';
    const EVENT_CLICK = 'click';
    const EVENT_FOCUSIN = 'focusin';
    const EVENT_FOCUSOUT = 'focusout';
    const EVENT_MOUSEENTER = 'mouseenter';
    const EVENT_MOUSELEAVE = 'mouseleave';
    const AttachmentMap = {
      AUTO: 'auto',
      TOP: 'top',
      RIGHT: index_js.isRTL() ? 'left' : 'right',
      BOTTOM: 'bottom',
      LEFT: index_js.isRTL() ? 'right' : 'left',
    };
    const Default = {
      allowList: sanitizer_js.DefaultAllowlist,
      animation: true,
      boundary: 'clippingParents',
      container: false,
      customClass: '',
      delay: 0,
      fallbackPlacements: ['top', 'right', 'bottom', 'left'],
      html: false,
      offset: [0, 6],
      placement: 'top',
      popperConfig: null,
      sanitize: true,
      sanitizeFn: null,
      selector: false,
      template:
        '<div class="tooltip" role="tooltip">' +
        '<div class="tooltip-arrow"></div>' +
        '<div class="tooltip-inner"></div>' +
        '</div>',
      title: '',
      trigger: 'hover focus',
    };
    const DefaultType = {
      allowList: 'object',
      animation: 'boolean',
      boundary: '(string|element)',
      container: '(string|element|boolean)',
      customClass: '(string|function)',
      delay: '(number|object)',
      fallbackPlacements: 'array',
      html: 'boolean',
      offset: '(array|string|function)',
      placement: '(string|function)',
      popperConfig: '(null|object|function)',
      sanitize: 'boolean',
      sanitizeFn: '(null|function)',
      selector: '(string|boolean)',
      template: 'string',
      title: '(string|element|function)',
      trigger: 'string',
    };

    /**
     * Class definition
     */

    class Tooltip extends BaseComponent {
      constructor(element, config) {
        if (typeof Popper__namespace === 'undefined') {
          throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");
        }
        super(element, config);

        // Private
        this._isEnabled = true;
        this._timeout = 0;
        this._isHovered = null;
        this._activeTrigger = {};
        this._popper = null;
        this._templateFactory = null;
        this._newContent = null;

        // Protected
        this.tip = null;
        this._setListeners();
        if (!this._config.selector) {
          this._fixTitle();
        }
      }

      // Getters
      static get Default() {
        return Default;
      }
      static get DefaultType() {
        return DefaultType;
      }
      static get NAME() {
        return NAME;
      }

      // Public
      enable() {
        this._isEnabled = true;
      }
      disable() {
        this._isEnabled = false;
      }
      toggleEnabled() {
        this._isEnabled = !this._isEnabled;
      }
      toggle() {
        if (!this._isEnabled) {
          return;
        }
        this._activeTrigger.click = !this._activeTrigger.click;
        if (this._isShown()) {
          this._leave();
          return;
        }
        this._enter();
      }
      dispose() {
        clearTimeout(this._timeout);
        EventHandler.off(
          this._element.closest(SELECTOR_MODAL),
          EVENT_MODAL_HIDE,
          this._hideModalHandler
        );
        if (this._element.getAttribute('data-bs-original-title')) {
          this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'));
        }
        this._disposePopper();
        super.dispose();
      }
      show() {
        if (this._element.style.display === 'none') {
          throw new Error('Please use show on visible elements');
        }
        if (!(this._isWithContent() && this._isEnabled)) {
          return;
        }
        const showEvent = EventHandler.trigger(
          this._element,
          this.constructor.eventName(EVENT_SHOW)
        );
        const shadowRoot = index_js.findShadowRoot(this._element);
        const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(
          this._element
        );
        if (showEvent.defaultPrevented || !isInTheDom) {
          return;
        }

        // TODO: v6 remove this or make it optional
        this._disposePopper();
        const tip = this._getTipElement();
        this._element.setAttribute('aria-describedby', tip.getAttribute('id'));
        const { container } = this._config;
        if (!this._element.ownerDocument.documentElement.contains(this.tip)) {
          container.append(tip);
          EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED));
        }
        this._popper = this._createPopper(tip);
        tip.classList.add(CLASS_NAME_SHOW);

        // If this is a touch-enabled device we add extra
        // empty mouseover listeners to the body's immediate children;
        // only needed because of broken event delegation on iOS
        // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
        if ('ontouchstart' in document.documentElement) {
          for (const element of [].concat(...document.body.children)) {
            EventHandler.on(element, 'mouseover', index_js.noop);
          }
        }
        const complete = () => {
          EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN));
          if (this._isHovered === false) {
            this._leave();
          }
          this._isHovered = false;
        };
        this._queueCallback(complete, this.tip, this._isAnimated());
      }
      hide() {
        if (!this._isShown()) {
          return;
        }
        const hideEvent = EventHandler.trigger(
          this._element,
          this.constructor.eventName(EVENT_HIDE)
        );
        if (hideEvent.defaultPrevented) {
          return;
        }
        const tip = this._getTipElement();
        tip.classList.remove(CLASS_NAME_SHOW);

        // If this is a touch-enabled device we remove the extra
        // empty mouseover listeners we added for iOS support
        if ('ontouchstart' in document.documentElement) {
          for (const element of [].concat(...document.body.children)) {
            EventHandler.off(element, 'mouseover', index_js.noop);
          }
        }
        this._activeTrigger[TRIGGER_CLICK] = false;
        this._activeTrigger[TRIGGER_FOCUS] = false;
        this._activeTrigger[TRIGGER_HOVER] = false;
        this._isHovered = null; // it is a trick to support manual triggering

        const complete = () => {
          if (this._isWithActiveTrigger()) {
            return;
          }
          if (!this._isHovered) {
            this._disposePopper();
          }
          this._element.removeAttribute('aria-describedby');
          EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN));
        };
        this._queueCallback(complete, this.tip, this._isAnimated());
      }
      update() {
        if (this._popper) {
          this._popper.update();
        }
      }

      // Protected
      _isWithContent() {
        return Boolean(this._getTitle());
      }
      _getTipElement() {
        if (!this.tip) {
          this.tip = this._createTipElement(this._newContent || this._getContentForTemplate());
        }
        return this.tip;
      }
      _createTipElement(content) {
        const tip = this._getTemplateFactory(content).toHtml();

        // TODO: remove this check in v6
        if (!tip) {
          return null;
        }
        tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW);
        // TODO: v6 the following can be achieved with CSS only
        tip.classList.add(`bs-${this.constructor.NAME}-auto`);
        const tipId = index_js.getUID(this.constructor.NAME).toString();
        tip.setAttribute('id', tipId);
        if (this._isAnimated()) {
          tip.classList.add(CLASS_NAME_FADE);
        }
        return tip;
      }
      setContent(content) {
        this._newContent = content;
        if (this._isShown()) {
          this._disposePopper();
          this.show();
        }
      }
      _getTemplateFactory(content) {
        if (this._templateFactory) {
          this._templateFactory.changeContent(content);
        } else {
          this._templateFactory = new TemplateFactory({
            ...this._config,
            // the `content` var has to be after `this._config`
            // to override config.content in case of popover
            content,
            extraClass: this._resolvePossibleFunction(this._config.customClass),
          });
        }
        return this._templateFactory;
      }
      _getContentForTemplate() {
        return {
          [SELECTOR_TOOLTIP_INNER]: this._getTitle(),
        };
      }
      _getTitle() {
        return (
          this._resolvePossibleFunction(this._config.title) ||
          this._element.getAttribute('data-bs-original-title')
        );
      }

      // Private
      _initializeOnDelegatedTarget(event) {
        return this.constructor.getOrCreateInstance(
          event.delegateTarget,
          this._getDelegateConfig()
        );
      }
      _isAnimated() {
        return this._config.animation || (this.tip && this.tip.classList.contains(CLASS_NAME_FADE));
      }
      _isShown() {
        return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW);
      }
      _createPopper(tip) {
        const placement = index_js.execute(this._config.placement, [this, tip, this._element]);
        const attachment = AttachmentMap[placement.toUpperCase()];
        return Popper__namespace.createPopper(
          this._element,
          tip,
          this._getPopperConfig(attachment)
        );
      }
      _getOffset() {
        const { offset } = this._config;
        if (typeof offset === 'string') {
          return offset.split(',').map((value) => Number.parseInt(value, 10));
        }
        if (typeof offset === 'function') {
          return (popperData) => offset(popperData, this._element);
        }
        return offset;
      }
      _resolvePossibleFunction(arg) {
        return index_js.execute(arg, [this._element]);
      }
      _getPopperConfig(attachment) {
        const defaultBsPopperConfig = {
          placement: attachment,
          modifiers: [
            {
              name: 'flip',
              options: {
                fallbackPlacements: this._config.fallbackPlacements,
              },
            },
            {
              name: 'offset',
              options: {
                offset: this._getOffset(),
              },
            },
            {
              name: 'preventOverflow',
              options: {
                boundary: this._config.boundary,
              },
            },
            {
              name: 'arrow',
              options: {
                element: `.${this.constructor.NAME}-arrow`,
              },
            },
            {
              name: 'preSetPlacement',
              enabled: true,
              phase: 'beforeMain',
              fn: (data) => {
                // Pre-set Popper's placement attribute in order to read the arrow sizes properly.
                // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement
                this._getTipElement().setAttribute('data-popper-placement', data.state.placement);
              },
            },
          ],
        };
        return {
          ...defaultBsPopperConfig,
          ...index_js.execute(this._config.popperConfig, [defaultBsPopperConfig]),
        };
      }
      _setListeners() {
        const triggers = this._config.trigger.split(' ');
        for (const trigger of triggers) {
          if (trigger === 'click') {
            EventHandler.on(
              this._element,
              this.constructor.eventName(EVENT_CLICK),
              this._config.selector,
              (event) => {
                const context = this._initializeOnDelegatedTarget(event);
                context.toggle();
              }
            );
          } else if (trigger !== TRIGGER_MANUAL) {
            const eventIn =
              trigger === TRIGGER_HOVER
                ? this.constructor.eventName(EVENT_MOUSEENTER)
                : this.constructor.eventName(EVENT_FOCUSIN);
            const eventOut =
              trigger === TRIGGER_HOVER
                ? this.constructor.eventName(EVENT_MOUSELEAVE)
                : this.constructor.eventName(EVENT_FOCUSOUT);
            EventHandler.on(this._element, eventIn, this._config.selector, (event) => {
              const context = this._initializeOnDelegatedTarget(event);
              context._activeTrigger[
                event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER
              ] = true;
              context._enter();
            });
            EventHandler.on(this._element, eventOut, this._config.selector, (event) => {
              const context = this._initializeOnDelegatedTarget(event);
              context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] =
                context._element.contains(event.relatedTarget);
              context._leave();
            });
          }
        }
        this._hideModalHandler = () => {
          if (this._element) {
            this.hide();
          }
        };
        EventHandler.on(
          this._element.closest(SELECTOR_MODAL),
          EVENT_MODAL_HIDE,
          this._hideModalHandler
        );
      }
      _fixTitle() {
        const title = this._element.getAttribute('title');
        if (!title) {
          return;
        }
        if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {
          this._element.setAttribute('aria-label', title);
        }
        this._element.setAttribute('data-bs-original-title', title); // DO NOT USE IT. Is only for backwards compatibility
        this._element.removeAttribute('title');
      }
      _enter() {
        if (this._isShown() || this._isHovered) {
          this._isHovered = true;
          return;
        }
        this._isHovered = true;
        this._setTimeout(() => {
          if (this._isHovered) {
            this.show();
          }
        }, this._config.delay.show);
      }
      _leave() {
        if (this._isWithActiveTrigger()) {
          return;
        }
        this._isHovered = false;
        this._setTimeout(() => {
          if (!this._isHovered) {
            this.hide();
          }
        }, this._config.delay.hide);
      }
      _setTimeout(handler, timeout) {
        clearTimeout(this._timeout);
        this._timeout = setTimeout(handler, timeout);
      }
      _isWithActiveTrigger() {
        return Object.values(this._activeTrigger).includes(true);
      }
      _getConfig(config) {
        const dataAttributes = Manipulator.getDataAttributes(this._element);
        for (const dataAttribute of Object.keys(dataAttributes)) {
          if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {
            delete dataAttributes[dataAttribute];
          }
        }
        config = {
          ...dataAttributes,
          ...(typeof config === 'object' && config ? config : {}),
        };
        config = this._mergeConfigObj(config);
        config = this._configAfterMerge(config);
        this._typeCheckConfig(config);
        return config;
      }
      _configAfterMerge(config) {
        config.container =
          config.container === false ? document.body : index_js.getElement(config.container);
        if (typeof config.delay === 'number') {
          config.delay = {
            show: config.delay,
            hide: config.delay,
          };
        }
        if (typeof config.title === 'number') {
          config.title = config.title.toString();
        }
        if (typeof config.content === 'number') {
          config.content = config.content.toString();
        }
        return config;
      }
      _getDelegateConfig() {
        const config = {};
        for (const [key, value] of Object.entries(this._config)) {
          if (this.constructor.Default[key] !== value) {
            config[key] = value;
          }
        }
        config.selector = false;
        config.trigger = 'manual';

        // In the future can be replaced with:
        // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])
        // `Object.fromEntries(keysWithDifferentValues)`
        return config;
      }
      _disposePopper() {
        if (this._popper) {
          this._popper.destroy();
          this._popper = null;
        }
        if (this.tip) {
          this.tip.remove();
          this.tip = null;
        }
      }

      // Static
      static jQueryInterface(config) {
        return this.each(function () {
          const data = Tooltip.getOrCreateInstance(this, config);
          if (typeof config !== 'string') {
            return;
          }
          if (typeof data[config] === 'undefined') {
            throw new TypeError(`No method named "${config}"`);
          }
          data[config]();
        });
      }
    }

    /**
     * jQuery
     */

    index_js.defineJQueryPlugin(Tooltip);

    return Tooltip;
  }
);
//# sourceMappingURL=tooltip.js.map


================================================
FILE: src/js/bootstrap/dist/util/backdrop.js
================================================
/*!
 * Bootstrap backdrop.js v5.3.3 (https://getbootstrap.com/)
 * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 */
(function (global, factory) {
  typeof exports === 'object' && typeof module !== 'undefined'
    ? (module.exports = factory(
        require('../dom/event-handler.js'),
        require('./config.js'),
        require('./index.js')
      ))
    : typeof define === 'function' && define.amd
    ? define(['../dom/event-handler', './config', './index'], factory)
    : ((global = typeof globalThis !== 'undefined' ? globalThis : global || self),
      (global.Backdrop = factory(global.EventHandler, global.Config, global.Index)));
})(this, function (EventHandler, Config, index_js) {
  'use strict';

  /**
   * --------------------------------------------------------------------------
   * Bootstrap util/backdrop.js
   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
   * --------------------------------------------------------------------------
   */

  /**
   * Constants
   */

  const NAME = 'backdrop';
  const CLASS_NAME_FADE = 'fade';
  const CLASS_NAME_SHOW = 'show';
  const EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`;
  const Default = {
    className: 'modal-backdrop',
    clickCallback: null,
    isAnimated: false,
    isVisible: true,
    // if false, we use the backdrop helper without adding any element to the dom
    rootElement: 'body', // give the choice to place backdrop under different elements
  };
  const DefaultType = {
    className: 'string',
    clickCallback: '(function|null)',
    isAnimated: 'boolean',
    isVisible: 'boolean',
    rootElement: '(element|string)',
  };

  /**
   * Class definition
   */

  class Backdrop extends Config {
    constructor(config) {
      super();
      this._config = this._getConfig(config);
      this._isAppended = false;
      this._element = null;
    }

    // Getters
    static get Default() {
      return Default;
    }
    static get DefaultType() {
      return DefaultType;
    }
    static get NAME() {
      return NAME;
    }

    // Public
    show(callback) {
      if (!this._config.isVisible) {
        index_js.execute(callback);
        return;
      }
      this._append();
      const element = this._getElement();
      if (this._config.isAnimated) {
        index_js.reflow(element);
      }
      element.classList.add(CLASS_NAME_SHOW);
      this._emulateAnimation(() => {
        index_js.execute(callback);
      });
    }
    hide(callback) {
      if (!this._config.isVisible) {
        index_js.execute(callback);
        return;
      }
      this._getElement().classList.remove(CLASS_NAME_SHOW);
      this._emulateAnimation(() => {
        this.dispose();
        index_js.execute(callback);
      });
    }
    dispose() {
      if (!this._isAppended) {
        return;
      }
      EventHandler.off(this._element, EVENT_MOUSEDOWN);
      this._element.remove();
      this._isAppended = false;
    }

    // Private
    _getElement() {
      if (!this._element) {
        const backdrop = document.createElement('div');
        backdrop.className = this._config.className;
        if (this._config.isAnimated) {
          backdrop.classList.add(CLASS_NAME_FADE);
        }
        this._element = backdrop;
      }
      return this._element;
    }
    _configAfterMerge(config) {
      // use getElement() with the default "body" to get a fresh Element on each instantiation
      config.rootElement = index_js.getElement(config.rootElement);
      return config;
    }
    _append() {
      if (this._isAppended) {
        return;
      }
      const element = this._getElement();
      this._config.rootElement.append(element);
      EventHandler.on(element, EVENT_MOUSEDOWN, () => {
        index_js.execute(this._config.clickCallback);
      });
      this._isAppended = true;
    }
    _emulateAnimation(callback) {
      index_js.executeAfterTransition(callback, this._getElement(), this._config.isAnimated);
    }
  }

  return Backdrop;
});
//# sourceMappingURL=backdrop.js.map


================================================
FILE: src/js/bootstrap/dist/util/component-functions.js
================================================
/*!
 * Bootstrap component-functions.js v5.3.3 (https://getbootstrap.com/)
 * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 */
(function (global, factory) {
  typeof exports === 'object' && typeof module !== 'undefined'
    ? factory(
        exports,
        require('../dom/event-handler.js'),
        require('../dom/selector-engine.js'),
        require('./index.js')
      )
    : typeof define === 'function' && define.amd
    ? define(['exports', '../dom/event-handler', '../dom/selector-engine', './index'], factory)
    : ((global = typeof globalThis !== 'undefined' ? globalThis : global || self),
      factory(
        (global.ComponentFunctions = {}),
        global.EventHandler,
        global.SelectorEngine,
        global.Index
      ));
})(this, function (exports, EventHandler, SelectorEngine, index_js) {
  'use strict';

  /**
   * --------------------------------------------------------------------------
   * Bootstrap util/component-functions.js
   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
   * --------------------------------------------------------------------------
   */

  const enableDismissTrigger = (component, method = 'hide') => {
    const clickEvent = `click.dismiss${component.EVENT_KEY}`;
    const name = component.NAME;
    EventHandler.on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function (event) {
      if (['A', 'AREA'].includes(this.tagName)) {
        event.preventDefault();
      }
      if (index_js.isDisabled(this)) {
        return;
      }
      const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`);
      const instance = component.getOrCreateInstance(target);

      // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method
      instance[method]();
    });
  };

  exports.enableDismissTrigger = enableDismissTrigger;

  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
});
//# sourceMappingURL=component-functions.js.map


================================================
FILE: src/js/bootstrap/dist/util/config.js
================================================
/*!
 * Bootstrap config.js v5.3.3 (https://getbootstrap.com/)
 * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 */
(function (global, factory) {
  typeof exports === 'object' && typeof module !== 'undefined
Download .txt
gitextract_2w7zpwz8/

├── .gitignore
├── License.txt
├── README.md
├── README.txt
├── index.html
├── package.json
└── src/
    ├── js/
    │   ├── autoinit/
    │   │   ├── callbacks/
    │   │   │   └── free.js
    │   │   ├── index.free.js
    │   │   ├── init.js
    │   │   └── initSelectors/
    │   │       └── free.js
    │   ├── bootstrap/
    │   │   ├── dist/
    │   │   │   ├── alert.js
    │   │   │   ├── base-component.js
    │   │   │   ├── button.js
    │   │   │   ├── carousel.js
    │   │   │   ├── collapse.js
    │   │   │   ├── dom/
    │   │   │   │   ├── data.js
    │   │   │   │   ├── event-handler.js
    │   │   │   │   ├── manipulator.js
    │   │   │   │   └── selector-engine.js
    │   │   │   ├── dropdown.js
    │   │   │   ├── modal.js
    │   │   │   ├── offcanvas.js
    │   │   │   ├── popover.js
    │   │   │   ├── scrollspy.js
    │   │   │   ├── tab.js
    │   │   │   ├── toast.js
    │   │   │   ├── tooltip.js
    │   │   │   └── util/
    │   │   │       ├── backdrop.js
    │   │   │       ├── component-functions.js
    │   │   │       ├── config.js
    │   │   │       ├── focustrap.js
    │   │   │       ├── index.js
    │   │   │       ├── sanitizer.js
    │   │   │       ├── scrollbar.js
    │   │   │       ├── swipe.js
    │   │   │       └── template-factory.js
    │   │   ├── mdb-prefix/
    │   │   │   ├── alert.js
    │   │   │   ├── base-component.js
    │   │   │   ├── button.js
    │   │   │   ├── carousel.js
    │   │   │   ├── collapse.js
    │   │   │   ├── dom/
    │   │   │   │   ├── data.js
    │   │   │   │   ├── event-handler.js
    │   │   │   │   ├── manipulator.js
    │   │   │   │   └── selector-engine.js
    │   │   │   ├── dropdown.js
    │   │   │   ├── modal.js
    │   │   │   ├── offcanvas.js
    │   │   │   ├── popover.js
    │   │   │   ├── scrollspy.js
    │   │   │   ├── tab.js
    │   │   │   ├── toast.js
    │   │   │   ├── tooltip.js
    │   │   │   └── util/
    │   │   │       ├── backdrop.js
    │   │   │       ├── component-functions.js
    │   │   │       ├── config.js
    │   │   │       ├── focustrap.js
    │   │   │       ├── index.js
    │   │   │       ├── sanitizer.js
    │   │   │       ├── scrollbar.js
    │   │   │       ├── swipe.js
    │   │   │       └── template-factory.js
    │   │   └── src/
    │   │       ├── alert.js
    │   │       ├── base-component.js
    │   │       ├── button.js
    │   │       ├── carousel.js
    │   │       ├── collapse.js
    │   │       ├── dom/
    │   │       │   ├── data.js
    │   │       │   ├── event-handler.js
    │   │       │   ├── manipulator.js
    │   │       │   └── selector-engine.js
    │   │       ├── dropdown.js
    │   │       ├── modal.js
    │   │       ├── offcanvas.js
    │   │       ├── popover.js
    │   │       ├── scrollspy.js
    │   │       ├── tab.js
    │   │       ├── toast.js
    │   │       ├── tooltip.js
    │   │       └── util/
    │   │           ├── backdrop.js
    │   │           ├── component-functions.js
    │   │           ├── config.js
    │   │           ├── focustrap.js
    │   │           ├── index.js
    │   │           ├── sanitizer.js
    │   │           ├── scrollbar.js
    │   │           ├── swipe.js
    │   │           └── template-factory.js
    │   ├── free/
    │   │   ├── alert.js
    │   │   ├── base-component.js
    │   │   ├── button.js
    │   │   ├── carousel.js
    │   │   ├── collapse.js
    │   │   ├── dropdown.js
    │   │   ├── input.js
    │   │   ├── modal.js
    │   │   ├── popover.js
    │   │   ├── range.js
    │   │   ├── ripple.js
    │   │   ├── scrollspy.js
    │   │   ├── tab.js
    │   │   ├── toast.js
    │   │   └── tooltip.js
    │   ├── mdb/
    │   │   ├── dom/
    │   │   │   ├── data.js
    │   │   │   ├── event-handler.js
    │   │   │   ├── manipulator.js
    │   │   │   └── selector-engine.js
    │   │   ├── perfect-scrollbar/
    │   │   │   ├── handlers/
    │   │   │   │   ├── click-rail.js
    │   │   │   │   ├── drag-thumb.js
    │   │   │   │   ├── keyboard.js
    │   │   │   │   ├── mouse-wheel.js
    │   │   │   │   └── touch.js
    │   │   │   ├── index.js
    │   │   │   ├── lib/
    │   │   │   │   ├── class-names.js
    │   │   │   │   ├── css.js
    │   │   │   │   ├── dom.js
    │   │   │   │   ├── event-manager.js
    │   │   │   │   └── util.js
    │   │   │   ├── process-scroll-diff.js
    │   │   │   └── update-geometry.js
    │   │   └── util/
    │   │       ├── focusTrap.js
    │   │       ├── index.js
    │   │       ├── keycodes.js
    │   │       ├── sanitizer.js
    │   │       ├── scrollbar.js
    │   │       ├── stack.js
    │   │       └── touch/
    │   │           ├── index.js
    │   │           ├── swipe.js
    │   │           └── touchUtil.js
    │   ├── mdb.free.es.js
    │   └── mdb.free.umd.js
    └── scss/
        ├── bootstrap/
        │   ├── _accordion.scss
        │   ├── _alert.scss
        │   ├── _badge.scss
        │   ├── _breadcrumb.scss
        │   ├── _button-group.scss
        │   ├── _buttons.scss
        │   ├── _card.scss
        │   ├── _carousel.scss
        │   ├── _close.scss
        │   ├── _containers.scss
        │   ├── _dropdown.scss
        │   ├── _forms.scss
        │   ├── _functions.scss
        │   ├── _grid.scss
        │   ├── _helpers.scss
        │   ├── _images.scss
        │   ├── _list-group.scss
        │   ├── _maps.scss
        │   ├── _mixins.scss
        │   ├── _modal.scss
        │   ├── _nav.scss
        │   ├── _navbar.scss
        │   ├── _offcanvas.scss
        │   ├── _pagination.scss
        │   ├── _placeholders.scss
        │   ├── _popover.scss
        │   ├── _progress.scss
        │   ├── _reboot.scss
        │   ├── _root.scss
        │   ├── _spinners.scss
        │   ├── _tables.scss
        │   ├── _toasts.scss
        │   ├── _tooltip.scss
        │   ├── _transitions.scss
        │   ├── _type.scss
        │   ├── _utilities.scss
        │   ├── _variables-dark.scss
        │   ├── _variables.scss
        │   ├── bootstrap-grid.scss
        │   ├── bootstrap-reboot.scss
        │   ├── bootstrap-utilities.scss
        │   ├── bootstrap.scss
        │   ├── forms/
        │   │   ├── _floating-labels.scss
        │   │   ├── _form-check.scss
        │   │   ├── _form-control.scss
        │   │   ├── _form-range.scss
        │   │   ├── _form-select.scss
        │   │   ├── _form-text.scss
        │   │   ├── _input-group.scss
        │   │   ├── _labels.scss
        │   │   └── _validation.scss
        │   ├── helpers/
        │   │   ├── _clearfix.scss
        │   │   ├── _color-bg.scss
        │   │   ├── _colored-links.scss
        │   │   ├── _focus-ring.scss
        │   │   ├── _icon-link.scss
        │   │   ├── _position.scss
        │   │   ├── _ratio.scss
        │   │   ├── _stacks.scss
        │   │   ├── _stretched-link.scss
        │   │   ├── _text-truncation.scss
        │   │   ├── _visually-hidden.scss
        │   │   └── _vr.scss
        │   ├── mixins/
        │   │   ├── _alert.scss
        │   │   ├── _backdrop.scss
        │   │   ├── _banner.scss
        │   │   ├── _border-radius.scss
        │   │   ├── _box-shadow.scss
        │   │   ├── _breakpoints.scss
        │   │   ├── _buttons.scss
        │   │   ├── _caret.scss
        │   │   ├── _clearfix.scss
        │   │   ├── _color-mode.scss
        │   │   ├── _color-scheme.scss
        │   │   ├── _container.scss
        │   │   ├── _deprecate.scss
        │   │   ├── _forms.scss
        │   │   ├── _gradients.scss
        │   │   ├── _grid.scss
        │   │   ├── _image.scss
        │   │   ├── _list-group.scss
        │   │   ├── _lists.scss
        │   │   ├── _pagination.scss
        │   │   ├── _reset-text.scss
        │   │   ├── _resize.scss
        │   │   ├── _table-variants.scss
        │   │   ├── _text-truncate.scss
        │   │   ├── _transition.scss
        │   │   ├── _utilities.scss
        │   │   └── _visually-hidden.scss
        │   ├── utilities/
        │   │   └── _api.scss
        │   └── vendor/
        │       └── _rfs.scss
        ├── bootstrap-rtl-fix/
        │   ├── _accordion.scss
        │   ├── _alert.scss
        │   ├── _badge.scss
        │   ├── _breadcrumb.scss
        │   ├── _button-group.scss
        │   ├── _buttons.scss
        │   ├── _card.scss
        │   ├── _carousel.scss
        │   ├── _close.scss
        │   ├── _containers.scss
        │   ├── _dropdown.scss
        │   ├── _forms.scss
        │   ├── _functions.scss
        │   ├── _grid.scss
        │   ├── _helpers.scss
        │   ├── _images.scss
        │   ├── _list-group.scss
        │   ├── _maps.scss
        │   ├── _mixins.scss
        │   ├── _modal.scss
        │   ├── _nav.scss
        │   ├── _navbar.scss
        │   ├── _offcanvas.scss
        │   ├── _pagination.scss
        │   ├── _placeholders.scss
        │   ├── _popover.scss
        │   ├── _progress.scss
        │   ├── _reboot.scss
        │   ├── _root.scss
        │   ├── _spinners.scss
        │   ├── _tables.scss
        │   ├── _toasts.scss
        │   ├── _tooltip.scss
        │   ├── _transitions.scss
        │   ├── _type.scss
        │   ├── _utilities.scss
        │   ├── _variables-dark.scss
        │   ├── _variables.scss
        │   ├── bootstrap-grid.scss
        │   ├── bootstrap-reboot.scss
        │   ├── bootstrap-utilities.scss
        │   ├── bootstrap.scss
        │   ├── forms/
        │   │   ├── _floating-labels.scss
        │   │   ├── _form-check.scss
        │   │   ├── _form-control.scss
        │   │   ├── _form-range.scss
        │   │   ├── _form-select.scss
        │   │   ├── _form-text.scss
        │   │   ├── _input-group.scss
        │   │   ├── _labels.scss
        │   │   └── _validation.scss
        │   ├── helpers/
        │   │   ├── _clearfix.scss
        │   │   ├── _color-bg.scss
        │   │   ├── _colored-links.scss
        │   │   ├── _focus-ring.scss
        │   │   ├── _icon-link.scss
        │   │   ├── _position.scss
        │   │   ├── _ratio.scss
        │   │   ├── _stacks.scss
        │   │   ├── _stretched-link.scss
        │   │   ├── _text-truncation.scss
        │   │   ├── _visually-hidden.scss
        │   │   └── _vr.scss
        │   ├── mixins/
        │   │   ├── _alert.scss
        │   │   ├── _backdrop.scss
        │   │   ├── _banner.scss
        │   │   ├── _border-radius.scss
        │   │   ├── _box-shadow.scss
        │   │   ├── _breakpoints.scss
        │   │   ├── _buttons.scss
        │   │   ├── _caret.scss
        │   │   ├── _clearfix.scss
        │   │   ├── _color-mode.scss
        │   │   ├── _color-scheme.scss
        │   │   ├── _container.scss
        │   │   ├── _deprecate.scss
        │   │   ├── _forms.scss
        │   │   ├── _gradients.scss
        │   │   ├── _grid.scss
        │   │   ├── _image.scss
        │   │   ├── _list-group.scss
        │   │   ├── _lists.scss
        │   │   ├── _pagination.scss
        │   │   ├── _reset-text.scss
        │   │   ├── _resize.scss
        │   │   ├── _table-variants.scss
        │   │   ├── _text-truncate.scss
        │   │   ├── _transition.scss
        │   │   ├── _utilities.scss
        │   │   └── _visually-hidden.scss
        │   ├── utilities/
        │   │   └── _api.scss
        │   └── vendor/
        │       └── _rfs.scss
        ├── custom/
        │   ├── _styles.scss
        │   └── _variables.scss
        ├── free/
        │   ├── _accordion.scss
        │   ├── _alert.scss
        │   ├── _badge.scss
        │   ├── _breadcrumb.scss
        │   ├── _button-group.scss
        │   ├── _buttons.scss
        │   ├── _card.scss
        │   ├── _carousel.scss
        │   ├── _close.scss
        │   ├── _colors.scss
        │   ├── _deprecated.scss
        │   ├── _dropdown.scss
        │   ├── _flag.scss
        │   ├── _functions.scss
        │   ├── _images.scss
        │   ├── _list-group.scss
        │   ├── _mixins.scss
        │   ├── _modal.scss
        │   ├── _nav.scss
        │   ├── _navbar.scss
        │   ├── _pagination.scss
        │   ├── _popover.scss
        │   ├── _progress.scss
        │   ├── _range.scss
        │   ├── _reboot.scss
        │   ├── _ripple.scss
        │   ├── _root.scss
        │   ├── _scrollspy.scss
        │   ├── _shadows.scss
        │   ├── _tables.scss
        │   ├── _toasts.scss
        │   ├── _tooltip.scss
        │   ├── _type.scss
        │   ├── _utilities.scss
        │   ├── _variables-dark.scss
        │   ├── _variables.scss
        │   ├── forms/
        │   │   ├── _form-check.scss
        │   │   ├── _form-control.scss
        │   │   ├── _form-file.scss
        │   │   ├── _form-range.scss
        │   │   ├── _form-select.scss
        │   │   ├── _input-group.scss
        │   │   └── _validation.scss
        │   └── mixins/
        │       ├── _buttons.scss
        │       ├── _color-mode.scss
        │       ├── _ripple.scss
        │       └── _table-variants.scss
        └── mdb.free.scss
Download .txt
SYMBOL INDEX (1940 symbols across 115 files)

FILE: src/js/autoinit/init.js
  method set (line 7) | set(componentName) {
  method get (line 10) | get(componentName) {
  method set (line 17) | set(componentName) {
  method get (line 20) | get(componentName) {
  class InitMDB (line 76) | class InitMDB {
    method constructor (line 77) | constructor(defaultInitSelectors) {

FILE: src/js/bootstrap/dist/alert.js
  class Alert (line 52) | class Alert extends BaseComponent {
    method NAME (line 54) | static get NAME() {
    method close (line 59) | close() {
    method _destroyElement (line 70) | _destroyElement() {
    method jQueryInterface (line 77) | static jQueryInterface(config) {

FILE: src/js/bootstrap/dist/base-component.js
  class BaseComponent (line 43) | class BaseComponent extends Config {
    method constructor (line 44) | constructor(element, config) {
    method dispose (line 56) | dispose() {
    method _queueCallback (line 63) | _queueCallback(callback, element, isAnimated = true) {
    method _getConfig (line 66) | _getConfig(config) {
    method getInstance (line 74) | static getInstance(element) {
    method getOrCreateInstance (line 77) | static getOrCreateInstance(element, config = {}) {
    method VERSION (line 82) | static get VERSION() {
    method DATA_KEY (line 85) | static get DATA_KEY() {
    method EVENT_KEY (line 88) | static get EVENT_KEY() {
    method eventName (line 91) | static eventName(name) {

FILE: src/js/bootstrap/dist/button.js
  class Button (line 43) | class Button extends BaseComponent {
    method NAME (line 45) | static get NAME() {
    method toggle (line 50) | toggle() {
    method jQueryInterface (line 56) | static jQueryInterface(config) {

FILE: src/js/bootstrap/dist/carousel.js
  class Carousel (line 111) | class Carousel extends BaseComponent {
    method constructor (line 112) | constructor(element, config) {
    method Default (line 127) | static get Default() {
    method DefaultType (line 130) | static get DefaultType() {
    method NAME (line 133) | static get NAME() {
    method next (line 138) | next() {
    method nextWhenVisible (line 141) | nextWhenVisible() {
    method prev (line 149) | prev() {
    method pause (line 152) | pause() {
    method cycle (line 158) | cycle() {
    method _maybeEnableCycle (line 163) | _maybeEnableCycle() {
    method to (line 173) | to(index) {
    method dispose (line 189) | dispose() {
    method _configAfterMerge (line 197) | _configAfterMerge(config) {
    method _addEventListeners (line 201) | _addEventListeners() {
    method _addTouchEventListeners (line 213) | _addTouchEventListeners() {
    method _keydown (line 246) | _keydown(event) {
    method _getItemIndex (line 256) | _getItemIndex(element) {
    method _setActiveIndicatorElement (line 259) | _setActiveIndicatorElement(index) {
    method _updateInterval (line 275) | _updateInterval() {
    method _slide (line 283) | _slide(order, element = null) {
    method _isAnimated (line 336) | _isAnimated() {
    method _getActive (line 339) | _getActive() {
    method _getItems (line 342) | _getItems() {
    method _clearInterval (line 345) | _clearInterval() {
    method _directionToOrder (line 351) | _directionToOrder(direction) {
    method _orderToDirection (line 357) | _orderToDirection(order) {
    method jQueryInterface (line 365) | static jQueryInterface(config) {

FILE: src/js/bootstrap/dist/collapse.js
  class Collapse (line 72) | class Collapse extends BaseComponent {
    method constructor (line 73) | constructor(element, config) {
    method Default (line 97) | static get Default() {
    method DefaultType (line 100) | static get DefaultType() {
    method NAME (line 103) | static get NAME() {
    method toggle (line 108) | toggle() {
    method show (line 115) | show() {
    method hide (line 159) | hide() {
    method _isShown (line 188) | _isShown(element = this._element) {
    method _configAfterMerge (line 193) | _configAfterMerge(config) {
    method _getDimension (line 198) | _getDimension() {
    method _initializeChildren (line 201) | _initializeChildren() {
    method _getFirstLevelChildren (line 213) | _getFirstLevelChildren(selector) {
    method _addAriaAndCollapsedClass (line 220) | _addAriaAndCollapsedClass(triggerArray, isOpen) {
    method jQueryInterface (line 231) | static jQueryInterface(config) {

FILE: src/js/bootstrap/dist/dom/data.js
  method set (line 29) | set(element, key, instance) {
  method get (line 48) | get(element, key) {
  method remove (line 54) | remove(element, key) {

FILE: src/js/bootstrap/dist/dom/event-handler.js
  function makeEventUid (line 89) | function makeEventUid(element, uid) {
  function getElementEvents (line 92) | function getElementEvents(element) {
  function bootstrapHandler (line 98) | function bootstrapHandler(element, fn) {
  function bootstrapDelegationHandler (line 109) | function bootstrapDelegationHandler(element, selector, fn) {
  function findHandler (line 128) | function findHandler(events, callable, delegationSelector = null) {
  function normalizeParameters (line 133) | function normalizeParameters(originalTypeEvent, handler, delegationFunct...
  function addHandler (line 143) | function addHandler(element, originalTypeEvent, handler, delegationFunct...
  function removeHandler (line 187) | function removeHandler(element, events, typeEvent, handler, delegationSe...
  function removeNamespacedHandlers (line 195) | function removeNamespacedHandlers(element, events, typeEvent, namespace) {
  function getTypeEvent (line 203) | function getTypeEvent(event) {
  method on (line 209) | on(element, event, handler, delegationFunction) {
  method one (line 212) | one(element, event, handler, delegationFunction) {
  method off (line 215) | off(element, originalTypeEvent, handler, delegationFunction) {
  method trigger (line 248) | trigger(element, event, args) {
  function hydrateObj (line 285) | function hydrateObj(obj, meta = {}) {

FILE: src/js/bootstrap/dist/dom/manipulator.js
  function normalizeData (line 23) | function normalizeData(value) {
  function normalizeDataKey (line 45) | function normalizeDataKey(key) {
  method setDataAttribute (line 49) | setDataAttribute(element, key, value) {
  method removeDataAttribute (line 52) | removeDataAttribute(element, key) {
  method getDataAttributes (line 55) | getDataAttributes(element) {
  method getDataAttribute (line 70) | getDataAttribute(element, key) {

FILE: src/js/bootstrap/dist/dom/selector-engine.js
  method find (line 50) | find(selector, element = document.documentElement) {
  method findOne (line 53) | findOne(selector, element = document.documentElement) {
  method children (line 56) | children(element, selector) {
  method parents (line 59) | parents(element, selector) {
  method prev (line 68) | prev(element, selector) {
  method next (line 79) | next(element, selector) {
  method focusableChildren (line 89) | focusableChildren(element) {
  method getSelectorFromElement (line 106) | getSelectorFromElement(element) {
  method getElementFromSelector (line 113) | getElementFromSelector(element) {
  method getMultipleElementsFromSelector (line 117) | getMultipleElementsFromSelector(element) {

FILE: src/js/bootstrap/dist/dropdown.js
  function _interopNamespaceDefault (line 40) | function _interopNamespaceDefault(e) {
  class Dropdown (line 134) | class Dropdown extends BaseComponent {
    method constructor (line 135) | constructor(element, config) {
    method Default (line 148) | static get Default() {
    method DefaultType (line 151) | static get DefaultType() {
    method NAME (line 154) | static get NAME() {
    method toggle (line 159) | toggle() {
    method show (line 162) | show() {
    method hide (line 193) | hide() {
    method dispose (line 202) | dispose() {
    method update (line 208) | update() {
    method _completeHide (line 216) | _completeHide(relatedTarget) {
    method _getConfig (line 238) | _getConfig(config) {
    method _createPopper (line 252) | _createPopper() {
    method _isShown (line 267) | _isShown() {
    method _getPlacement (line 270) | _getPlacement() {
    method _detectNavbar (line 292) | _detectNavbar() {
    method _getOffset (line 295) | _getOffset() {
    method _getPopperConfig (line 305) | _getPopperConfig() {
    method _selectMenuItem (line 339) | _selectMenuItem({ key, target }) {
    method jQueryInterface (line 355) | static jQueryInterface(config) {
    method clearMenus (line 367) | static clearMenus(event) {
    method dataApiKeydownHandler (line 407) | static dataApiKeydownHandler(event) {

FILE: src/js/bootstrap/dist/modal.js
  class Modal (line 106) | class Modal extends BaseComponent {
    method constructor (line 107) | constructor(element, config) {
    method Default (line 119) | static get Default() {
    method DefaultType (line 122) | static get DefaultType() {
    method NAME (line 125) | static get NAME() {
    method toggle (line 130) | toggle(relatedTarget) {
    method show (line 133) | show(relatedTarget) {
    method hide (line 150) | hide() {
    method dispose (line 164) | dispose() {
    method handleUpdate (line 171) | handleUpdate() {
    method _initializeBackDrop (line 176) | _initializeBackDrop() {
    method _initializeFocusTrap (line 183) | _initializeFocusTrap() {
    method _showElement (line 188) | _showElement(relatedTarget) {
    method _addEventListeners (line 215) | _addEventListeners() {
    method _hideModal (line 247) | _hideModal() {
    method _isAnimated (line 260) | _isAnimated() {
    method _triggerBackdropTransition (line 263) | _triggerBackdropTransition() {
    method _adjustDialog (line 292) | _adjustDialog() {
    method _resetAdjustments (line 306) | _resetAdjustments() {
    method jQueryInterface (line 312) | static jQueryInterface(config, relatedTarget) {

FILE: src/js/bootstrap/dist/offcanvas.js
  class Offcanvas (line 103) | class Offcanvas extends BaseComponent {
    method constructor (line 104) | constructor(element, config) {
    method Default (line 113) | static get Default() {
    method DefaultType (line 116) | static get DefaultType() {
    method NAME (line 119) | static get NAME() {
    method toggle (line 124) | toggle(relatedTarget) {
    method show (line 127) | show(relatedTarget) {
    method hide (line 157) | hide() {
    method dispose (line 181) | dispose() {
    method _initializeBackDrop (line 188) | _initializeBackDrop() {
    method _initializeFocusTrap (line 207) | _initializeFocusTrap() {
    method _addEventListeners (line 212) | _addEventListeners() {
    method jQueryInterface (line 226) | static jQueryInterface(config) {

FILE: src/js/bootstrap/dist/popover.js
  class Popover (line 52) | class Popover extends Tooltip {
    method Default (line 54) | static get Default() {
    method DefaultType (line 57) | static get DefaultType() {
    method NAME (line 60) | static get NAME() {
    method _isWithContent (line 65) | _isWithContent() {
    method _getContentForTemplate (line 70) | _getContentForTemplate() {
    method _getContent (line 76) | _getContent() {
    method jQueryInterface (line 81) | static jQueryInterface(config) {

FILE: src/js/bootstrap/dist/scrollspy.js
  class ScrollSpy (line 79) | class ScrollSpy extends BaseComponent {
    method constructor (line 80) | constructor(element, config) {
    method Default (line 98) | static get Default() {
    method DefaultType (line 101) | static get DefaultType() {
    method NAME (line 104) | static get NAME() {
    method refresh (line 109) | refresh() {
    method dispose (line 121) | dispose() {
    method _configAfterMerge (line 127) | _configAfterMerge(config) {
    method _maybeEnableSmoothScroll (line 138) | _maybeEnableSmoothScroll() {
    method _getNewObserver (line 164) | _getNewObserver() {
    method _observerCallback (line 174) | _observerCallback(entries) {
    method _initializeTargetsAndObservables (line 207) | _initializeTargetsAndObservables() {
    method _process (line 225) | _process(target) {
    method _activateParents (line 237) | _activateParents(target) {
    method _clearActiveClass (line 254) | _clearActiveClass(parent) {
    method jQueryInterface (line 266) | static jQueryInterface(config) {

FILE: src/js/bootstrap/dist/tab.js
  class Tab (line 75) | class Tab extends BaseComponent {
    method constructor (line 76) | constructor(element) {
    method NAME (line 91) | static get NAME() {
    method show (line 96) | show() {
    method _activate (line 121) | _activate(element, relatedElem) {
    method _deactivate (line 142) | _deactivate(element, relatedElem) {
    method _keydown (line 164) | _keydown(event) {
    method _getChildren (line 194) | _getChildren() {
    method _getActiveElem (line 198) | _getActiveElem() {
    method _setInitialAttributes (line 201) | _setInitialAttributes(parent, children) {
    method _setInitialAttributesOnChild (line 207) | _setInitialAttributesOnChild(child) {
    method _setInitialAttributesOnTargetPanel (line 223) | _setInitialAttributesOnTargetPanel(child) {
    method _toggleDropDown (line 233) | _toggleDropDown(element, open) {
    method _setAttributeIfNotExists (line 248) | _setAttributeIfNotExists(element, attribute, value) {
    method _elemIsActive (line 253) | _elemIsActive(elem) {
    method _getInnerElement (line 258) | _getInnerElement(elem) {
    method _getOuterElement (line 265) | _getOuterElement(elem) {
    method jQueryInterface (line 270) | static jQueryInterface(config) {

FILE: src/js/bootstrap/dist/toast.js
  class Toast (line 70) | class Toast extends BaseComponent {
    method constructor (line 71) | constructor(element, config) {
    method Default (line 80) | static get Default() {
    method DefaultType (line 83) | static get DefaultType() {
    method NAME (line 86) | static get NAME() {
    method show (line 91) | show() {
    method hide (line 110) | hide() {
    method dispose (line 126) | dispose() {
    method isShown (line 133) | isShown() {
    method _maybeScheduleHide (line 139) | _maybeScheduleHide() {
    method _onInteraction (line 150) | _onInteraction(event, isInteracting) {
    method _setListeners (line 173) | _setListeners() {
    method _clearTimeout (line 179) | _clearTimeout() {
    method jQueryInterface (line 185) | static jQueryInterface(config) {

FILE: src/js/bootstrap/dist/tooltip.js
  function _interopNamespaceDefault (line 53) | function _interopNamespaceDefault(e) {
  class Tooltip (line 165) | class Tooltip extends BaseComponent {
    method constructor (line 166) | constructor(element, config) {
    method Default (line 190) | static get Default() {
    method DefaultType (line 193) | static get DefaultType() {
    method NAME (line 196) | static get NAME() {
    method enable (line 201) | enable() {
    method disable (line 204) | disable() {
    method toggleEnabled (line 207) | toggleEnabled() {
    method toggle (line 210) | toggle() {
    method dispose (line 221) | dispose() {
    method show (line 234) | show() {
    method hide (line 283) | hide() {
    method update (line 321) | update() {
    method _isWithContent (line 328) | _isWithContent() {
    method _getTipElement (line 331) | _getTipElement() {
    method _createTipElement (line 337) | _createTipElement(content) {
    method setContent (line 354) | setContent(content) {
    method _getTemplateFactory (line 361) | _getTemplateFactory(content) {
    method _getContentForTemplate (line 375) | _getContentForTemplate() {
    method _getTitle (line 380) | _getTitle() {
    method _initializeOnDelegatedTarget (line 388) | _initializeOnDelegatedTarget(event) {
    method _isAnimated (line 394) | _isAnimated() {
    method _isShown (line 397) | _isShown() {
    method _createPopper (line 400) | _createPopper(tip) {
    method _getOffset (line 409) | _getOffset() {
    method _resolvePossibleFunction (line 419) | _resolvePossibleFunction(arg) {
    method _getPopperConfig (line 422) | _getPopperConfig(attachment) {
    method _setListeners (line 467) | _setListeners() {
    method _fixTitle (line 515) | _fixTitle() {
    method _enter (line 526) | _enter() {
    method _leave (line 538) | _leave() {
    method _setTimeout (line 549) | _setTimeout(handler, timeout) {
    method _isWithActiveTrigger (line 553) | _isWithActiveTrigger() {
    method _getConfig (line 556) | _getConfig(config) {
    method _configAfterMerge (line 572) | _configAfterMerge(config) {
    method _getDelegateConfig (line 589) | _getDelegateConfig() {
    method _disposePopper (line 604) | _disposePopper() {
    method jQueryInterface (line 616) | static jQueryInterface(config) {

FILE: src/js/bootstrap/dist/util/backdrop.js
  class Backdrop (line 55) | class Backdrop extends Config {
    method constructor (line 56) | constructor(config) {
    method Default (line 64) | static get Default() {
    method DefaultType (line 67) | static get DefaultType() {
    method NAME (line 70) | static get NAME() {
    method show (line 75) | show(callback) {
    method hide (line 90) | hide(callback) {
    method dispose (line 101) | dispose() {
    method _getElement (line 111) | _getElement() {
    method _configAfterMerge (line 122) | _configAfterMerge(config) {
    method _append (line 127) | _append() {
    method _emulateAnimation (line 138) | _emulateAnimation(callback) {

FILE: src/js/bootstrap/dist/util/config.js
  class Config (line 27) | class Config {
    method Default (line 29) | static get Default() {
    method DefaultType (line 32) | static get DefaultType() {
    method NAME (line 35) | static get NAME() {
    method _getConfig (line 38) | _getConfig(config) {
    method _configAfterMerge (line 44) | _configAfterMerge(config) {
    method _mergeConfigObj (line 47) | _mergeConfigObj(config, element) {
    method _typeCheckConfig (line 59) | _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {

FILE: src/js/bootstrap/dist/util/focustrap.js
  class FocusTrap (line 52) | class FocusTrap extends Config {
    method constructor (line 53) | constructor(config) {
    method Default (line 61) | static get Default() {
    method DefaultType (line 64) | static get DefaultType() {
    method NAME (line 67) | static get NAME() {
    method activate (line 72) | activate() {
    method deactivate (line 84) | deactivate() {
    method _handleFocusin (line 93) | _handleFocusin(event) {
    method _handleKeydown (line 111) | _handleKeydown(event) {

FILE: src/js/bootstrap/dist/util/sanitizer.js
  function sanitizeHtml (line 96) | function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {

FILE: src/js/bootstrap/dist/util/scrollbar.js
  class ScrollBarHelper (line 40) | class ScrollBarHelper {
    method constructor (line 41) | constructor() {
    method getWidth (line 46) | getWidth() {
    method hide (line 51) | hide() {
    method reset (line 72) | reset() {
    method isOverflowing (line 78) | isOverflowing() {
    method _disableOverFlow (line 83) | _disableOverFlow() {
    method _setElementAttributes (line 87) | _setElementAttributes(selector, styleProperty, callback) {
    method _saveInitialAttribute (line 102) | _saveInitialAttribute(element, styleProperty) {
    method _resetElementAttributes (line 108) | _resetElementAttributes(selector, styleProperty) {
    method _applyManipulationCallback (line 121) | _applyManipulationCallback(selector, callBack) {

FILE: src/js/bootstrap/dist/util/swipe.js
  class Swipe (line 57) | class Swipe extends Config {
    method constructor (line 58) | constructor(element, config) {
    method Default (line 71) | static get Default() {
    method DefaultType (line 74) | static get DefaultType() {
    method NAME (line 77) | static get NAME() {
    method dispose (line 82) | dispose() {
    method _start (line 87) | _start(event) {
    method _end (line 96) | _end(event) {
    method _move (line 103) | _move(event) {
    method _handleSwipe (line 107) | _handleSwipe() {
    method _initEvents (line 119) | _initEvents() {
    method _eventIsPointerPenTouch (line 130) | _eventIsPointerPenTouch(event) {
    method isSupported (line 138) | static isSupported() {

FILE: src/js/bootstrap/dist/util/template-factory.js
  class TemplateFactory (line 66) | class TemplateFactory extends Config {
    method constructor (line 67) | constructor(config) {
    method Default (line 73) | static get Default() {
    method DefaultType (line 76) | static get DefaultType() {
    method NAME (line 79) | static get NAME() {
    method getContent (line 84) | getContent() {
    method hasContent (line 89) | hasContent() {
    method changeContent (line 92) | changeContent(content) {
    method toHtml (line 100) | toHtml() {
    method _typeCheckConfig (line 115) | _typeCheckConfig(config) {
    method _checkContent (line 119) | _checkContent(arg) {
    method _setContent (line 130) | _setContent(template, content, selector) {
    method _maybeSanitize (line 150) | _maybeSanitize(arg) {
    method _resolvePossibleFunction (line 155) | _resolvePossibleFunction(arg) {
    method _putElementInTemplate (line 158) | _putElementInTemplate(element, templateElement) {

FILE: src/js/bootstrap/mdb-prefix/alert.js
  constant NAME (line 17) | const NAME = 'alert';
  constant DATA_KEY (line 18) | const DATA_KEY = 'bs.alert';
  constant EVENT_KEY (line 19) | const EVENT_KEY = `.${DATA_KEY}`;
  constant EVENT_CLOSE (line 21) | const EVENT_CLOSE = `close${EVENT_KEY}`;
  constant EVENT_CLOSED (line 22) | const EVENT_CLOSED = `closed${EVENT_KEY}`;
  constant CLASS_NAME_FADE (line 23) | const CLASS_NAME_FADE = 'fade';
  constant CLASS_NAME_SHOW (line 24) | const CLASS_NAME_SHOW = 'show';
  class Alert (line 30) | class Alert extends BaseComponent {
    method NAME (line 32) | static get NAME() {
    method close (line 37) | close() {
    method _destroyElement (line 51) | _destroyElement() {
    method jQueryInterface (line 58) | static jQueryInterface(config) {

FILE: src/js/bootstrap/mdb-prefix/base-component.js
  constant VERSION (line 17) | const VERSION = '5.3.3';
  class BaseComponent (line 23) | class BaseComponent extends Config {
    method constructor (line 24) | constructor(element, config) {
    method dispose (line 39) | dispose() {
    method _queueCallback (line 48) | _queueCallback(callback, element, isAnimated = true) {
    method _getConfig (line 52) | _getConfig(config) {
    method getInstance (line 60) | static getInstance(element) {
    method getOrCreateInstance (line 64) | static getOrCreateInstance(element, config = {}) {
    method VERSION (line 70) | static get VERSION() {
    method DATA_KEY (line 74) | static get DATA_KEY() {
    method EVENT_KEY (line 78) | static get EVENT_KEY() {
    method eventName (line 82) | static eventName(name) {

FILE: src/js/bootstrap/mdb-prefix/button.js
  constant NAME (line 16) | const NAME = 'button';
  constant DATA_KEY (line 17) | const DATA_KEY = 'bs.button';
  constant EVENT_KEY (line 18) | const EVENT_KEY = `.${DATA_KEY}`;
  constant DATA_API_KEY (line 19) | const DATA_API_KEY = '.data-api';
  constant CLASS_NAME_ACTIVE (line 21) | const CLASS_NAME_ACTIVE = 'active';
  constant SELECTOR_DATA_TOGGLE (line 22) | const SELECTOR_DATA_TOGGLE = '[data-mdb-toggle="button"]';
  constant EVENT_CLICK_DATA_API (line 23) | const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
  class Button (line 29) | class Button extends BaseComponent {
    method NAME (line 31) | static get NAME() {
    method toggle (line 36) | toggle() {
    method jQueryInterface (line 42) | static jQueryInterface(config) {

FILE: src/js/bootstrap/mdb-prefix/carousel.js
  constant NAME (line 26) | const NAME = 'carousel';
  constant DATA_KEY (line 27) | const DATA_KEY = 'bs.carousel';
  constant EVENT_KEY (line 28) | const EVENT_KEY = `.${DATA_KEY}`;
  constant DATA_API_KEY (line 29) | const DATA_API_KEY = '.data-api';
  constant ARROW_LEFT_KEY (line 31) | const ARROW_LEFT_KEY = 'ArrowLeft';
  constant ARROW_RIGHT_KEY (line 32) | const ARROW_RIGHT_KEY = 'ArrowRight';
  constant TOUCHEVENT_COMPAT_WAIT (line 33) | const TOUCHEVENT_COMPAT_WAIT = 500;
  constant ORDER_NEXT (line 35) | const ORDER_NEXT = 'next';
  constant ORDER_PREV (line 36) | const ORDER_PREV = 'prev';
  constant DIRECTION_LEFT (line 37) | const DIRECTION_LEFT = 'left';
  constant DIRECTION_RIGHT (line 38) | const DIRECTION_RIGHT = 'right';
  constant EVENT_SLIDE (line 40) | const EVENT_SLIDE = `slide${EVENT_KEY}`;
  constant EVENT_SLID (line 41) | const EVENT_SLID = `slid${EVENT_KEY}`;
  constant EVENT_KEYDOWN (line 42) | const EVENT_KEYDOWN = `keydown${EVENT_KEY}`;
  constant EVENT_MOUSEENTER (line 43) | const EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`;
  constant EVENT_MOUSELEAVE (line 44) | const EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`;
  constant EVENT_DRAG_START (line 45) | const EVENT_DRAG_START = `dragstart${EVENT_KEY}`;
  constant EVENT_LOAD_DATA_API (line 46) | const EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`;
  constant EVENT_CLICK_DATA_API (line 47) | const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
  constant CLASS_NAME_CAROUSEL (line 49) | const CLASS_NAME_CAROUSEL = 'carousel';
  constant CLASS_NAME_ACTIVE (line 50) | const CLASS_NAME_ACTIVE = 'active';
  constant CLASS_NAME_SLIDE (line 51) | const CLASS_NAME_SLIDE = 'slide';
  constant CLASS_NAME_END (line 52) | const CLASS_NAME_END = 'carousel-item-end';
  constant CLASS_NAME_START (line 53) | const CLASS_NAME_START = 'carousel-item-start';
  constant CLASS_NAME_NEXT (line 54) | const CLASS_NAME_NEXT = 'carousel-item-next';
  constant CLASS_NAME_PREV (line 55) | const CLASS_NAME_PREV = 'carousel-item-prev';
  constant SELECTOR_ACTIVE (line 57) | const SELECTOR_ACTIVE = '.active';
  constant SELECTOR_ITEM (line 58) | const SELECTOR_ITEM = '.carousel-item';
  constant SELECTOR_ACTIVE_ITEM (line 59) | const SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM;
  constant SELECTOR_ITEM_IMG (line 60) | const SELECTOR_ITEM_IMG = '.carousel-item img';
  constant SELECTOR_INDICATORS (line 61) | const SELECTOR_INDICATORS = '.carousel-indicators';
  constant SELECTOR_DATA_SLIDE (line 62) | const SELECTOR_DATA_SLIDE = '[data-mdb-slide], [data-mdb-slide-to]';
  constant SELECTOR_DATA_RIDE (line 63) | const SELECTOR_DATA_RIDE = '[data-mdb-ride="carousel"]';
  constant KEY_TO_DIRECTION (line 65) | const KEY_TO_DIRECTION = {
  class Carousel (line 92) | class Carousel extends BaseComponent {
    method constructor (line 93) | constructor(element, config) {
    method Default (line 111) | static get Default() {
    method DefaultType (line 115) | static get DefaultType() {
    method NAME (line 119) | static get NAME() {
    method next (line 124) | next() {
    method nextWhenVisible (line 128) | nextWhenVisible() {
    method prev (line 137) | prev() {
    method pause (line 141) | pause() {
    method cycle (line 149) | cycle() {
    method _maybeEnableCycle (line 156) | _maybeEnableCycle() {
    method to (line 169) | to(index) {
    method dispose (line 190) | dispose() {
    method _configAfterMerge (line 199) | _configAfterMerge(config) {
    method _addEventListeners (line 204) | _addEventListeners() {
    method _addTouchEventListeners (line 219) | _addTouchEventListeners() {
    method _keydown (line 257) | _keydown(event) {
    method _getItemIndex (line 269) | _getItemIndex(element) {
    method _setActiveIndicatorElement (line 273) | _setActiveIndicatorElement(index) {
    method _updateInterval (line 294) | _updateInterval() {
    method _slide (line 306) | _slide(order, element = null) {
    method _isAnimated (line 379) | _isAnimated() {
    method _getActive (line 383) | _getActive() {
    method _getItems (line 387) | _getItems() {
    method _clearInterval (line 391) | _clearInterval() {
    method _directionToOrder (line 398) | _directionToOrder(direction) {
    method _orderToDirection (line 406) | _orderToDirection(order) {
    method jQueryInterface (line 415) | static jQueryInterface(config) {

FILE: src/js/bootstrap/mdb-prefix/collapse.js
  constant NAME (line 17) | const NAME = 'collapse';
  constant DATA_KEY (line 18) | const DATA_KEY = 'bs.collapse';
  constant EVENT_KEY (line 19) | const EVENT_KEY = `.${DATA_KEY}`;
  constant DATA_API_KEY (line 20) | const DATA_API_KEY = '.data-api';
  constant EVENT_SHOW (line 22) | const EVENT_SHOW = `show${EVENT_KEY}`;
  constant EVENT_SHOWN (line 23) | const EVENT_SHOWN = `shown${EVENT_KEY}`;
  constant EVENT_HIDE (line 24) | const EVENT_HIDE = `hide${EVENT_KEY}`;
  constant EVENT_HIDDEN (line 25) | const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
  constant EVENT_CLICK_DATA_API (line 26) | const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
  constant CLASS_NAME_SHOW (line 28) | const CLASS_NAME_SHOW = 'show';
  constant CLASS_NAME_COLLAPSE (line 29) | const CLASS_NAME_COLLAPSE = 'collapse';
  constant CLASS_NAME_COLLAPSING (line 30) | const CLASS_NAME_COLLAPSING = 'collapsing';
  constant CLASS_NAME_COLLAPSED (line 31) | const CLASS_NAME_COLLAPSED = 'collapsed';
  constant CLASS_NAME_DEEPER_CHILDREN (line 32) | const CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CL...
  constant CLASS_NAME_HORIZONTAL (line 33) | const CLASS_NAME_HORIZONTAL = 'collapse-horizontal';
  constant WIDTH (line 35) | const WIDTH = 'width';
  constant HEIGHT (line 36) | const HEIGHT = 'height';
  constant SELECTOR_ACTIVES (line 38) | const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';
  constant SELECTOR_DATA_TOGGLE (line 39) | const SELECTOR_DATA_TOGGLE = '[data-mdb-collapse-init]';
  class Collapse (line 55) | class Collapse extends BaseComponent {
    method constructor (line 56) | constructor(element, config) {
    method Default (line 87) | static get Default() {
    method DefaultType (line 91) | static get DefaultType() {
    method NAME (line 95) | static get NAME() {
    method toggle (line 100) | toggle() {
    method show (line 108) | show() {
    method hide (line 163) | hide() {
    method _isShown (line 204) | _isShown(element = this._element) {
    method _configAfterMerge (line 209) | _configAfterMerge(config) {
    method _getDimension (line 215) | _getDimension() {
    method _initializeChildren (line 219) | _initializeChildren() {
    method _getFirstLevelChildren (line 235) | _getFirstLevelChildren(selector) {
    method _addAriaAndCollapsedClass (line 243) | _addAriaAndCollapsedClass(triggerArray, isOpen) {
    method jQueryInterface (line 255) | static jQueryInterface(config) {

FILE: src/js/bootstrap/mdb-prefix/dom/data.js
  method set (line 15) | set(element, key, instance) {
  method get (line 37) | get(element, key) {
  method remove (line 45) | remove(element, key) {

FILE: src/js/bootstrap/mdb-prefix/dom/event-handler.js
  function makeEventUid (line 77) | function makeEventUid(element, uid) {
  function getElementEvents (line 81) | function getElementEvents(element) {
  function bootstrapHandler (line 90) | function bootstrapHandler(element, fn) {
  function bootstrapDelegationHandler (line 102) | function bootstrapDelegationHandler(element, selector, fn) {
  function findHandler (line 124) | function findHandler(events, callable, delegationSelector = null) {
  function normalizeParameters (line 130) | function normalizeParameters(originalTypeEvent, handler, delegationFunct...
  function addHandler (line 143) | function addHandler(element, originalTypeEvent, handler, delegationFunct...
  function removeHandler (line 196) | function removeHandler(element, events, typeEvent, handler, delegationSe...
  function removeNamespacedHandlers (line 207) | function removeNamespacedHandlers(element, events, typeEvent, namespace) {
  function getTypeEvent (line 217) | function getTypeEvent(event) {
  method on (line 224) | on(element, event, handler, delegationFunction) {
  method one (line 228) | one(element, event, handler, delegationFunction) {
  method off (line 232) | off(element, originalTypeEvent, handler, delegationFunction) {
  method trigger (line 272) | trigger(element, event, args) {
  function hydrateObj (line 313) | function hydrateObj(obj, meta = {}) {

FILE: src/js/bootstrap/mdb-prefix/dom/manipulator.js
  function normalizeData (line 8) | function normalizeData(value) {
  function normalizeDataKey (line 36) | function normalizeDataKey(key) {
  method setDataAttribute (line 41) | setDataAttribute(element, key, value) {
  method removeDataAttribute (line 45) | removeDataAttribute(element, key) {
  method getDataAttributes (line 49) | getDataAttributes(element) {
  method getDataAttribute (line 68) | getDataAttribute(element, key) {

FILE: src/js/bootstrap/mdb-prefix/dom/selector-engine.js
  method find (line 41) | find(selector, element = document.documentElement) {
  method findOne (line 45) | findOne(selector, element = document.documentElement) {
  method children (line 49) | children(element, selector) {
  method parents (line 53) | parents(element, selector) {
  method prev (line 65) | prev(element, selector) {
  method next (line 79) | next(element, selector) {
  method focusableChildren (line 93) | focusableChildren(element) {
  method getSelectorFromElement (line 110) | getSelectorFromElement(element) {
  method getElementFromSelector (line 120) | getElementFromSelector(element) {
  method getMultipleElementsFromSelector (line 126) | getMultipleElementsFromSelector(element) {

FILE: src/js/bootstrap/mdb-prefix/dropdown.js
  constant NAME (line 29) | const NAME = 'dropdown';
  constant DATA_KEY (line 30) | const DATA_KEY = 'bs.dropdown';
  constant EVENT_KEY (line 31) | const EVENT_KEY = `.${DATA_KEY}`;
  constant DATA_API_KEY (line 32) | const DATA_API_KEY = '.data-api';
  constant ESCAPE_KEY (line 34) | const ESCAPE_KEY = 'Escape';
  constant TAB_KEY (line 35) | const TAB_KEY = 'Tab';
  constant ARROW_UP_KEY (line 36) | const ARROW_UP_KEY = 'ArrowUp';
  constant ARROW_DOWN_KEY (line 37) | const ARROW_DOWN_KEY = 'ArrowDown';
  constant RIGHT_MOUSE_BUTTON (line 38) | const RIGHT_MOUSE_BUTTON = 2;
  constant EVENT_HIDE (line 40) | const EVENT_HIDE = `hide${EVENT_KEY}`;
  constant EVENT_HIDDEN (line 41) | const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
  constant EVENT_SHOW (line 42) | const EVENT_SHOW = `show${EVENT_KEY}`;
  constant EVENT_SHOWN (line 43) | const EVENT_SHOWN = `shown${EVENT_KEY}`;
  constant EVENT_CLICK_DATA_API (line 44) | const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
  constant EVENT_KEYDOWN_DATA_API (line 45) | const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`;
  constant EVENT_KEYUP_DATA_API (line 46) | const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`;
  constant CLASS_NAME_SHOW (line 48) | const CLASS_NAME_SHOW = 'show';
  constant CLASS_NAME_DROPUP (line 49) | const CLASS_NAME_DROPUP = 'dropup';
  constant CLASS_NAME_DROPEND (line 50) | const CLASS_NAME_DROPEND = 'dropend';
  constant CLASS_NAME_DROPSTART (line 51) | const CLASS_NAME_DROPSTART = 'dropstart';
  constant CLASS_NAME_DROPUP_CENTER (line 52) | const CLASS_NAME_DROPUP_CENTER = 'dropup-center';
  constant CLASS_NAME_DROPDOWN_CENTER (line 53) | const CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center';
  constant SELECTOR_DATA_TOGGLE (line 55) | const SELECTOR_DATA_TOGGLE = '[data-mdb-dropdown-initialized]:not(.disab...
  constant SELECTOR_DATA_TOGGLE_SHOWN (line 56) | const SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE}.${CLASS_NAME...
  constant SELECTOR_MENU (line 57) | const SELECTOR_MENU = '.dropdown-menu';
  constant SELECTOR_NAVBAR (line 58) | const SELECTOR_NAVBAR = '.navbar';
  constant SELECTOR_NAVBAR_NAV (line 59) | const SELECTOR_NAVBAR_NAV = '.navbar-nav';
  constant SELECTOR_VISIBLE_ITEMS (line 60) | const SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disab...
  constant PLACEMENT_TOP (line 62) | const PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';
  constant PLACEMENT_TOPEND (line 63) | const PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';
  constant PLACEMENT_BOTTOM (line 64) | const PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';
  constant PLACEMENT_BOTTOMEND (line 65) | const PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';
  constant PLACEMENT_RIGHT (line 66) | const PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';
  constant PLACEMENT_LEFT (line 67) | const PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';
  constant PLACEMENT_TOPCENTER (line 68) | const PLACEMENT_TOPCENTER = 'top';
  constant PLACEMENT_BOTTOMCENTER (line 69) | const PLACEMENT_BOTTOMCENTER = 'bottom';
  class Dropdown (line 93) | class Dropdown extends BaseComponent {
    method constructor (line 94) | constructor(element, config) {
    method Default (line 108) | static get Default() {
    method DefaultType (line 112) | static get DefaultType() {
    method NAME (line 116) | static get NAME() {
    method toggle (line 121) | toggle() {
    method show (line 125) | show() {
    method hide (line 160) | hide() {
    method dispose (line 172) | dispose() {
    method update (line 180) | update() {
    method _completeHide (line 188) | _completeHide(relatedTarget) {
    method _getConfig (line 213) | _getConfig(config) {
    method _createPopper (line 230) | _createPopper() {
    method _isShown (line 249) | _isShown() {
    method _getPlacement (line 253) | _getPlacement() {
    method _detectNavbar (line 282) | _detectNavbar() {
    method _getOffset (line 286) | _getOffset() {
    method _getPopperConfig (line 300) | _getPopperConfig() {
    method _selectMenuItem (line 336) | _selectMenuItem({ key, target }) {
    method jQueryInterface (line 351) | static jQueryInterface(config) {
    method clearMenus (line 367) | static clearMenus(event) {
    method dataApiKeydownHandler (line 409) | static dataApiKeydownHandler(event) {

FILE: src/js/bootstrap/mdb-prefix/modal.js
  constant NAME (line 21) | const NAME = 'modal';
  constant DATA_KEY (line 22) | const DATA_KEY = 'bs.modal';
  constant EVENT_KEY (line 23) | const EVENT_KEY = `.${DATA_KEY}`;
  constant DATA_API_KEY (line 24) | const DATA_API_KEY = '.data-api';
  constant ESCAPE_KEY (line 25) | const ESCAPE_KEY = 'Escape';
  constant EVENT_HIDE (line 27) | const EVENT_HIDE = `hide${EVENT_KEY}`;
  constant EVENT_HIDE_PREVENTED (line 28) | const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`;
  constant EVENT_HIDDEN (line 29) | const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
  constant EVENT_SHOW (line 30) | const EVENT_SHOW = `show${EVENT_KEY}`;
  constant EVENT_SHOWN (line 31) | const EVENT_SHOWN = `shown${EVENT_KEY}`;
  constant EVENT_RESIZE (line 32) | const EVENT_RESIZE = `resize${EVENT_KEY}`;
  constant EVENT_CLICK_DISMISS (line 33) | const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`;
  constant EVENT_MOUSEDOWN_DISMISS (line 34) | const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`;
  constant EVENT_KEYDOWN_DISMISS (line 35) | const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`;
  constant EVENT_CLICK_DATA_API (line 36) | const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
  constant CLASS_NAME_OPEN (line 38) | const CLASS_NAME_OPEN = 'modal-open';
  constant CLASS_NAME_FADE (line 39) | const CLASS_NAME_FADE = 'fade';
  constant CLASS_NAME_SHOW (line 40) | const CLASS_NAME_SHOW = 'show';
  constant CLASS_NAME_STATIC (line 41) | const CLASS_NAME_STATIC = 'modal-static';
  constant OPEN_SELECTOR (line 43) | const OPEN_SELECTOR = '.modal.show';
  constant SELECTOR_DIALOG (line 44) | const SELECTOR_DIALOG = '.modal-dialog';
  constant SELECTOR_MODAL_BODY (line 45) | const SELECTOR_MODAL_BODY = '.modal-body';
  constant SELECTOR_DATA_TOGGLE (line 46) | const SELECTOR_DATA_TOGGLE = '[data-mdb-toggle="modal"]';
  class Modal (line 64) | class Modal extends BaseComponent {
    method constructor (line 65) | constructor(element, config) {
    method Default (line 79) | static get Default() {
    method DefaultType (line 83) | static get DefaultType() {
    method NAME (line 87) | static get NAME() {
    method toggle (line 92) | toggle(relatedTarget) {
    method show (line 96) | show(relatedTarget) {
    method hide (line 121) | hide() {
    method dispose (line 141) | dispose() {
    method handleUpdate (line 151) | handleUpdate() {
    method _initializeBackDrop (line 156) | _initializeBackDrop() {
    method _initializeFocusTrap (line 163) | _initializeFocusTrap() {
    method _showElement (line 169) | _showElement(relatedTarget) {
    method _addEventListeners (line 204) | _addEventListeners() {
    method _hideModal (line 243) | _hideModal() {
    method _isAnimated (line 258) | _isAnimated() {
    method _triggerBackdropTransition (line 262) | _triggerBackdropTransition() {
    method _adjustDialog (line 294) | _adjustDialog() {
    method _resetAdjustments (line 310) | _resetAdjustments() {
    method jQueryInterface (line 316) | static jQueryInterface(config, relatedTarget) {

FILE: src/js/bootstrap/mdb-prefix/offcanvas.js
  constant NAME (line 21) | const NAME = 'offcanvas';
  constant DATA_KEY (line 22) | const DATA_KEY = 'bs.offcanvas';
  constant EVENT_KEY (line 23) | const EVENT_KEY = `.${DATA_KEY}`;
  constant DATA_API_KEY (line 24) | const DATA_API_KEY = '.data-api';
  constant EVENT_LOAD_DATA_API (line 25) | const EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`;
  constant ESCAPE_KEY (line 26) | const ESCAPE_KEY = 'Escape';
  constant CLASS_NAME_SHOW (line 28) | const CLASS_NAME_SHOW = 'show';
  constant CLASS_NAME_SHOWING (line 29) | const CLASS_NAME_SHOWING = 'showing';
  constant CLASS_NAME_HIDING (line 30) | const CLASS_NAME_HIDING = 'hiding';
  constant CLASS_NAME_BACKDROP (line 31) | const CLASS_NAME_BACKDROP = 'offcanvas-backdrop';
  constant OPEN_SELECTOR (line 32) | const OPEN_SELECTOR = '.offcanvas.show';
  constant EVENT_SHOW (line 34) | const EVENT_SHOW = `show${EVENT_KEY}`;
  constant EVENT_SHOWN (line 35) | const EVENT_SHOWN = `shown${EVENT_KEY}`;
  constant EVENT_HIDE (line 36) | const EVENT_HIDE = `hide${EVENT_KEY}`;
  constant EVENT_HIDE_PREVENTED (line 37) | const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`;
  constant EVENT_HIDDEN (line 38) | const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
  constant EVENT_RESIZE (line 39) | const EVENT_RESIZE = `resize${EVENT_KEY}`;
  constant EVENT_CLICK_DATA_API (line 40) | const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
  constant EVENT_KEYDOWN_DISMISS (line 41) | const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`;
  constant SELECTOR_DATA_TOGGLE (line 43) | const SELECTOR_DATA_TOGGLE = '[data-mdb-toggle="offcanvas"]';
  class Offcanvas (line 61) | class Offcanvas extends BaseComponent {
    method constructor (line 62) | constructor(element, config) {
    method Default (line 72) | static get Default() {
    method DefaultType (line 76) | static get DefaultType() {
    method NAME (line 80) | static get NAME() {
    method toggle (line 85) | toggle(relatedTarget) {
    method show (line 89) | show(relatedTarget) {
    method hide (line 124) | hide() {
    method dispose (line 156) | dispose() {
    method _initializeBackDrop (line 163) | _initializeBackDrop() {
    method _initializeFocusTrap (line 185) | _initializeFocusTrap() {
    method _addEventListeners (line 191) | _addEventListeners() {
    method jQueryInterface (line 207) | static jQueryInterface(config) {

FILE: src/js/bootstrap/mdb-prefix/popover.js
  constant NAME (line 15) | const NAME = 'popover';
  constant SELECTOR_TITLE (line 17) | const SELECTOR_TITLE = '.popover-header';
  constant SELECTOR_CONTENT (line 18) | const SELECTOR_CONTENT = '.popover-body';
  class Popover (line 43) | class Popover extends Tooltip {
    method Default (line 45) | static get Default() {
    method DefaultType (line 49) | static get DefaultType() {
    method NAME (line 53) | static get NAME() {
    method _isWithContent (line 58) | _isWithContent() {
    method _getContentForTemplate (line 63) | _getContentForTemplate() {
    method _getContent (line 70) | _getContent() {
    method jQueryInterface (line 75) | static jQueryInterface(config) {

FILE: src/js/bootstrap/mdb-prefix/scrollspy.js
  constant NAME (line 17) | const NAME = 'scrollspy';
  constant DATA_KEY (line 18) | const DATA_KEY = 'bs.scrollspy';
  constant EVENT_KEY (line 19) | const EVENT_KEY = `.${DATA_KEY}`;
  constant DATA_API_KEY (line 20) | const DATA_API_KEY = '.data-api';
  constant EVENT_ACTIVATE (line 22) | const EVENT_ACTIVATE = `activate${EVENT_KEY}`;
  constant EVENT_CLICK (line 23) | const EVENT_CLICK = `click${EVENT_KEY}`;
  constant EVENT_LOAD_DATA_API (line 24) | const EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`;
  constant CLASS_NAME_DROPDOWN_ITEM (line 26) | const CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';
  constant CLASS_NAME_ACTIVE (line 27) | const CLASS_NAME_ACTIVE = 'active';
  constant SELECTOR_DATA_SPY (line 29) | const SELECTOR_DATA_SPY = '[data-mdb-spy="scroll"]';
  constant SELECTOR_TARGET_LINKS (line 30) | const SELECTOR_TARGET_LINKS = '[href]';
  constant SELECTOR_NAV_LIST_GROUP (line 31) | const SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';
  constant SELECTOR_NAV_LINKS (line 32) | const SELECTOR_NAV_LINKS = '.nav-link';
  constant SELECTOR_NAV_ITEMS (line 33) | const SELECTOR_NAV_ITEMS = '.nav-item';
  constant SELECTOR_LIST_ITEMS (line 34) | const SELECTOR_LIST_ITEMS = '.list-group-item';
  constant SELECTOR_LINK_ITEMS (line 35) | const SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS...
  constant SELECTOR_DROPDOWN (line 36) | const SELECTOR_DROPDOWN = '.dropdown';
  constant SELECTOR_DROPDOWN_TOGGLE (line 37) | const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';
  class ScrollSpy (line 59) | class ScrollSpy extends BaseComponent {
    method constructor (line 60) | constructor(element, config) {
    method Default (line 82) | static get Default() {
    method DefaultType (line 86) | static get DefaultType() {
    method NAME (line 90) | static get NAME() {
    method refresh (line 95) | refresh() {
    method dispose (line 110) | dispose() {
    method _configAfterMerge (line 118) | _configAfterMerge(config) {
    method _maybeEnableSmoothScroll (line 132) | _maybeEnableSmoothScroll() {
    method _getNewObserver (line 157) | _getNewObserver() {
    method _observerCallback (line 168) | _observerCallback(entries) {
    method _initializeTargetsAndObservables (line 207) | _initializeTargetsAndObservables() {
    method _process (line 229) | _process(target) {
    method _activateParents (line 242) | _activateParents(target) {
    method _clearActiveClass (line 261) | _clearActiveClass(parent) {
    method jQueryInterface (line 274) | static jQueryInterface(config) {

FILE: src/js/bootstrap/mdb-prefix/tab.js
  constant NAME (line 17) | const NAME = 'tab';
  constant DATA_KEY (line 18) | const DATA_KEY = 'bs.tab';
  constant EVENT_KEY (line 19) | const EVENT_KEY = `.${DATA_KEY}`;
  constant EVENT_HIDE (line 21) | const EVENT_HIDE = `hide${EVENT_KEY}`;
  constant EVENT_HIDDEN (line 22) | const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
  constant EVENT_SHOW (line 23) | const EVENT_SHOW = `show${EVENT_KEY}`;
  constant EVENT_SHOWN (line 24) | const EVENT_SHOWN = `shown${EVENT_KEY}`;
  constant EVENT_CLICK_DATA_API (line 25) | const EVENT_CLICK_DATA_API = `click${EVENT_KEY}`;
  constant EVENT_KEYDOWN (line 26) | const EVENT_KEYDOWN = `keydown${EVENT_KEY}`;
  constant EVENT_LOAD_DATA_API (line 27) | const EVENT_LOAD_DATA_API = `load${EVENT_KEY}`;
  constant ARROW_LEFT_KEY (line 29) | const ARROW_LEFT_KEY = 'ArrowLeft';
  constant ARROW_RIGHT_KEY (line 30) | const ARROW_RIGHT_KEY = 'ArrowRight';
  constant ARROW_UP_KEY (line 31) | const ARROW_UP_KEY = 'ArrowUp';
  constant ARROW_DOWN_KEY (line 32) | const ARROW_DOWN_KEY = 'ArrowDown';
  constant HOME_KEY (line 33) | const HOME_KEY = 'Home';
  constant END_KEY (line 34) | const END_KEY = 'End';
  constant CLASS_NAME_ACTIVE (line 36) | const CLASS_NAME_ACTIVE = 'active';
  constant CLASS_NAME_FADE (line 37) | const CLASS_NAME_FADE = 'fade';
  constant CLASS_NAME_SHOW (line 38) | const CLASS_NAME_SHOW = 'show';
  constant CLASS_DROPDOWN (line 39) | const CLASS_DROPDOWN = 'dropdown';
  constant SELECTOR_DROPDOWN_TOGGLE (line 41) | const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';
  constant SELECTOR_DROPDOWN_MENU (line 42) | const SELECTOR_DROPDOWN_MENU = '.dropdown-menu';
  constant NOT_SELECTOR_DROPDOWN_TOGGLE (line 43) | const NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`;
  constant SELECTOR_TAB_PANEL (line 45) | const SELECTOR_TAB_PANEL = '.list-group, .nav, [role="tablist"]';
  constant SELECTOR_OUTER (line 46) | const SELECTOR_OUTER = '.nav-item, .list-group-item';
  constant SELECTOR_INNER (line 47) | const SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-...
  constant SELECTOR_DATA_TOGGLE (line 48) | const SELECTOR_DATA_TOGGLE = '[data-mdb-tab-initialized]';
  constant SELECTOR_INNER_ELEM (line 49) | const SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`;
  constant SELECTOR_DATA_TOGGLE_ACTIVE (line 51) | const SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-mdb-togg...
  class Tab (line 57) | class Tab extends BaseComponent {
    method constructor (line 58) | constructor(element) {
    method NAME (line 75) | static get NAME() {
    method show (line 80) | show() {
    method _activate (line 105) | _activate(element, relatedElem) {
    method _deactivate (line 131) | _deactivate(element, relatedElem) {
    method _keydown (line 156) | _keydown(event) {
    method _getChildren (line 184) | _getChildren() {
    method _getActiveElem (line 189) | _getActiveElem() {
    method _setInitialAttributes (line 193) | _setInitialAttributes(parent, children) {
    method _setInitialAttributesOnChild (line 201) | _setInitialAttributesOnChild(child) {
    method _setInitialAttributesOnTargetPanel (line 221) | _setInitialAttributesOnTargetPanel(child) {
    method _toggleDropDown (line 235) | _toggleDropDown(element, open) {
    method _setAttributeIfNotExists (line 253) | _setAttributeIfNotExists(element, attribute, value) {
    method _elemIsActive (line 259) | _elemIsActive(elem) {
    method _getInnerElement (line 264) | _getInnerElement(elem) {
    method _getOuterElement (line 271) | _getOuterElement(elem) {
    method jQueryInterface (line 276) | static jQueryInterface(config) {

FILE: src/js/bootstrap/mdb-prefix/toast.js
  constant NAME (line 17) | const NAME = 'toast';
  constant DATA_KEY (line 18) | const DATA_KEY = 'bs.toast';
  constant EVENT_KEY (line 19) | const EVENT_KEY = `.${DATA_KEY}`;
  constant EVENT_MOUSEOVER (line 21) | const EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`;
  constant EVENT_MOUSEOUT (line 22) | const EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`;
  constant EVENT_FOCUSIN (line 23) | const EVENT_FOCUSIN = `focusin${EVENT_KEY}`;
  constant EVENT_FOCUSOUT (line 24) | const EVENT_FOCUSOUT = `focusout${EVENT_KEY}`;
  constant EVENT_HIDE (line 25) | const EVENT_HIDE = `hide${EVENT_KEY}`;
  constant EVENT_HIDDEN (line 26) | const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
  constant EVENT_SHOW (line 27) | const EVENT_SHOW = `show${EVENT_KEY}`;
  constant EVENT_SHOWN (line 28) | const EVENT_SHOWN = `shown${EVENT_KEY}`;
  constant CLASS_NAME_FADE (line 30) | const CLASS_NAME_FADE = 'fade';
  constant CLASS_NAME_HIDE (line 31) | const CLASS_NAME_HIDE = 'hide';
  constant CLASS_NAME_SHOW (line 32) | const CLASS_NAME_SHOW = 'show';
  constant CLASS_NAME_SHOWING (line 33) | const CLASS_NAME_SHOWING = 'showing';
  class Toast (line 51) | class Toast extends BaseComponent {
    method constructor (line 52) | constructor(element, config) {
    method Default (line 62) | static get Default() {
    method DefaultType (line 66) | static get DefaultType() {
    method NAME (line 70) | static get NAME() {
    method show (line 75) | show() {
    method hide (line 102) | hide() {
    method dispose (line 123) | dispose() {
    method isShown (line 133) | isShown() {
    method _maybeScheduleHide (line 139) | _maybeScheduleHide() {
    method _onInteraction (line 153) | _onInteraction(event, isInteracting) {
    method _setListeners (line 185) | _setListeners() {
    method _clearTimeout (line 192) | _clearTimeout() {
    method jQueryInterface (line 198) | static jQueryInterface(config) {

FILE: src/js/bootstrap/mdb-prefix/tooltip.js
  constant NAME (line 28) | const NAME = 'tooltip';
  constant DISALLOWED_ATTRIBUTES (line 29) | const DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitiz...
  constant CLASS_NAME_FADE (line 31) | const CLASS_NAME_FADE = 'fade';
  constant CLASS_NAME_MODAL (line 32) | const CLASS_NAME_MODAL = 'modal';
  constant CLASS_NAME_SHOW (line 33) | const CLASS_NAME_SHOW = 'show';
  constant SELECTOR_TOOLTIP_INNER (line 35) | const SELECTOR_TOOLTIP_INNER = '.tooltip-inner';
  constant SELECTOR_MODAL (line 36) | const SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;
  constant EVENT_MODAL_HIDE (line 38) | const EVENT_MODAL_HIDE = 'hide.bs.modal';
  constant TRIGGER_HOVER (line 40) | const TRIGGER_HOVER = 'hover';
  constant TRIGGER_FOCUS (line 41) | const TRIGGER_FOCUS = 'focus';
  constant TRIGGER_CLICK (line 42) | const TRIGGER_CLICK = 'click';
  constant TRIGGER_MANUAL (line 43) | const TRIGGER_MANUAL = 'manual';
  constant EVENT_HIDE (line 45) | const EVENT_HIDE = 'hide';
  constant EVENT_HIDDEN (line 46) | const EVENT_HIDDEN = 'hidden';
  constant EVENT_SHOW (line 47) | const EVENT_SHOW = 'show';
  constant EVENT_SHOWN (line 48) | const EVENT_SHOWN = 'shown';
  constant EVENT_INSERTED (line 49) | const EVENT_INSERTED = 'inserted';
  constant EVENT_CLICK (line 50) | const EVENT_CLICK = 'click';
  constant EVENT_FOCUSIN (line 51) | const EVENT_FOCUSIN = 'focusin';
  constant EVENT_FOCUSOUT (line 52) | const EVENT_FOCUSOUT = 'focusout';
  constant EVENT_MOUSEENTER (line 53) | const EVENT_MOUSEENTER = 'mouseenter';
  constant EVENT_MOUSELEAVE (line 54) | const EVENT_MOUSELEAVE = 'mouseleave';
  class Tooltip (line 112) | class Tooltip extends BaseComponent {
    method constructor (line 113) | constructor(element, config) {
    method Default (line 140) | static get Default() {
    method DefaultType (line 144) | static get DefaultType() {
    method NAME (line 148) | static get NAME() {
    method enable (line 153) | enable() {
    method disable (line 157) | disable() {
    method toggleEnabled (line 161) | toggleEnabled() {
    method toggle (line 165) | toggle() {
    method dispose (line 179) | dispose() {
    method show (line 196) | show() {
    method hide (line 256) | hide() {
    method update (line 298) | update() {
    method _isWithContent (line 305) | _isWithContent() {
    method _getTipElement (line 309) | _getTipElement() {
    method _createTipElement (line 317) | _createTipElement(content) {
    method setContent (line 340) | setContent(content) {
    method _getTemplateFactory (line 348) | _getTemplateFactory(content) {
    method _getContentForTemplate (line 364) | _getContentForTemplate() {
    method _getTitle (line 370) | _getTitle() {
    method _initializeOnDelegatedTarget (line 378) | _initializeOnDelegatedTarget(event) {
    method _isAnimated (line 382) | _isAnimated() {
    method _isShown (line 386) | _isShown() {
    method _createPopper (line 390) | _createPopper(tip) {
    method _getOffset (line 396) | _getOffset() {
    method _resolvePossibleFunction (line 410) | _resolvePossibleFunction(arg) {
    method _getPopperConfig (line 414) | _getPopperConfig(attachment) {
    method _setListeners (line 461) | _setListeners() {
    method _fixTitle (line 513) | _fixTitle() {
    method _enter (line 528) | _enter() {
    method _leave (line 543) | _leave() {
    method _setTimeout (line 557) | _setTimeout(handler, timeout) {
    method _isWithActiveTrigger (line 562) | _isWithActiveTrigger() {
    method _getConfig (line 566) | _getConfig(config) {
    method _configAfterMerge (line 585) | _configAfterMerge(config) {
    method _getDelegateConfig (line 606) | _getDelegateConfig() {
    method _disposePopper (line 624) | _disposePopper() {
    method jQueryInterface (line 637) | static jQueryInterface(config) {

FILE: src/js/bootstrap/mdb-prefix/util/backdrop.js
  constant NAME (line 16) | const NAME = 'backdrop';
  constant CLASS_NAME_FADE (line 17) | const CLASS_NAME_FADE = 'fade';
  constant CLASS_NAME_SHOW (line 18) | const CLASS_NAME_SHOW = 'show';
  constant EVENT_MOUSEDOWN (line 19) | const EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`;
  class Backdrop (line 41) | class Backdrop extends Config {
    method constructor (line 42) | constructor(config) {
    method Default (line 50) | static get Default() {
    method DefaultType (line 54) | static get DefaultType() {
    method NAME (line 58) | static get NAME() {
    method show (line 63) | show(callback) {
    method hide (line 83) | hide(callback) {
    method dispose (line 97) | dispose() {
    method _getElement (line 109) | _getElement() {
    method _configAfterMerge (line 123) | _configAfterMerge(config) {
    method _append (line 129) | _append() {
    method _emulateAnimation (line 144) | _emulateAnimation(callback) {

FILE: src/js/bootstrap/mdb-prefix/util/config.js
  class Config (line 15) | class Config {
    method Default (line 17) | static get Default() {
    method DefaultType (line 21) | static get DefaultType() {
    method NAME (line 25) | static get NAME() {
    method _getConfig (line 29) | _getConfig(config) {
    method _configAfterMerge (line 36) | _configAfterMerge(config) {
    method _mergeConfigObj (line 40) | _mergeConfigObj(config, element) {
    method _typeCheckConfig (line 51) | _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {

FILE: src/js/bootstrap/mdb-prefix/util/focustrap.js
  constant NAME (line 16) | const NAME = 'focustrap';
  constant DATA_KEY (line 17) | const DATA_KEY = 'bs.focustrap';
  constant EVENT_KEY (line 18) | const EVENT_KEY = `.${DATA_KEY}`;
  constant EVENT_FOCUSIN (line 19) | const EVENT_FOCUSIN = `focusin${EVENT_KEY}`;
  constant EVENT_KEYDOWN_TAB (line 20) | const EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`;
  constant TAB_KEY (line 22) | const TAB_KEY = 'Tab';
  constant TAB_NAV_FORWARD (line 23) | const TAB_NAV_FORWARD = 'forward';
  constant TAB_NAV_BACKWARD (line 24) | const TAB_NAV_BACKWARD = 'backward';
  class FocusTrap (line 40) | class FocusTrap extends Config {
    method constructor (line 41) | constructor(config) {
    method Default (line 49) | static get Default() {
    method DefaultType (line 53) | static get DefaultType() {
    method NAME (line 57) | static get NAME() {
    method activate (line 62) | activate() {
    method deactivate (line 78) | deactivate() {
    method _handleFocusin (line 88) | _handleFocusin(event) {
    method _handleKeydown (line 110) | _handleKeydown(event) {

FILE: src/js/bootstrap/mdb-prefix/util/index.js
  constant MAX_UID (line 8) | const MAX_UID = 1_000_000;
  constant MILLISECONDS_MULTIPLIER (line 9) | const MILLISECONDS_MULTIPLIER = 1000;
  constant TRANSITION_END (line 10) | const TRANSITION_END = 'transitionend';

FILE: src/js/bootstrap/mdb-prefix/util/sanitizer.js
  constant ARIA_ATTRIBUTE_PATTERN (line 9) | const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
  constant SAFE_URL_PATTERN (line 67) | const SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[...
  function sanitizeHtml (line 86) | function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {

FILE: src/js/bootstrap/mdb-prefix/util/scrollbar.js
  constant SELECTOR_FIXED_CONTENT (line 16) | const SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .s...
  constant SELECTOR_STICKY_CONTENT (line 17) | const SELECTOR_STICKY_CONTENT = '.sticky-top';
  constant PROPERTY_PADDING (line 18) | const PROPERTY_PADDING = 'padding-right';
  constant PROPERTY_MARGIN (line 19) | const PROPERTY_MARGIN = 'margin-right';
  class ScrollBarHelper (line 25) | class ScrollBarHelper {
    method constructor (line 26) | constructor() {
    method getWidth (line 31) | getWidth() {
    method hide (line 37) | hide() {
    method reset (line 59) | reset() {
    method isOverflowing (line 66) | isOverflowing() {
    method _disableOverFlow (line 71) | _disableOverFlow() {
    method _setElementAttributes (line 76) | _setElementAttributes(selector, styleProperty, callback) {
    method _saveInitialAttribute (line 91) | _saveInitialAttribute(element, styleProperty) {
    method _resetElementAttributes (line 98) | _resetElementAttributes(selector, styleProperty) {
    method _applyManipulationCallback (line 114) | _applyManipulationCallback(selector, callBack) {

FILE: src/js/bootstrap/mdb-prefix/util/swipe.js
  constant NAME (line 16) | const NAME = 'swipe';
  constant EVENT_KEY (line 17) | const EVENT_KEY = '.bs.swipe';
  constant EVENT_TOUCHSTART (line 18) | const EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`;
  constant EVENT_TOUCHMOVE (line 19) | const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`;
  constant EVENT_TOUCHEND (line 20) | const EVENT_TOUCHEND = `touchend${EVENT_KEY}`;
  constant EVENT_POINTERDOWN (line 21) | const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`;
  constant EVENT_POINTERUP (line 22) | const EVENT_POINTERUP = `pointerup${EVENT_KEY}`;
  constant POINTER_TYPE_TOUCH (line 23) | const POINTER_TYPE_TOUCH = 'touch';
  constant POINTER_TYPE_PEN (line 24) | const POINTER_TYPE_PEN = 'pen';
  constant CLASS_NAME_POINTER_EVENT (line 25) | const CLASS_NAME_POINTER_EVENT = 'pointer-event';
  constant SWIPE_THRESHOLD (line 26) | const SWIPE_THRESHOLD = 40;
  class Swipe (line 44) | class Swipe extends Config {
    method constructor (line 45) | constructor(element, config) {
    method Default (line 60) | static get Default() {
    method DefaultType (line 64) | static get DefaultType() {
    method NAME (line 68) | static get NAME() {
    method dispose (line 73) | dispose() {
    method _start (line 78) | _start(event) {
    method _end (line 90) | _end(event) {
    method _move (line 99) | _move(event) {
    method _handleSwipe (line 104) | _handleSwipe() {
    method _initEvents (line 122) | _initEvents() {
    method _eventIsPointerPenTouch (line 135) | _eventIsPointerPenTouch(event) {
    method isSupported (line 143) | static isSupported() {

FILE: src/js/bootstrap/mdb-prefix/util/template-factory.js
  constant NAME (line 17) | const NAME = 'TemplateFactory';
  class TemplateFactory (line 48) | class TemplateFactory extends Config {
    method constructor (line 49) | constructor(config) {
    method Default (line 55) | static get Default() {
    method DefaultType (line 59) | static get DefaultType() {
    method NAME (line 63) | static get NAME() {
    method getContent (line 68) | getContent() {
    method hasContent (line 74) | hasContent() {
    method changeContent (line 78) | changeContent(content) {
    method toHtml (line 84) | toHtml() {
    method _typeCheckConfig (line 103) | _typeCheckConfig(config) {
    method _checkContent (line 108) | _checkContent(arg) {
    method _setContent (line 114) | _setContent(template, content, selector) {
    method _maybeSanitize (line 141) | _maybeSanitize(arg) {
    method _resolvePossibleFunction (line 147) | _resolvePossibleFunction(arg) {
    method _putElementInTemplate (line 151) | _putElementInTemplate(element, templateElement) {

FILE: src/js/bootstrap/src/alert.js
  constant NAME (line 17) | const NAME = 'alert';
  constant DATA_KEY (line 18) | const DATA_KEY = 'bs.alert';
  constant EVENT_KEY (line 19) | const EVENT_KEY = `.${DATA_KEY}`;
  constant EVENT_CLOSE (line 21) | const EVENT_CLOSE = `close${EVENT_KEY}`;
  constant EVENT_CLOSED (line 22) | const EVENT_CLOSED = `closed${EVENT_KEY}`;
  constant CLASS_NAME_FADE (line 23) | const CLASS_NAME_FADE = 'fade';
  constant CLASS_NAME_SHOW (line 24) | const CLASS_NAME_SHOW = 'show';
  class Alert (line 30) | class Alert extends BaseComponent {
    method NAME (line 32) | static get NAME() {
    method close (line 37) | close() {
    method _destroyElement (line 51) | _destroyElement() {
    method jQueryInterface (line 58) | static jQueryInterface(config) {

FILE: src/js/bootstrap/src/base-component.js
  constant VERSION (line 17) | const VERSION = '5.3.3';
  class BaseComponent (line 23) | class BaseComponent extends Config {
    method constructor (line 24) | constructor(element, config) {
    method dispose (line 39) | dispose() {
    method _queueCallback (line 48) | _queueCallback(callback, element, isAnimated = true) {
    method _getConfig (line 52) | _getConfig(config) {
    method getInstance (line 60) | static getInstance(element) {
    method getOrCreateInstance (line 64) | static getOrCreateInstance(element, config = {}) {
    method VERSION (line 70) | static get VERSION() {
    method DATA_KEY (line 74) | static get DATA_KEY() {
    method EVENT_KEY (line 78) | static get EVENT_KEY() {
    method eventName (line 82) | static eventName(name) {

FILE: src/js/bootstrap/src/button.js
  constant NAME (line 16) | const NAME = 'button';
  constant DATA_KEY (line 17) | const DATA_KEY = 'bs.button';
  constant EVENT_KEY (line 18) | const EVENT_KEY = `.${DATA_KEY}`;
  constant DATA_API_KEY (line 19) | const DATA_API_KEY = '.data-api';
  constant CLASS_NAME_ACTIVE (line 21) | const CLASS_NAME_ACTIVE = 'active';
  constant SELECTOR_DATA_TOGGLE (line 22) | const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="button"]';
  constant EVENT_CLICK_DATA_API (line 23) | const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
  class Button (line 29) | class Button extends BaseComponent {
    method NAME (line 31) | static get NAME() {
    method toggle (line 36) | toggle() {
    method jQueryInterface (line 42) | static jQueryInterface(config) {

FILE: src/js/bootstrap/src/carousel.js
  constant NAME (line 26) | const NAME = 'carousel';
  constant DATA_KEY (line 27) | const DATA_KEY = 'bs.carousel';
  constant EVENT_KEY (line 28) | const EVENT_KEY = `.${DATA_KEY}`;
  constant DATA_API_KEY (line 29) | const DATA_API_KEY = '.data-api';
  constant ARROW_LEFT_KEY (line 31) | const ARROW_LEFT_KEY = 'ArrowLeft';
  constant ARROW_RIGHT_KEY (line 32) | const ARROW_RIGHT_KEY = 'ArrowRight';
  constant TOUCHEVENT_COMPAT_WAIT (line 33) | const TOUCHEVENT_COMPAT_WAIT = 500;
  constant ORDER_NEXT (line 35) | const ORDER_NEXT = 'next';
  constant ORDER_PREV (line 36) | const ORDER_PREV = 'prev';
  constant DIRECTION_LEFT (line 37) | const DIRECTION_LEFT = 'left';
  constant DIRECTION_RIGHT (line 38) | const DIRECTION_RIGHT = 'right';
  constant EVENT_SLIDE (line 40) | const EVENT_SLIDE = `slide${EVENT_KEY}`;
  constant EVENT_SLID (line 41) | const EVENT_SLID = `slid${EVENT_KEY}`;
  constant EVENT_KEYDOWN (line 42) | const EVENT_KEYDOWN = `keydown${EVENT_KEY}`;
  constant EVENT_MOUSEENTER (line 43) | const EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`;
  constant EVENT_MOUSELEAVE (line 44) | const EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`;
  constant EVENT_DRAG_START (line 45) | const EVENT_DRAG_START = `dragstart${EVENT_KEY}`;
  constant EVENT_LOAD_DATA_API (line 46) | const EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`;
  constant EVENT_CLICK_DATA_API (line 47) | const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
  constant CLASS_NAME_CAROUSEL (line 49) | const CLASS_NAME_CAROUSEL = 'carousel';
  constant CLASS_NAME_ACTIVE (line 50) | const CLASS_NAME_ACTIVE = 'active';
  constant CLASS_NAME_SLIDE (line 51) | const CLASS_NAME_SLIDE = 'slide';
  constant CLASS_NAME_END (line 52) | const CLASS_NAME_END = 'carousel-item-end';
  constant CLASS_NAME_START (line 53) | const CLASS_NAME_START = 'carousel-item-start';
  constant CLASS_NAME_NEXT (line 54) | const CLASS_NAME_NEXT = 'carousel-item-next';
  constant CLASS_NAME_PREV (line 55) | const CLASS_NAME_PREV = 'carousel-item-prev';
  constant SELECTOR_ACTIVE (line 57) | const SELECTOR_ACTIVE = '.active';
  constant SELECTOR_ITEM (line 58) | const SELECTOR_ITEM = '.carousel-item';
  constant SELECTOR_ACTIVE_ITEM (line 59) | const SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM;
  constant SELECTOR_ITEM_IMG (line 60) | const SELECTOR_ITEM_IMG = '.carousel-item img';
  constant SELECTOR_INDICATORS (line 61) | const SELECTOR_INDICATORS = '.carousel-indicators';
  constant SELECTOR_DATA_SLIDE (line 62) | const SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';
  constant SELECTOR_DATA_RIDE (line 63) | const SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]';
  constant KEY_TO_DIRECTION (line 65) | const KEY_TO_DIRECTION = {
  class Carousel (line 92) | class Carousel extends BaseComponent {
    method constructor (line 93) | constructor(element, config) {
    method Default (line 111) | static get Default() {
    method DefaultType (line 115) | static get DefaultType() {
    method NAME (line 119) | static get NAME() {
    method next (line 124) | next() {
    method nextWhenVisible (line 128) | nextWhenVisible() {
    method prev (line 137) | prev() {
    method pause (line 141) | pause() {
    method cycle (line 149) | cycle() {
    method _maybeEnableCycle (line 156) | _maybeEnableCycle() {
    method to (line 169) | to(index) {
    method dispose (line 190) | dispose() {
    method _configAfterMerge (line 199) | _configAfterMerge(config) {
    method _addEventListeners (line 204) | _addEventListeners() {
    method _addTouchEventListeners (line 219) | _addTouchEventListeners() {
    method _keydown (line 257) | _keydown(event) {
    method _getItemIndex (line 269) | _getItemIndex(element) {
    method _setActiveIndicatorElement (line 273) | _setActiveIndicatorElement(index) {
    method _updateInterval (line 294) | _updateInterval() {
    method _slide (line 306) | _slide(order, element = null) {
    method _isAnimated (line 379) | _isAnimated() {
    method _getActive (line 383) | _getActive() {
    method _getItems (line 387) | _getItems() {
    method _clearInterval (line 391) | _clearInterval() {
    method _directionToOrder (line 398) | _directionToOrder(direction) {
    method _orderToDirection (line 406) | _orderToDirection(order) {
    method jQueryInterface (line 415) | static jQueryInterface(config) {

FILE: src/js/bootstrap/src/collapse.js
  constant NAME (line 17) | const NAME = 'collapse';
  constant DATA_KEY (line 18) | const DATA_KEY = 'bs.collapse';
  constant EVENT_KEY (line 19) | const EVENT_KEY = `.${DATA_KEY}`;
  constant DATA_API_KEY (line 20) | const DATA_API_KEY = '.data-api';
  constant EVENT_SHOW (line 22) | const EVENT_SHOW = `show${EVENT_KEY}`;
  constant EVENT_SHOWN (line 23) | const EVENT_SHOWN = `shown${EVENT_KEY}`;
  constant EVENT_HIDE (line 24) | const EVENT_HIDE = `hide${EVENT_KEY}`;
  constant EVENT_HIDDEN (line 25) | const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
  constant EVENT_CLICK_DATA_API (line 26) | const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
  constant CLASS_NAME_SHOW (line 28) | const CLASS_NAME_SHOW = 'show';
  constant CLASS_NAME_COLLAPSE (line 29) | const CLASS_NAME_COLLAPSE = 'collapse';
  constant CLASS_NAME_COLLAPSING (line 30) | const CLASS_NAME_COLLAPSING = 'collapsing';
  constant CLASS_NAME_COLLAPSED (line 31) | const CLASS_NAME_COLLAPSED = 'collapsed';
  constant CLASS_NAME_DEEPER_CHILDREN (line 32) | const CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CL...
  constant CLASS_NAME_HORIZONTAL (line 33) | const CLASS_NAME_HORIZONTAL = 'collapse-horizontal';
  constant WIDTH (line 35) | const WIDTH = 'width';
  constant HEIGHT (line 36) | const HEIGHT = 'height';
  constant SELECTOR_ACTIVES (line 38) | const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';
  constant SELECTOR_DATA_TOGGLE (line 39) | const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="collapse"]';
  class Collapse (line 55) | class Collapse extends BaseComponent {
    method constructor (line 56) | constructor(element, config) {
    method Default (line 87) | static get Default() {
    method DefaultType (line 91) | static get DefaultType() {
    method NAME (line 95) | static get NAME() {
    method toggle (line 100) | toggle() {
    method show (line 108) | show() {
    method hide (line 163) | hide() {
    method _isShown (line 204) | _isShown(element = this._element) {
    method _configAfterMerge (line 209) | _configAfterMerge(config) {
    method _getDimension (line 215) | _getDimension() {
    method _initializeChildren (line 219) | _initializeChildren() {
    method _getFirstLevelChildren (line 235) | _getFirstLevelChildren(selector) {
    method _addAriaAndCollapsedClass (line 243) | _addAriaAndCollapsedClass(triggerArray, isOpen) {
    method jQueryInterface (line 255) | static jQueryInterface(config) {

FILE: src/js/bootstrap/src/dom/data.js
  method set (line 15) | set(element, key, instance) {
  method get (line 37) | get(element, key) {
  method remove (line 45) | remove(element, key) {

FILE: src/js/bootstrap/src/dom/event-handler.js
  function makeEventUid (line 77) | function makeEventUid(element, uid) {
  function getElementEvents (line 81) | function getElementEvents(element) {
  function bootstrapHandler (line 90) | function bootstrapHandler(element, fn) {
  function bootstrapDelegationHandler (line 102) | function bootstrapDelegationHandler(element, selector, fn) {
  function findHandler (line 124) | function findHandler(events, callable, delegationSelector = null) {
  function normalizeParameters (line 130) | function normalizeParameters(originalTypeEvent, handler, delegationFunct...
  function addHandler (line 143) | function addHandler(element, originalTypeEvent, handler, delegationFunct...
  function removeHandler (line 196) | function removeHandler(element, events, typeEvent, handler, delegationSe...
  function removeNamespacedHandlers (line 207) | function removeNamespacedHandlers(element, events, typeEvent, namespace) {
  function getTypeEvent (line 217) | function getTypeEvent(event) {
  method on (line 224) | on(element, event, handler, delegationFunction) {
  method one (line 228) | one(element, event, handler, delegationFunction) {
  method off (line 232) | off(element, originalTypeEvent, handler, delegationFunction) {
  method trigger (line 272) | trigger(element, event, args) {
  function hydrateObj (line 313) | function hydrateObj(obj, meta = {}) {

FILE: src/js/bootstrap/src/dom/manipulator.js
  function normalizeData (line 8) | function normalizeData(value) {
  function normalizeDataKey (line 36) | function normalizeDataKey(key) {
  method setDataAttribute (line 41) | setDataAttribute(element, key, value) {
  method removeDataAttribute (line 45) | removeDataAttribute(element, key) {
  method getDataAttributes (line 49) | getDataAttributes(element) {
  method getDataAttribute (line 68) | getDataAttribute(element, key) {

FILE: src/js/bootstrap/src/dom/selector-engine.js
  method find (line 41) | find(selector, element = document.documentElement) {
  method findOne (line 45) | findOne(selector, element = document.documentElement) {
  method children (line 49) | children(element, selector) {
  method parents (line 53) | parents(element, selector) {
  method prev (line 65) | prev(element, selector) {
  method next (line 79) | next(element, selector) {
  method focusableChildren (line 93) | focusableChildren(element) {
  method getSelectorFromElement (line 110) | getSelectorFromElement(element) {
  method getElementFromSelector (line 120) | getElementFromSelector(element) {
  method getMultipleElementsFromSelector (line 126) | getMultipleElementsFromSelector(element) {

FILE: src/js/bootstrap/src/dropdown.js
  constant NAME (line 29) | const NAME = 'dropdown';
  constant DATA_KEY (line 30) | const DATA_KEY = 'bs.dropdown';
  constant EVENT_KEY (line 31) | const EVENT_KEY = `.${DATA_KEY}`;
  constant DATA_API_KEY (line 32) | const DATA_API_KEY = '.data-api';
  constant ESCAPE_KEY (line 34) | const ESCAPE_KEY = 'Escape';
  constant TAB_KEY (line 35) | const TAB_KEY = 'Tab';
  constant ARROW_UP_KEY (line 36) | const ARROW_UP_KEY = 'ArrowUp';
  constant ARROW_DOWN_KEY (line 37) | const ARROW_DOWN_KEY = 'ArrowDown';
  constant RIGHT_MOUSE_BUTTON (line 38) | const RIGHT_MOUSE_BUTTON = 2;
  constant EVENT_HIDE (line 40) | const EVENT_HIDE = `hide${EVENT_KEY}`;
  constant EVENT_HIDDEN (line 41) | const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
  constant EVENT_SHOW (line 42) | const EVENT_SHOW = `show${EVENT_KEY}`;
  constant EVENT_SHOWN (line 43) | const EVENT_SHOWN = `shown${EVENT_KEY}`;
  constant EVENT_CLICK_DATA_API (line 44) | const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
  constant EVENT_KEYDOWN_DATA_API (line 45) | const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`;
  constant EVENT_KEYUP_DATA_API (line 46) | const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`;
  constant CLASS_NAME_SHOW (line 48) | const CLASS_NAME_SHOW = 'show';
  constant CLASS_NAME_DROPUP (line 49) | const CLASS_NAME_DROPUP = 'dropup';
  constant CLASS_NAME_DROPEND (line 50) | const CLASS_NAME_DROPEND = 'dropend';
  constant CLASS_NAME_DROPSTART (line 51) | const CLASS_NAME_DROPSTART = 'dropstart';
  constant CLASS_NAME_DROPUP_CENTER (line 52) | const CLASS_NAME_DROPUP_CENTER = 'dropup-center';
  constant CLASS_NAME_DROPDOWN_CENTER (line 53) | const CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center';
  constant SELECTOR_DATA_TOGGLE (line 55) | const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="dropdown"]:not(.disabled)...
  constant SELECTOR_DATA_TOGGLE_SHOWN (line 56) | const SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE}.${CLASS_NAME...
  constant SELECTOR_MENU (line 57) | const SELECTOR_MENU = '.dropdown-menu';
  constant SELECTOR_NAVBAR (line 58) | const SELECTOR_NAVBAR = '.navbar';
  constant SELECTOR_NAVBAR_NAV (line 59) | const SELECTOR_NAVBAR_NAV = '.navbar-nav';
  constant SELECTOR_VISIBLE_ITEMS (line 60) | const SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disab...
  constant PLACEMENT_TOP (line 62) | const PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';
  constant PLACEMENT_TOPEND (line 63) | const PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';
  constant PLACEMENT_BOTTOM (line 64) | const PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';
  constant PLACEMENT_BOTTOMEND (line 65) | const PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';
  constant PLACEMENT_RIGHT (line 66) | const PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';
  constant PLACEMENT_LEFT (line 67) | const PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';
  constant PLACEMENT_TOPCENTER (line 68) | const PLACEMENT_TOPCENTER = 'top';
  constant PLACEMENT_BOTTOMCENTER (line 69) | const PLACEMENT_BOTTOMCENTER = 'bottom';
  class Dropdown (line 93) | class Dropdown extends BaseComponent {
    method constructor (line 94) | constructor(element, config) {
    method Default (line 108) | static get Default() {
    method DefaultType (line 112) | static get DefaultType() {
    method NAME (line 116) | static get NAME() {
    method toggle (line 121) | toggle() {
    method show (line 125) | show() {
    method hide (line 160) | hide() {
    method dispose (line 172) | dispose() {
    method update (line 180) | update() {
    method _completeHide (line 188) | _completeHide(relatedTarget) {
    method _getConfig (line 213) | _getConfig(config) {
    method _createPopper (line 230) | _createPopper() {
    method _isShown (line 249) | _isShown() {
    method _getPlacement (line 253) | _getPlacement() {
    method _detectNavbar (line 282) | _detectNavbar() {
    method _getOffset (line 286) | _getOffset() {
    method _getPopperConfig (line 300) | _getPopperConfig() {
    method _selectMenuItem (line 336) | _selectMenuItem({ key, target }) {
    method jQueryInterface (line 351) | static jQueryInterface(config) {
    method clearMenus (line 367) | static clearMenus(event) {
    method dataApiKeydownHandler (line 409) | static dataApiKeydownHandler(event) {

FILE: src/js/bootstrap/src/modal.js
  constant NAME (line 21) | const NAME = 'modal';
  constant DATA_KEY (line 22) | const DATA_KEY = 'bs.modal';
  constant EVENT_KEY (line 23) | const EVENT_KEY = `.${DATA_KEY}`;
  constant DATA_API_KEY (line 24) | const DATA_API_KEY = '.data-api';
  constant ESCAPE_KEY (line 25) | const ESCAPE_KEY = 'Escape';
  constant EVENT_HIDE (line 27) | const EVENT_HIDE = `hide${EVENT_KEY}`;
  constant EVENT_HIDE_PREVENTED (line 28) | const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`;
  constant EVENT_HIDDEN (line 29) | const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
  constant EVENT_SHOW (line 30) | const EVENT_SHOW = `show${EVENT_KEY}`;
  constant EVENT_SHOWN (line 31) | const EVENT_SHOWN = `shown${EVENT_KEY}`;
  constant EVENT_RESIZE (line 32) | const EVENT_RESIZE = `resize${EVENT_KEY}`;
  constant EVENT_CLICK_DISMISS (line 33) | const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`;
  constant EVENT_MOUSEDOWN_DISMISS (line 34) | const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`;
  constant EVENT_KEYDOWN_DISMISS (line 35) | const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`;
  constant EVENT_CLICK_DATA_API (line 36) | const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
  constant CLASS_NAME_OPEN (line 38) | const CLASS_NAME_OPEN = 'modal-open';
  constant CLASS_NAME_FADE (line 39) | const CLASS_NAME_FADE = 'fade';
  constant CLASS_NAME_SHOW (line 40) | const CLASS_NAME_SHOW = 'show';
  constant CLASS_NAME_STATIC (line 41) | const CLASS_NAME_STATIC = 'modal-static';
  constant OPEN_SELECTOR (line 43) | const OPEN_SELECTOR = '.modal.show';
  constant SELECTOR_DIALOG (line 44) | const SELECTOR_DIALOG = '.modal-dialog';
  constant SELECTOR_MODAL_BODY (line 45) | const SELECTOR_MODAL_BODY = '.modal-body';
  constant SELECTOR_DATA_TOGGLE (line 46) | const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="modal"]';
  class Modal (line 64) | class Modal extends BaseComponent {
    method constructor (line 65) | constructor(element, config) {
    method Default (line 79) | static get Default() {
    method DefaultType (line 83) | static get DefaultType() {
    method NAME (line 87) | static get NAME() {
    method toggle (line 92) | toggle(relatedTarget) {
    method show (line 96) | show(relatedTarget) {
    method hide (line 121) | hide() {
    method dispose (line 141) | dispose() {
    method handleUpdate (line 151) | handleUpdate() {
    method _initializeBackDrop (line 156) | _initializeBackDrop() {
    method _initializeFocusTrap (line 163) | _initializeFocusTrap() {
    method _showElement (line 169) | _showElement(relatedTarget) {
    method _addEventListeners (line 204) | _addEventListeners() {
    method _hideModal (line 243) | _hideModal() {
    method _isAnimated (line 258) | _isAnimated() {
    method _triggerBackdropTransition (line 262) | _triggerBackdropTransition() {
    method _adjustDialog (line 294) | _adjustDialog() {
    method _resetAdjustments (line 310) | _resetAdjustments() {
    method jQueryInterface (line 316) | static jQueryInterface(config, relatedTarget) {

FILE: src/js/bootstrap/src/offcanvas.js
  constant NAME (line 21) | const NAME = 'offcanvas';
  constant DATA_KEY (line 22) | const DATA_KEY = 'bs.offcanvas';
  constant EVENT_KEY (line 23) | const EVENT_KEY = `.${DATA_KEY}`;
  constant DATA_API_KEY (line 24) | const DATA_API_KEY = '.data-api';
  constant EVENT_LOAD_DATA_API (line 25) | const EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`;
  constant ESCAPE_KEY (line 26) | const ESCAPE_KEY = 'Escape';
  constant CLASS_NAME_SHOW (line 28) | const CLASS_NAME_SHOW = 'show';
  constant CLASS_NAME_SHOWING (line 29) | const CLASS_NAME_SHOWING = 'showing';
  constant CLASS_NAME_HIDING (line 30) | const CLASS_NAME_HIDING = 'hiding';
  constant CLASS_NAME_BACKDROP (line 31) | const CLASS_NAME_BACKDROP = 'offcanvas-backdrop';
  constant OPEN_SELECTOR (line 32) | const OPEN_SELECTOR = '.offcanvas.show';
  constant EVENT_SHOW (line 34) | const EVENT_SHOW = `show${EVENT_KEY}`;
  constant EVENT_SHOWN (line 35) | const EVENT_SHOWN = `shown${EVENT_KEY}`;
  constant EVENT_HIDE (line 36) | const EVENT_HIDE = `hide${EVENT_KEY}`;
  constant EVENT_HIDE_PREVENTED (line 37) | const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`;
  constant EVENT_HIDDEN (line 38) | const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
  constant EVENT_RESIZE (line 39) | const EVENT_RESIZE = `resize${EVENT_KEY}`;
  constant EVENT_CLICK_DATA_API (line 40) | const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
  constant EVENT_KEYDOWN_DISMISS (line 41) | const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`;
  constant SELECTOR_DATA_TOGGLE (line 43) | const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="offcanvas"]';
  class Offcanvas (line 61) | class Offcanvas extends BaseComponent {
    method constructor (line 62) | constructor(element, config) {
    method Default (line 72) | static get Default() {
    method DefaultType (line 76) | static get DefaultType() {
    method NAME (line 80) | static get NAME() {
    method toggle (line 85) | toggle(relatedTarget) {
    method show (line 89) | show(relatedTarget) {
    method hide (line 124) | hide() {
    method dispose (line 156) | dispose() {
    method _initializeBackDrop (line 163) | _initializeBackDrop() {
    method _initializeFocusTrap (line 185) | _initializeFocusTrap() {
    method _addEventListeners (line 191) | _addEventListeners() {
    method jQueryInterface (line 207) | static jQueryInterface(config) {

FILE: src/js/bootstrap/src/popover.js
  constant NAME (line 15) | const NAME = 'popover';
  constant SELECTOR_TITLE (line 17) | const SELECTOR_TITLE = '.popover-header';
  constant SELECTOR_CONTENT (line 18) | const SELECTOR_CONTENT = '.popover-body';
  class Popover (line 43) | class Popover extends Tooltip {
    method Default (line 45) | static get Default() {
    method DefaultType (line 49) | static get DefaultType() {
    method NAME (line 53) | static get NAME() {
    method _isWithContent (line 58) | _isWithContent() {
    method _getContentForTemplate (line 63) | _getContentForTemplate() {
    method _getContent (line 70) | _getContent() {
    method jQueryInterface (line 75) | static jQueryInterface(config) {

FILE: src/js/bootstrap/src/scrollspy.js
  constant NAME (line 17) | const NAME = 'scrollspy';
  constant DATA_KEY (line 18) | const DATA_KEY = 'bs.scrollspy';
  constant EVENT_KEY (line 19) | const EVENT_KEY = `.${DATA_KEY}`;
  constant DATA_API_KEY (line 20) | const DATA_API_KEY = '.data-api';
  constant EVENT_ACTIVATE (line 22) | const EVENT_ACTIVATE = `activate${EVENT_KEY}`;
  constant EVENT_CLICK (line 23) | const EVENT_CLICK = `click${EVENT_KEY}`;
  constant EVENT_LOAD_DATA_API (line 24) | const EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`;
  constant CLASS_NAME_DROPDOWN_ITEM (line 26) | const CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';
  constant CLASS_NAME_ACTIVE (line 27) | const CLASS_NAME_ACTIVE = 'active';
  constant SELECTOR_DATA_SPY (line 29) | const SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]';
  constant SELECTOR_TARGET_LINKS (line 30) | const SELECTOR_TARGET_LINKS = '[href]';
  constant SELECTOR_NAV_LIST_GROUP (line 31) | const SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';
  constant SELECTOR_NAV_LINKS (line 32) | const SELECTOR_NAV_LINKS = '.nav-link';
  constant SELECTOR_NAV_ITEMS (line 33) | const SELECTOR_NAV_ITEMS = '.nav-item';
  constant SELECTOR_LIST_ITEMS (line 34) | const SELECTOR_LIST_ITEMS = '.list-group-item';
  constant SELECTOR_LINK_ITEMS (line 35) | const SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS...
  constant SELECTOR_DROPDOWN (line 36) | const SELECTOR_DROPDOWN = '.dropdown';
  constant SELECTOR_DROPDOWN_TOGGLE (line 37) | const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';
  class ScrollSpy (line 59) | class ScrollSpy extends BaseComponent {
    method constructor (line 60) | constructor(element, config) {
    method Default (line 78) | static get Default() {
    method DefaultType (line 82) | static get DefaultType() {
    method NAME (line 86) | static get NAME() {
    method refresh (line 91) | refresh() {
    method dispose (line 106) | dispose() {
    method _configAfterMerge (line 112) | _configAfterMerge(config) {
    method _maybeEnableSmoothScroll (line 126) | _maybeEnableSmoothScroll() {
    method _getNewObserver (line 151) | _getNewObserver() {
    method _observerCallback (line 162) | _observerCallback(entries) {
    method _initializeTargetsAndObservables (line 201) | _initializeTargetsAndObservables() {
    method _process (line 223) | _process(target) {
    method _activateParents (line 236) | _activateParents(target) {
    method _clearActiveClass (line 255) | _clearActiveClass(parent) {
    method jQueryInterface (line 268) | static jQueryInterface(config) {

FILE: src/js/bootstrap/src/tab.js
  constant NAME (line 17) | const NAME = 'tab';
  constant DATA_KEY (line 18) | const DATA_KEY = 'bs.tab';
  constant EVENT_KEY (line 19) | const EVENT_KEY = `.${DATA_KEY}`;
  constant EVENT_HIDE (line 21) | const EVENT_HIDE = `hide${EVENT_KEY}`;
  constant EVENT_HIDDEN (line 22) | const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
  constant EVENT_SHOW (line 23) | const EVENT_SHOW = `show${EVENT_KEY}`;
  constant EVENT_SHOWN (line 24) | const EVENT_SHOWN = `shown${EVENT_KEY}`;
  constant EVENT_CLICK_DATA_API (line 25) | const EVENT_CLICK_DATA_API = `click${EVENT_KEY}`;
  constant EVENT_KEYDOWN (line 26) | const EVENT_KEYDOWN = `keydown${EVENT_KEY}`;
  constant EVENT_LOAD_DATA_API (line 27) | const EVENT_LOAD_DATA_API = `load${EVENT_KEY}`;
  constant ARROW_LEFT_KEY (line 29) | const ARROW_LEFT_KEY = 'ArrowLeft';
  constant ARROW_RIGHT_KEY (line 30) | const ARROW_RIGHT_KEY = 'ArrowRight';
  constant ARROW_UP_KEY (line 31) | const ARROW_UP_KEY = 'ArrowUp';
  constant ARROW_DOWN_KEY (line 32) | const ARROW_DOWN_KEY = 'ArrowDown';
  constant HOME_KEY (line 33) | const HOME_KEY = 'Home';
  constant END_KEY (line 34) | const END_KEY = 'End';
  constant CLASS_NAME_ACTIVE (line 36) | const CLASS_NAME_ACTIVE = 'active';
  constant CLASS_NAME_FADE (line 37) | const CLASS_NAME_FADE = 'fade';
  constant CLASS_NAME_SHOW (line 38) | const CLASS_NAME_SHOW = 'show';
  constant CLASS_DROPDOWN (line 39) | const CLASS_DROPDOWN = 'dropdown';
  constant SELECTOR_DROPDOWN_TOGGLE (line 41) | const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';
  constant SELECTOR_DROPDOWN_MENU (line 42) | const SELECTOR_DROPDOWN_MENU = '.dropdown-menu';
  constant NOT_SELECTOR_DROPDOWN_TOGGLE (line 43) | const NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`;
  constant SELECTOR_TAB_PANEL (line 45) | const SELECTOR_TAB_PANEL = '.list-group, .nav, [role="tablist"]';
  constant SELECTOR_OUTER (line 46) | const SELECTOR_OUTER = '.nav-item, .list-group-item';
  constant SELECTOR_INNER (line 47) | const SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-...
  constant SELECTOR_DATA_TOGGLE (line 48) | const SELECTOR_DATA_TOGGLE =
  constant SELECTOR_INNER_ELEM (line 50) | const SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`;
  constant SELECTOR_DATA_TOGGLE_ACTIVE (line 52) | const SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggl...
  class Tab (line 58) | class Tab extends BaseComponent {
    method constructor (line 59) | constructor(element) {
    method NAME (line 76) | static get NAME() {
    method show (line 81) | show() {
    method _activate (line 106) | _activate(element, relatedElem) {
    method _deactivate (line 132) | _deactivate(element, relatedElem) {
    method _keydown (line 157) | _keydown(event) {
    method _getChildren (line 185) | _getChildren() {
    method _getActiveElem (line 190) | _getActiveElem() {
    method _setInitialAttributes (line 194) | _setInitialAttributes(parent, children) {
    method _setInitialAttributesOnChild (line 202) | _setInitialAttributesOnChild(child) {
    method _setInitialAttributesOnTargetPanel (line 222) | _setInitialAttributesOnTargetPanel(child) {
    method _toggleDropDown (line 236) | _toggleDropDown(element, open) {
    method _setAttributeIfNotExists (line 254) | _setAttributeIfNotExists(element, attribute, value) {
    method _elemIsActive (line 260) | _elemIsActive(elem) {
    method _getInnerElement (line 265) | _getInnerElement(elem) {
    method _getOuterElement (line 272) | _getOuterElement(elem) {
    method jQueryInterface (line 277) | static jQueryInterface(config) {

FILE: src/js/bootstrap/src/toast.js
  constant NAME (line 17) | const NAME = 'toast';
  constant DATA_KEY (line 18) | const DATA_KEY = 'bs.toast';
  constant EVENT_KEY (line 19) | const EVENT_KEY = `.${DATA_KEY}`;
  constant EVENT_MOUSEOVER (line 21) | const EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`;
  constant EVENT_MOUSEOUT (line 22) | const EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`;
  constant EVENT_FOCUSIN (line 23) | const EVENT_FOCUSIN = `focusin${EVENT_KEY}`;
  constant EVENT_FOCUSOUT (line 24) | const EVENT_FOCUSOUT = `focusout${EVENT_KEY}`;
  constant EVENT_HIDE (line 25) | const EVENT_HIDE = `hide${EVENT_KEY}`;
  constant EVENT_HIDDEN (line 26) | const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
  constant EVENT_SHOW (line 27) | const EVENT_SHOW = `show${EVENT_KEY}`;
  constant EVENT_SHOWN (line 28) | const EVENT_SHOWN = `shown${EVENT_KEY}`;
  constant CLASS_NAME_FADE (line 30) | const CLASS_NAME_FADE = 'fade';
  constant CLASS_NAME_HIDE (line 31) | const CLASS_NAME_HIDE = 'hide';
  constant CLASS_NAME_SHOW (line 32) | const CLASS_NAME_SHOW = 'show';
  constant CLASS_NAME_SHOWING (line 33) | const CLASS_NAME_SHOWING = 'showing';
  class Toast (line 51) | class Toast extends BaseComponent {
    method constructor (line 52) | constructor(element, config) {
    method Default (line 62) | static get Default() {
    method DefaultType (line 66) | static get DefaultType() {
    method NAME (line 70) | static get NAME() {
    method show (line 75) | show() {
    method hide (line 102) | hide() {
    method dispose (line 123) | dispose() {
    method isShown (line 133) | isShown() {
    method _maybeScheduleHide (line 139) | _maybeScheduleHide() {
    method _onInteraction (line 153) | _onInteraction(event, isInteracting) {
    method _setListeners (line 185) | _setListeners() {
    method _clearTimeout (line 192) | _clearTimeout() {
    method jQueryInterface (line 198) | static jQueryInterface(config) {

FILE: src/js/bootstrap/src/tooltip.js
  constant NAME (line 28) | const NAME = 'tooltip';
  constant DISALLOWED_ATTRIBUTES (line 29) | const DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitiz...
  constant CLASS_NAME_FADE (line 31) | const CLASS_NAME_FADE = 'fade';
  constant CLASS_NAME_MODAL (line 32) | const CLASS_NAME_MODAL = 'modal';
  constant CLASS_NAME_SHOW (line 33) | const CLASS_NAME_SHOW = 'show';
  constant SELECTOR_TOOLTIP_INNER (line 35) | const SELECTOR_TOOLTIP_INNER = '.tooltip-inner';
  constant SELECTOR_MODAL (line 36) | const SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;
  constant EVENT_MODAL_HIDE (line 38) | const EVENT_MODAL_HIDE = 'hide.bs.modal';
  constant TRIGGER_HOVER (line 40) | const TRIGGER_HOVER = 'hover';
  constant TRIGGER_FOCUS (line 41) | const TRIGGER_FOCUS = 'focus';
  constant TRIGGER_CLICK (line 42) | const TRIGGER_CLICK = 'click';
  constant TRIGGER_MANUAL (line 43) | const TRIGGER_MANUAL = 'manual';
  constant EVENT_HIDE (line 45) | const EVENT_HIDE = 'hide';
  constant EVENT_HIDDEN (line 46) | const EVENT_HIDDEN = 'hidden';
  constant EVENT_SHOW (line 47) | const EVENT_SHOW = 'show';
  constant EVENT_SHOWN (line 48) | const EVENT_SHOWN = 'shown';
  constant EVENT_INSERTED (line 49) | const EVENT_INSERTED = 'inserted';
  constant EVENT_CLICK (line 50) | const EVENT_CLICK = 'click';
  constant EVENT_FOCUSIN (line 51) | const EVENT_FOCUSIN = 'focusin';
  constant EVENT_FOCUSOUT (line 52) | const EVENT_FOCUSOUT = 'focusout';
  constant EVENT_MOUSEENTER (line 53) | const EVENT_MOUSEENTER = 'mouseenter';
  constant EVENT_MOUSELEAVE (line 54) | const EVENT_MOUSELEAVE = 'mouseleave';
  class Tooltip (line 112) | class Tooltip extends BaseComponent {
    method constructor (line 113) | constructor(element, config) {
    method Default (line 140) | static get Default() {
    method DefaultType (line 144) | static get DefaultType() {
    method NAME (line 148) | static get NAME() {
    method enable (line 153) | enable() {
    method disable (line 157) | disable() {
    method toggleEnabled (line 161) | toggleEnabled() {
    method toggle (line 165) | toggle() {
    method dispose (line 179) | dispose() {
    method show (line 196) | show() {
    method hide (line 256) | hide() {
    method update (line 298) | update() {
    method _isWithContent (line 305) | _isWithContent() {
    method _getTipElement (line 309) | _getTipElement() {
    method _createTipElement (line 317) | _createTipElement(content) {
    method setContent (line 340) | setContent(content) {
    method _getTemplateFactory (line 348) | _getTemplateFactory(content) {
    method _getContentForTemplate (line 364) | _getContentForTemplate() {
    method _getTitle (line 370) | _getTitle() {
    method _initializeOnDelegatedTarget (line 378) | _initializeOnDelegatedTarget(event) {
    method _isAnimated (line 382) | _isAnimated() {
    method _isShown (line 386) | _isShown() {
    method _createPopper (line 390) | _createPopper(tip) {
    method _getOffset (line 396) | _getOffset() {
    method _resolvePossibleFunction (line 410) | _resolvePossibleFunction(arg) {
    method _getPopperConfig (line 414) | _getPopperConfig(attachment) {
    method _setListeners (line 461) | _setListeners() {
    method _fixTitle (line 513) | _fixTitle() {
    method _enter (line 528) | _enter() {
    method _leave (line 543) | _leave() {
    method _setTimeout (line 557) | _setTimeout(handler, timeout) {
    method _isWithActiveTrigger (line 562) | _isWithActiveTrigger() {
    method _getConfig (line 566) | _getConfig(config) {
    method _configAfterMerge (line 585) | _configAfterMerge(config) {
    method _getDelegateConfig (line 606) | _getDelegateConfig() {
    method _disposePopper (line 624) | _disposePopper() {
    method jQueryInterface (line 637) | static jQueryInterface(config) {

FILE: src/js/bootstrap/src/util/backdrop.js
  constant NAME (line 16) | const NAME = 'backdrop';
  constant CLASS_NAME_FADE (line 17) | const CLASS_NAME_FADE = 'fade';
  constant CLASS_NAME_SHOW (line 18) | const CLASS_NAME_SHOW = 'show';
  constant EVENT_MOUSEDOWN (line 19) | const EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`;
  class Backdrop (line 41) | class Backdrop extends Config {
    method constructor (line 42) | constructor(config) {
    method Default (line 50) | static get Default() {
    method DefaultType (line 54) | static get DefaultType() {
    method NAME (line 58) | static get NAME() {
    method show (line 63) | show(callback) {
    method hide (line 83) | hide(callback) {
    method dispose (line 97) | dispose() {
    method _getElement (line 109) | _getElement() {
    method _configAfterMerge (line 123) | _configAfterMerge(config) {
    method _append (line 129) | _append() {
    method _emulateAnimation (line 144) | _emulateAnimation(callback) {

FILE: src/js/bootstrap/src/util/config.js
  class Config (line 15) | class Config {
    method Default (line 17) | static get Default() {
    method DefaultType (line 21) | static get DefaultType() {
    method NAME (line 25) | static get NAME() {
    method _getConfig (line 29) | _getConfig(config) {
    method _configAfterMerge (line 36) | _configAfterMerge(config) {
    method _mergeConfigObj (line 40) | _mergeConfigObj(config, element) {
    method _typeCheckConfig (line 51) | _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {

FILE: src/js/bootstrap/src/util/focustrap.js
  constant NAME (line 16) | const NAME = 'focustrap';
  constant DATA_KEY (line 17) | const DATA_KEY = 'bs.focustrap';
  constant EVENT_KEY (line 18) | const EVENT_KEY = `.${DATA_KEY}`;
  constant EVENT_FOCUSIN (line 19) | const EVENT_FOCUSIN = `focusin${EVENT_KEY}`;
  constant EVENT_KEYDOWN_TAB (line 20) | const EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`;
  constant TAB_KEY (line 22) | const TAB_KEY = 'Tab';
  constant TAB_NAV_FORWARD (line 23) | const TAB_NAV_FORWARD = 'forward';
  constant TAB_NAV_BACKWARD (line 24) | const TAB_NAV_BACKWARD = 'backward';
  class FocusTrap (line 40) | class FocusTrap extends Config {
    method constructor (line 41) | constructor(config) {
    method Default (line 49) | static get Default() {
    method DefaultType (line 53) | static get DefaultType() {
    method NAME (line 57) | static get NAME() {
    method activate (line 62) | activate() {
    method deactivate (line 78) | deactivate() {
    method _handleFocusin (line 88) | _handleFocusin(event) {
    method _handleKeydown (line 110) | _handleKeydown(event) {

FILE: src/js/bootstrap/src/util/index.js
  constant MAX_UID (line 8) | const MAX_UID = 1_000_000;
  constant MILLISECONDS_MULTIPLIER (line 9) | const MILLISECONDS_MULTIPLIER = 1000;
  constant TRANSITION_END (line 10) | const TRANSITION_END = 'transitionend';

FILE: src/js/bootstrap/src/util/sanitizer.js
  constant ARIA_ATTRIBUTE_PATTERN (line 9) | const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
  constant SAFE_URL_PATTERN (line 67) | const SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[...
  function sanitizeHtml (line 86) | function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {

FILE: src/js/bootstrap/src/util/scrollbar.js
  constant SELECTOR_FIXED_CONTENT (line 16) | const SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .s...
  constant SELECTOR_STICKY_CONTENT (line 17) | const SELECTOR_STICKY_CONTENT = '.sticky-top';
  constant PROPERTY_PADDING (line 18) | const PROPERTY_PADDING = 'padding-right';
  constant PROPERTY_MARGIN (line 19) | const PROPERTY_MARGIN = 'margin-right';
  class ScrollBarHelper (line 25) | class ScrollBarHelper {
    method constructor (line 26) | constructor() {
    method getWidth (line 31) | getWidth() {
    method hide (line 37) | hide() {
    method reset (line 59) | reset() {
    method isOverflowing (line 66) | isOverflowing() {
    method _disableOverFlow (line 71) | _disableOverFlow() {
    method _setElementAttributes (line 76) | _setElementAttributes(selector, styleProperty, callback) {
    method _saveInitialAttribute (line 91) | _saveInitialAttribute(element, styleProperty) {
    method _resetElementAttributes (line 98) | _resetElementAttributes(selector, styleProperty) {
    method _applyManipulationCallback (line 114) | _applyManipulationCallback(selector, callBack) {

FILE: src/js/bootstrap/src/util/swipe.js
  constant NAME (line 16) | const NAME = 'swipe';
  constant EVENT_KEY (line 17) | const EVENT_KEY = '.bs.swipe';
  constant EVENT_TOUCHSTART (line 18) | const EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`;
  constant EVENT_TOUCHMOVE (line 19) | const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`;
  constant EVENT_TOUCHEND (line 20) | const EVENT_TOUCHEND = `touchend${EVENT_KEY}`;
  constant EVENT_POINTERDOWN (line 21) | const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`;
  constant EVENT_POINTERUP (line 22) | const EVENT_POINTERUP = `pointerup${EVENT_KEY}`;
  constant POINTER_TYPE_TOUCH (line 23) | const POINTER_TYPE_TOUCH = 'touch';
  constant POINTER_TYPE_PEN (line 24) | const POINTER_TYPE_PEN = 'pen';
  constant CLASS_NAME_POINTER_EVENT (line 25) | const CLASS_NAME_POINTER_EVENT = 'pointer-event';
  constant SWIPE_THRESHOLD (line 26) | const SWIPE_THRESHOLD = 40;
  class Swipe (line 44) | class Swipe extends Config {
    method constructor (line 45) | constructor(element, config) {
    method Default (line 60) | static get Default() {
    method DefaultType (line 64) | static get DefaultType() {
    method NAME (line 68) | static get NAME() {
    method dispose (line 73) | dispose() {
    method _start (line 78) | _start(event) {
    method _end (line 90) | _end(event) {
    method _move (line 99) | _move(event) {
    method _handleSwipe (line 104) | _handleSwipe() {
    method _initEvents (line 122) | _initEvents() {
    method _eventIsPointerPenTouch (line 135) | _eventIsPointerPenTouch(event) {
    method isSupported (line 143) | static isSupported() {

FILE: src/js/bootstrap/src/util/template-factory.js
  constant NAME (line 17) | const NAME = 'TemplateFactory';
  class TemplateFactory (line 48) | class TemplateFactory extends Config {
    method constructor (line 49) | constructor(config) {
    method Default (line 55) | static get Default() {
    method DefaultType (line 59) | static get DefaultType() {
    method NAME (line 63) | static get NAME() {
    method getContent (line 68) | getContent() {
    method hasContent (line 74) | hasContent() {
    method changeContent (line 78) | changeContent(content) {
    method toHtml (line 84) | toHtml() {
    method _typeCheckConfig (line 103) | _typeCheckConfig(config) {
    method _checkContent (line 108) | _checkContent(arg) {
    method _setContent (line 114) | _setContent(template, content, selector) {
    method _maybeSanitize (line 141) | _maybeSanitize(arg) {
    method _resolvePossibleFunction (line 147) | _resolvePossibleFunction(arg) {
    method _putElementInTemplate (line 151) | _putElementInTemplate(element, templateElement) {

FILE: src/js/free/alert.js
  constant NAME (line 12) | const NAME = 'alert';
  constant EVENT_CLOSE_BS (line 14) | const EVENT_CLOSE_BS = 'close.bs.alert';
  constant EVENT_CLOSED_BS (line 15) | const EVENT_CLOSED_BS = 'closed.bs.alert';
  constant EXTENDED_EVENTS (line 17) | const EXTENDED_EVENTS = [{ name: 'close' }, { name: 'closed' }];
  class Alert (line 19) | class Alert extends BSAlert {
    method constructor (line 20) | constructor(element, data = {}) {
    method dispose (line 28) | dispose() {
    method NAME (line 37) | static get NAME() {
    method _init (line 42) | _init() {
    method _bindMdbEvents (line 46) | _bindMdbEvents() {

FILE: src/js/free/base-component.js
  class BaseComponent (line 20) | class BaseComponent {
    method constructor (line 21) | constructor(element) {
    method dispose (line 32) | dispose() {
    method getInstance (line 43) | static getInstance(element) {
    method getOrCreateInstance (line 47) | static getOrCreateInstance(element, config = {}) {
    method NAME (line 53) | static get NAME() {
    method DATA_KEY (line 57) | static get DATA_KEY() {
    method EVENT_KEY (line 61) | static get EVENT_KEY() {

FILE: src/js/free/button.js
  constant NAME (line 9) | const NAME = 'button';
  constant DATA_KEY (line 10) | const DATA_KEY = `mdb.${NAME}`;
  constant EVENT_KEY (line 11) | const EVENT_KEY = `.${DATA_KEY}`;
  constant EVENT_CLICK (line 13) | const EVENT_CLICK = `click${EVENT_KEY}`;
  constant EVENT_TRANSITIONEND (line 14) | const EVENT_TRANSITIONEND = 'transitionend';
  constant EVENT_MOUSEENTER (line 15) | const EVENT_MOUSEENTER = 'mouseenter';
  constant EVENT_MOUSELEAVE (line 16) | const EVENT_MOUSELEAVE = 'mouseleave';
  constant EVENT_HIDE (line 17) | const EVENT_HIDE = `hide${EVENT_KEY}`;
  constant EVENT_HIDDEN (line 18) | const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
  constant EVENT_SHOW (line 19) | const EVENT_SHOW = `show${EVENT_KEY}`;
  constant EVENT_SHOWN (line 20) | const EVENT_SHOWN = `shown${EVENT_KEY}`;
  constant CLASS_NAME_ACTIVE (line 22) | const CLASS_NAME_ACTIVE = 'active';
  constant CLASS_NAME_SHOWN (line 23) | const CLASS_NAME_SHOWN = 'shown';
  constant CLASS_NAME_FIXED_ACTION_BTN (line 24) | const CLASS_NAME_FIXED_ACTION_BTN = 'fixed-action-btn';
  constant SELECTOR_ACTION_BUTTON (line 26) | const SELECTOR_ACTION_BUTTON = '.fixed-action-btn:not(.smooth-scroll) > ...
  constant SELECTOR_LIST_ELEMENT (line 27) | const SELECTOR_LIST_ELEMENT = 'ul .btn';
  constant SELECTOR_LIST (line 28) | const SELECTOR_LIST = 'ul';
  class Button (line 30) | class Button extends BSButton {
    method constructor (line 31) | constructor(element) {
    method NAME (line 44) | static get NAME() {
    method jQueryInterface (line 48) | static jQueryInterface(config, options) {
    method _actionButton (line 69) | get _actionButton() {
    method _buttonListElements (line 73) | get _buttonListElements() {
    method _buttonList (line 77) | get _buttonList() {
    method _isTouchDevice (line 81) | get _isTouchDevice() {
    method show (line 86) | show() {
    method hide (line 97) | hide() {
    method dispose (line 107) | dispose() {
    method _init (line 119) | _init() {
    method _bindMouseEnter (line 127) | _bindMouseEnter() {
    method _bindMouseLeave (line 140) | _bindMouseLeave() {
    method _bindClick (line 151) | _bindClick() {
    method _bindListHideTransitionEnd (line 161) | _bindListHideTransitionEnd() {
    method _bindListOpenTransitionEnd (line 171) | _bindListOpenTransitionEnd() {
    method _toggleVisibility (line 180) | _toggleVisibility(isVisible) {
    method _getHeight (line 191) | _getHeight(element) {
    method _saveInitialHeights (line 197) | _saveInitialHeights() {
    method _bindInitialEvents (line 203) | _bindInitialEvents() {
    method _setInitialStyles (line 209) | _setInitialStyles() {

FILE: src/js/free/carousel.js
  constant NAME (line 12) | const NAME = 'carousel';
  constant EVENT_SLIDE_BS (line 14) | const EVENT_SLIDE_BS = 'slide.bs.carousel';
  constant EVENT_SLID_BS (line 15) | const EVENT_SLID_BS = 'slid.bs.carousel';
  constant EXTENDED_EVENTS (line 17) | const EXTENDED_EVENTS = [
  class Carousel (line 22) | class Carousel extends BSCarousel {
    method constructor (line 23) | constructor(element, data) {
    method dispose (line 31) | dispose() {
    method NAME (line 40) | static get NAME() {
    method _init (line 45) | _init() {
    method _bindMdbEvents (line 49) | _bindMdbEvents() {

FILE: src/js/free/collapse.js
  constant NAME (line 12) | const NAME = 'collapse';
  constant EVENT_SHOW_BS (line 14) | const EVENT_SHOW_BS = 'show.bs.collapse';
  constant EVENT_SHOWN_BS (line 15) | const EVENT_SHOWN_BS = 'shown.bs.collapse';
  constant EVENT_HIDE_BS (line 16) | const EVENT_HIDE_BS = 'hide.bs.collapse';
  constant EVENT_HIDDEN_BS (line 17) | const EVENT_HIDDEN_BS = 'hidden.bs.collapse';
  constant EXTENDED_EVENTS (line 19) | const EXTENDED_EVENTS = [{ name: 'show' }, { name: 'shown' }, { name: 'h...
  class Collapse (line 21) | class Collapse extends BSCollapse {
    method constructor (line 22) | constructor(element, data = {}) {
    method dispose (line 30) | dispose() {
    method NAME (line 41) | static get NAME() {
    method _init (line 46) | _init() {
    method _bindMdbEvents (line 50) | _bindMdbEvents() {

FILE: src/js/free/dropdown.js
  constant NAME (line 13) | const NAME = 'dropdown';
  constant DATA_KEY (line 14) | const DATA_KEY = `mdb.${NAME}`;
  constant EVENT_KEY (line 15) | const EVENT_KEY = `.${DATA_KEY}`;
  constant EVENT_HIDE (line 35) | const EVENT_HIDE = 'hide.bs.dropdown';
  constant EVENT_HIDDEN (line 36) | const EVENT_HIDDEN = 'hidden.bs.dropdown';
  constant EVENT_SHOW (line 37) | const EVENT_SHOW = 'show.bs.dropdown';
  constant EVENT_SHOWN (line 38) | const EVENT_SHOWN = 'shown.bs.dropdown';
  constant EVENT_HIDE_MDB (line 40) | const EVENT_HIDE_MDB = `hide${EVENT_KEY}`;
  constant EVENT_HIDDEN_MDB (line 41) | const EVENT_HIDDEN_MDB = `hidden${EVENT_KEY}`;
  constant EVENT_SHOW_MDB (line 42) | const EVENT_SHOW_MDB = `show${EVENT_KEY}`;
  constant EVENT_SHOWN_MDB (line 43) | const EVENT_SHOWN_MDB = `shown${EVENT_KEY}`;
  constant ANIMATION_CLASS (line 45) | const ANIMATION_CLASS = 'animation';
  constant ANIMATION_SHOW_CLASS (line 46) | const ANIMATION_SHOW_CLASS = 'fade-in';
  constant ANIMATION_HIDE_CLASS (line 47) | const ANIMATION_HIDE_CLASS = 'fade-out';
  class Dropdown (line 49) | class Dropdown extends BSDropdown {
    method constructor (line 50) | constructor(element, data) {
    method dispose (line 67) | dispose() {
    method NAME (line 79) | static get NAME() {
    method _init (line 84) | _init() {
    method _getConfig (line 91) | _getConfig(options) {
    method _getOffset (line 101) | _getOffset() {
    method _getPopperConfig (line 115) | _getPopperConfig() {
    method _bindShowEvent (line 154) | _bindShowEvent() {
    method _bindShownEvent (line 169) | _bindShownEvent() {
    method _bindHideEvent (line 182) | _bindHideEvent() {
    method _bindHiddenEvent (line 199) | _bindHiddenEvent() {
    method _dropdownAnimationStart (line 221) | _dropdownAnimationStart(action) {
    method _bindAnimationEnd (line 237) | _bindAnimationEnd() {

FILE: src/js/free/input.js
  constant NAME (line 16) | const NAME = 'input';
  constant DATA_KEY (line 17) | const DATA_KEY = 'mdb.input';
  constant CLASSNAME_ACTIVE (line 18) | const CLASSNAME_ACTIVE = 'active';
  constant CLASSNAME_NOTCH (line 19) | const CLASSNAME_NOTCH = 'form-notch';
  constant CLASSNAME_NOTCH_LEADING (line 20) | const CLASSNAME_NOTCH_LEADING = 'form-notch-leading';
  constant CLASSNAME_NOTCH_MIDDLE (line 21) | const CLASSNAME_NOTCH_MIDDLE = 'form-notch-middle';
  constant CLASSNAME_NOTCH_TRAILING (line 22) | const CLASSNAME_NOTCH_TRAILING = 'form-notch-trailing';
  constant CLASSNAME_PLACEHOLDER_ACTIVE (line 23) | const CLASSNAME_PLACEHOLDER_ACTIVE = 'placeholder-active';
  constant CLASSNAME_HELPER (line 24) | const CLASSNAME_HELPER = 'form-helper';
  constant CLASSNAME_COUNTER (line 25) | const CLASSNAME_COUNTER = 'form-counter';
  constant SELECTOR_NOTCH (line 27) | const SELECTOR_NOTCH = `.${CLASSNAME_NOTCH}`;
  constant SELECTOR_NOTCH_LEADING (line 28) | const SELECTOR_NOTCH_LEADING = `.${CLASSNAME_NOTCH_LEADING}`;
  constant SELECTOR_NOTCH_MIDDLE (line 29) | const SELECTOR_NOTCH_MIDDLE = `.${CLASSNAME_NOTCH_MIDDLE}`;
  constant SELECTOR_HELPER (line 30) | const SELECTOR_HELPER = `.${CLASSNAME_HELPER}`;
  class Input (line 38) | class Input extends BaseComponent {
    method constructor (line 39) | constructor(element) {
    method NAME (line 62) | static get NAME() {
    method input (line 66) | get input() {
    method init (line 74) | init() {
    method update (line 87) | update() {
    method forceActive (line 96) | forceActive() {
    method forceInactive (line 100) | forceInactive() {
    method dispose (line 104) | dispose() {
    method _getLabelData (line 128) | _getLabelData() {
    method _getHelper (line 139) | _getHelper() {
    method _getCounter (line 143) | _getCounter() {
    method _showCounter (line 151) | _showCounter() {
    method _bindCounter (line 164) | _bindCounter() {
    method _toggleDefaultDatePlaceholder (line 171) | _toggleDefaultDatePlaceholder(input = this.input) {
    method _showPlaceholder (line 188) | _showPlaceholder() {
    method _getNotchData (line 192) | _getNotchData() {
    method _getLabelWidth (line 197) | _getLabelWidth() {
    method _getLabelPositionInInputGroup (line 201) | _getLabelPositionInInputGroup() {
    method _applyDivs (line 214) | _applyDivs() {
    method _applyNotch (line 233) | _applyNotch() {
    method _removeBorder (line 241) | _removeBorder() {
    method _activate (line 246) | _activate(event) {
    method _getElements (line 263) | _getElements(event) {
    method _deactivate (line 294) | _deactivate(event) {
    method activate (line 303) | static activate(instance) {
    method deactivate (line 309) | static deactivate(instance) {
    method jQueryInterface (line 315) | static jQueryInterface(config, options) {

FILE: src/js/free/modal.js
  constant NAME (line 12) | const NAME = 'modal';
  constant EVENT_HIDE_BS (line 14) | const EVENT_HIDE_BS = 'hide.bs.modal';
  constant EVENT_HIDE_PREVENTED_BS (line 15) | const EVENT_HIDE_PREVENTED_BS = 'hidePrevented.bs.modal';
  constant EVENT_HIDDEN_BS (line 16) | const EVENT_HIDDEN_BS = 'hidden.bs.modal';
  constant EVENT_SHOW_BS (line 17) | const EVENT_SHOW_BS = 'show.bs.modal';
  constant EVENT_SHOWN_BS (line 18) | const EVENT_SHOWN_BS = 'shown.bs.modal';
  constant EXTENDED_EVENTS (line 20) | const EXTENDED_EVENTS = [
  class Modal (line 28) | class Modal extends BSModal {
    method constructor (line 29) | constructor(element, data) {
    method dispose (line 37) | dispose() {
    method NAME (line 49) | static get NAME() {
    method _init (line 54) | _init() {
    method _bindMdbEvents (line 58) | _bindMdbEvents() {

FILE: src/js/free/popover.js
  constant NAME (line 12) | const NAME = 'popover';
  constant EVENT_SHOW_BS (line 14) | const EVENT_SHOW_BS = 'show.bs.popover';
  constant EVENT_SHOWN_BS (line 15) | const EVENT_SHOWN_BS = 'shown.bs.popover';
  constant EVENT_HIDE_BS (line 16) | const EVENT_HIDE_BS = 'hide.bs.popover';
  constant EVENT_HIDDEN_BS (line 17) | const EVENT_HIDDEN_BS = 'hidden.bs.popover';
  constant EVENT_INSERTED_BS (line 18) | const EVENT_INSERTED_BS = 'inserted.bs.popover';
  constant EXTENDED_EVENTS (line 20) | const EXTENDED_EVENTS = [
  class Popover (line 28) | class Popover extends BSPopover {
    method constructor (line 29) | constructor(element, data) {
    method dispose (line 37) | dispose() {
    method NAME (line 49) | static get NAME() {
    method _init (line 54) | _init() {
    method _bindMdbEvents (line 58) | _bindMdbEvents() {

FILE: src/js/free/range.js
  constant NAME (line 15) | const NAME = 'range';
  constant DATA_KEY (line 16) | const DATA_KEY = 'mdb.range';
  constant CLASSNAME_THUMB (line 17) | const CLASSNAME_THUMB = 'thumb';
  constant CLASSNAME_ACTIVE (line 18) | const CLASSNAME_ACTIVE = 'thumb-active';
  constant CLASSNAME_THUMB_VALUE (line 19) | const CLASSNAME_THUMB_VALUE = 'thumb-value';
  constant SELECTOR_THUMB_VALUE (line 21) | const SELECTOR_THUMB_VALUE = `.${CLASSNAME_THUMB_VALUE}`;
  constant SELECTOR_THUMB (line 22) | const SELECTOR_THUMB = `.${CLASSNAME_THUMB}`;
  class Range (line 30) | class Range extends BaseComponent {
    method constructor (line 31) | constructor(element) {
    method NAME (line 45) | static get NAME() {
    method rangeInput (line 49) | get rangeInput() {
    method init (line 54) | init() {
    method dispose (line 64) | dispose() {
    method _addThumb (line 72) | _addThumb() {
    method _handleEvents (line 80) | _handleEvents() {
    method _disposeEvents (line 88) | _disposeEvents() {
    method _showThumb (line 96) | _showThumb() {
    method _hideThumb (line 100) | _hideThumb() {
    method _thumbUpdate (line 104) | _thumbUpdate() {
    method jQueryInterface (line 116) | static jQueryInterface(config, options) {

FILE: src/js/free/ripple.js
  constant NAME (line 15) | const NAME = 'ripple';
  constant DATA_KEY (line 16) | const DATA_KEY = 'mdb.ripple';
  constant CLASSNAME_RIPPLE (line 17) | const CLASSNAME_RIPPLE = 'ripple-surface';
  constant CLASSNAME_RIPPLE_WAVE (line 18) | const CLASSNAME_RIPPLE_WAVE = 'ripple-wave';
  constant CLASSNAME_RIPPLE_WRAPPER (line 19) | const CLASSNAME_RIPPLE_WRAPPER = 'input-wrapper';
  constant SELECTOR_BTN (line 20) | const SELECTOR_BTN = '.btn';
  constant SELECTOR_COMPONENT (line 21) | const SELECTOR_COMPONENT = [SELECTOR_BTN, `[data-mdb-${NAME}-init]`];
  constant CLASSNAME_UNBOUND (line 23) | const CLASSNAME_UNBOUND = 'ripple-surface-unbound';
  constant GRADIENT (line 24) | const GRADIENT =
  constant DEFAULT_RIPPLE_COLOR (line 26) | const DEFAULT_RIPPLE_COLOR = [0, 0, 0];
  constant BOOTSTRAP_COLORS (line 27) | const BOOTSTRAP_COLORS = [
  constant TRANSITION_BREAK_OPACITY (line 40) | const TRANSITION_BREAK_OPACITY = 0.5;
  class Ripple (line 64) | class Ripple extends BaseComponent {
    method constructor (line 65) | constructor(element, options) {
    method NAME (line 85) | static get NAME() {
    method init (line 91) | init() {
    method dispose (line 95) | dispose() {
    method _autoInit (line 104) | _autoInit(event) {
    method _addClickEvent (line 166) | _addClickEvent(target) {
    method _getEventLayer (line 170) | _getEventLayer(event) {
    method _createRipple (line 176) | _createRipple(event) {
    method _createHTMLRipple (line 224) | _createHTMLRipple({ wrapper, ripple, styles }) {
    method _removeHTMLRipple (line 236) | _removeHTMLRipple({ ripple, duration }) {
    method _removeWrapperSpan (line 262) | _removeWrapperSpan() {
    method _durationToMsNumber (line 271) | _durationToMsNumber(time) {
    method _getConfig (line 275) | _getConfig(config = {}) {
    method _getDiameter (line 288) | _getDiameter({ offsetX, offsetY, height, width }) {
    method _appendRipple (line 323) | _appendRipple(target, parent) {
    method _toggleUnbound (line 331) | _toggleUnbound(target) {
    method _addColor (line 339) | _addColor(target, parent) {
    method _removeOldColorClasses (line 356) | _removeOldColorClasses(target) {
    method _colorToRGB (line 364) | _colorToRGB(color) {
    method autoInitial (line 417) | static autoInitial(instance) {
    method jQueryInterface (line 423) | static jQueryInterface(options) {

FILE: src/js/free/scrollspy.js
  constant NAME (line 13) | const NAME = 'scrollspy';
  constant DATA_KEY (line 14) | const DATA_KEY = `mdb.${NAME}`;
  constant EVENT_KEY (line 15) | const EVENT_KEY = `.${DATA_KEY}`;
  constant EVENT_ACTIVATE_BS (line 17) | const EVENT_ACTIVATE_BS = 'activate.bs.scrollspy';
  constant EVENT_ACTIVATE (line 18) | const EVENT_ACTIVATE = `activate${EVENT_KEY}`;
  constant CLASS_COLLAPSIBLE (line 20) | const CLASS_COLLAPSIBLE = 'collapsible-scrollspy';
  constant CLASS_ACTIVE (line 21) | const CLASS_ACTIVE = 'active';
  constant SELECTOR_LIST (line 23) | const SELECTOR_LIST = 'ul';
  constant SELECTOR_ACTIVE (line 24) | const SELECTOR_ACTIVE = `.${CLASS_ACTIVE}`;
  constant SELECTOR_COLLAPSIBLE_SCROLLSPY (line 25) | const SELECTOR_COLLAPSIBLE_SCROLLSPY = `.${CLASS_COLLAPSIBLE}`;
  class ScrollSpy (line 27) | class ScrollSpy extends BSScrollSpy {
    method constructor (line 28) | constructor(element, data) {
    method dispose (line 38) | dispose() {
    method NAME (line 46) | static get NAME() {
    method _init (line 51) | _init() {
    method _getHeight (line 63) | _getHeight(element) {
    method _hide (line 67) | _hide(target) {
    method _show (line 73) | _show(target, destinedHeight) {
    method _getCollapsibles (line 77) | _getCollapsibles() {
    method _showSubsection (line 96) | _showSubsection() {
    method _hideSubsection (line 111) | _hideSubsection() {
    method _bindActivateEvent (line 120) | _bindActivateEvent() {

FILE: src/js/free/tab.js
  constant NAME (line 12) | const NAME = 'tab';
  constant DATA_KEY (line 13) | const DATA_KEY = `mdb.${NAME}`;
  constant EVENT_KEY (line 14) | const EVENT_KEY = `.${DATA_KEY}`;
  constant EVENT_SHOW_BS (line 16) | const EVENT_SHOW_BS = 'show.bs.tab';
  constant EVENT_SHOWN_BS (line 17) | const EVENT_SHOWN_BS = 'shown.bs.tab';
  constant EVENT_HIDE_BS (line 18) | const EVENT_HIDE_BS = 'hide.bs.tab';
  constant EVENT_HIDDEN_BS (line 19) | const EVENT_HIDDEN_BS = 'hidden.bs.tab';
  constant EVENT_SHOW (line 21) | const EVENT_SHOW = `show${EVENT_KEY}`;
  constant EVENT_SHOWN (line 22) | const EVENT_SHOWN = `shown${EVENT_KEY}`;
  constant EVENT_HIDE (line 23) | const EVENT_HIDE = `hide${EVENT_KEY}`;
  constant EVENT_HIDDEN (line 24) | const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
  constant CLASS_NAME_ACTIVE (line 26) | const CLASS_NAME_ACTIVE = 'active';
  constant CLASS_NAME_FADE (line 27) | const CLASS_NAME_FADE = 'fade';
  constant CLASS_NAME_SHOW (line 28) | const CLASS_NAME_SHOW = 'show';
  class Tab (line 30) | class Tab extends BSTab {
    method constructor (line 31) | constructor(element) {
    method dispose (line 38) | dispose() {
    method NAME (line 47) | static get NAME() {
    method show (line 52) | show() {
    method _activate (line 86) | _activate(element, relatedElem) {
    method _deactivate (line 116) | _deactivate(element, relatedElem) {

FILE: src/js/free/toast.js
  constant NAME (line 12) | const NAME = 'toast';
  constant EVENT_SHOW_BS (line 14) | const EVENT_SHOW_BS = 'show.bs.toast';
  constant EVENT_SHOWN_BS (line 15) | const EVENT_SHOWN_BS = 'shown.bs.toast';
  constant EVENT_HIDE_BS (line 16) | const EVENT_HIDE_BS = 'hide.bs.toast';
  constant EVENT_HIDDEN_BS (line 17) | const EVENT_HIDDEN_BS = 'hidden.bs.toast';
  constant EXTENDED_EVENTS (line 19) | const EXTENDED_EVENTS = [{ name: 'show' }, { name: 'shown' }, { name: 'h...
  class Toast (line 21) | class Toast extends BSToast {
    method constructor (line 22) | constructor(element, data) {
    method dispose (line 30) | dispose() {
    method NAME (line 41) | static get NAME() {
    method _init (line 46) | _init() {
    method _bindMdbEvents (line 50) | _bindMdbEvents() {

FILE: src/js/free/tooltip.js
  constant NAME (line 12) | const NAME = 'tooltip';
  constant EVENT_HIDE_BS (line 14) | const EVENT_HIDE_BS = 'hide.bs.tooltip';
  constant EVENT_HIDDEN_BS (line 15) | const EVENT_HIDDEN_BS = 'hidden.bs.tooltip';
  constant EVENT_SHOW_BS (line 16) | const EVENT_SHOW_BS = 'show.bs.tooltip';
  constant EVENT_SHOWN_BS (line 17) | const EVENT_SHOWN_BS = 'shown.bs.tooltip';
  constant EVENT_INSERTED_BS (line 18) | const EVENT_INSERTED_BS = 'inserted.bs.tooltip';
  constant EXTENDED_EVENTS (line 20) | const EXTENDED_EVENTS = [
  class Tooltip (line 28) | class Tooltip extends BSTooltip {
    method constructor (line 29) | constructor(element, data) {
    method dispose (line 37) | dispose() {
    method NAME (line 49) | static get NAME() {
    method _init (line 54) | _init() {
    method _bindMdbEvents (line 58) | _bindMdbEvents() {

FILE: src/js/mdb/dom/data.js
  method set (line 18) | set(element, key, data) {
  method get (line 29) | get(element, key) {
  method delete (line 41) | delete(element, key) {
  method setData (line 56) | setData(instance, key, data) {
  method getData (line 59) | getData(instance, key) {
  method removeData (line 62) | removeData(instance, key) {

FILE: src/js/mdb/dom/event-handler.js
  function getUidEvent (line 81) | function getUidEvent(element, uid) {
  function getEvent (line 85) | function getEvent(element) {
  function bootstrapHandler (line 94) | function bootstrapHandler(element, fn) {
  function bootstrapDelegationHandler (line 106) | function bootstrapDelegationHandler(element, selector, fn) {
  function findHandler (line 129) | function findHandler(events, handler, delegationSelector = null) {
  function normalizeParams (line 143) | function normalizeParams(originalTypeEvent, handler, delegationFn) {
  function addHandler (line 164) | function addHandler(element, originalTypeEvent, handler, delegationFn, o...
  function removeHandler (line 203) | function removeHandler(element, events, typeEvent, handler, delegationSe...
  function removeNamespacedHandlers (line 214) | function removeNamespacedHandlers(element, events, typeEvent, namespace) {
  method on (line 227) | on(element, event, handler, delegationFn) {
  method one (line 231) | one(element, event, handler, delegationFn) {
  method extend (line 235) | extend(element, events, componentName) {
  method off (line 258) | off(element, originalTypeEvent, handler, delegationFn) {
  method trigger (line 300) | trigger(element, event, args) {
  method on (line 362) | on(element, eventsName, handler, delegationFn) {
  method off (line 369) | off(element, originalTypeEvent, handler, delegationFn) {

FILE: src/js/mdb/dom/manipulator.js
  function normalizeData (line 8) | function normalizeData(val) {
  function normalizeDataKey (line 28) | function normalizeDataKey(key) {
  method setDataAttribute (line 33) | setDataAttribute(element, key, value) {
  method removeDataAttribute (line 37) | removeDataAttribute(element, key) {
  method getDataAttributes (line 41) | getDataAttributes(element) {
  method getDataAttribute (line 61) | getDataAttribute(element, key) {
  method offset (line 65) | offset(element) {
  method position (line 74) | position(element) {
  method style (line 81) | style(element, style) {
  method toggleClass (line 85) | toggleClass(element, className) {
  method addClass (line 97) | addClass(element, className) {
  method addStyle (line 102) | addStyle(element, style) {
  method removeClass (line 108) | removeClass(element, className) {
  method hasClass (line 113) | hasClass(element, className) {

FILE: src/js/mdb/dom/selector-engine.js
  constant NODE_TEXT (line 14) | const NODE_TEXT = 3;
  method closest (line 17) | closest(element, selector) {
  method matches (line 21) | matches(element, selector) {
  method find (line 25) | find(selector, element = document.documentElement) {
  method findOne (line 29) | findOne(selector, element = document.documentElement) {
  method children (line 33) | children(element, selector) {
  method parents (line 39) | parents(element, selector) {
  method prev (line 55) | prev(element, selector) {
  method next (line 69) | next(element, selector) {

FILE: src/js/mdb/perfect-scrollbar/handlers/drag-thumb.js
  function setupScrollHandlers (line 6) | function setupScrollHandlers(i) {
  function bindMouseScrollHandler (line 32) | function bindMouseScrollHandler(

FILE: src/js/mdb/perfect-scrollbar/handlers/keyboard.js
  function shouldPreventDefault (line 14) | function shouldPreventDefault(deltaX, deltaY) {

FILE: src/js/mdb/perfect-scrollbar/handlers/mouse-wheel.js
  function shouldPreventDefault (line 13) | function shouldPreventDefault(deltaX, deltaY) {
  function getDeltaFromEvent (line 32) | function getDeltaFromEvent(e) {
  function shouldBeConsumedByChild (line 61) | function shouldBeConsumedByChild(target, deltaX, deltaY) {
  function mousewheelHandler (line 111) | function mousewheelHandler(e) {

FILE: src/js/mdb/perfect-scrollbar/handlers/touch.js
  function shouldPrevent (line 20) | function shouldPrevent(deltaX, deltaY) {
  function applyTouchMove (line 45) | function applyTouchMove(differenceX, differenceY) {
  function getTouch (line 52) | function getTouch(e) {
  function shouldHandle (line 60) | function shouldHandle(e) {
  function touchStart (line 76) | function touchStart(e) {
  function shouldBeConsumedByChild (line 93) | function shouldBeConsumedByChild(target, deltaX, deltaY) {
  function touchMove (line 138) | function touchMove(e) {
  function touchEnd (line 172) | function touchEnd() {

FILE: src/js/mdb/perfect-scrollbar/index.js
  class PerfectScrollbar (line 40) | class PerfectScrollbar {
    method constructor (line 41) | constructor(element, userSettings = {}) {
    method update (line 162) | update() {
    method onScroll (line 195) | onScroll(e) {
    method destroy (line 208) | destroy() {
    method removePsClasses (line 230) | removePsClasses() {

FILE: src/js/mdb/perfect-scrollbar/lib/class-names.js
  function addScrollingClass (line 26) | function addScrollingClass(i, x) {
  function removeScrollingClass (line 37) | function removeScrollingClass(i, x) {
  function setScrollingClassInstantly (line 44) | function setScrollingClassInstantly(i, x) {

FILE: src/js/mdb/perfect-scrollbar/lib/css.js
  function get (line 3) | function get(element) {
  function set (line 7) | function set(element, obj) {

FILE: src/js/mdb/perfect-scrollbar/lib/dom.js
  function div (line 3) | function div(className) {
  function matches (line 16) | function matches(element, query) {
  function remove (line 24) | function remove(element) {
  function queryChildren (line 34) | function queryChildren(element, selector) {

FILE: src/js/mdb/perfect-scrollbar/lib/event-manager.js
  class EventElement (line 2) | class EventElement {
    method constructor (line 3) | constructor(element) {
    method bind (line 8) | bind(eventName, handler) {
    method unbind (line 16) | unbind(eventName, target) {
    method unbindAll (line 26) | unbindAll() {
    method isEmpty (line 32) | get isEmpty() {
  class EventManager (line 37) | class EventManager {
    method constructor (line 38) | constructor() {
    method eventElement (line 42) | eventElement(element) {
    method bind (line 51) | bind(element, eventName, handler) {
    method unbind (line 55) | unbind(element, eventName, handler) {
    method unbindAll (line 65) | unbindAll() {
    method once (line 70) | once(element, eventName, handler) {

FILE: src/js/mdb/perfect-scrollbar/lib/util.js
  function toInt (line 6) | function toInt(x) {
  function isEditable (line 10) | function isEditable(el) {
  function outerWidth (line 19) | function outerWidth(element) {

FILE: src/js/mdb/perfect-scrollbar/process-scroll-diff.js
  function createEvent (line 3) | function createEvent(name) {
  function processScrollDiff (line 26) | function processScrollDiff(

FILE: src/js/mdb/perfect-scrollbar/update-geometry.js
  function getThumbSize (line 92) | function getThumbSize(i, thumbSize) {
  function updateCss (line 102) | function updateCss(element, i) {

FILE: src/js/mdb/util/focusTrap.js
  class FocusTrap (line 4) | class FocusTrap {
    method constructor (line 5) | constructor(element, options = {}, toggler) {
    method trap (line 25) | trap() {
    method disable (line 31) | disable() {
    method update (line 41) | update() {
    method _init (line 46) | _init() {
    method _filterVisible (line 61) | _filterVisible(elements) {
    method _setElements (line 75) | _setElements() {
    method _setFocusTrap (line 98) | _setFocusTrap() {

FILE: src/js/mdb/util/index.js
  constant MAX_UID (line 8) | const MAX_UID = 1000000;
  constant MILLISECONDS_MULTIPLIER (line 9) | const MILLISECONDS_MULTIPLIER = 1000;
  constant TRANSITION_END (line 10) | const TRANSITION_END = 'transitionend';
  function listener (line 126) | function listener() {

FILE: src/js/mdb/util/keycodes.js
  constant LEFT_ARROW (line 1) | const LEFT_ARROW = 37;
  constant UP_ARROW (line 2) | const UP_ARROW = 38;
  constant RIGHT_ARROW (line 3) | const RIGHT_ARROW = 39;
  constant DOWN_ARROW (line 4) | const DOWN_ARROW = 40;
  constant HOME (line 5) | const HOME = 36;
  constant END (line 6) | const END = 35;
  constant PAGE_UP (line 7) | const PAGE_UP = 33;
  constant PAGE_DOWN (line 8) | const PAGE_DOWN = 34;
  constant ENTER (line 9) | const ENTER = 13;
  constant SPACE (line 10) | const SPACE = 32;
  constant ESCAPE (line 11) | const ESCAPE = 27;
  constant TAB (line 12) | const TAB = 9;
  constant BACKSPACE (line 13) | const BACKSPACE = 8;
  constant DELETE (line 14) | const DELETE = 46;

FILE: src/js/mdb/util/sanitizer.js
  constant ARIA_ATTRIBUTE_PATTERN (line 19) | const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
  constant SAFE_URL_PATTERN (line 26) | const SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(...
  constant DATA_URL_PATTERN (line 33) | const DATA_URL_PATTERN =
  function sanitizeHtml (line 95) | function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {

FILE: src/js/mdb/util/scrollbar.js
  constant SELECTOR_FIXED_CONTENT (line 11) | const SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .s...
  constant SELECTOR_STICKY_CONTENT (line 12) | const SELECTOR_STICKY_CONTENT = '.sticky-top';

FILE: src/js/mdb/util/stack.js
  constant NAME (line 4) | const NAME = 'Stack';
  constant DEFAULT_OPTIONS (line 6) | const DEFAULT_OPTIONS = {
  constant TYPE_OPTIONS (line 15) | const TYPE_OPTIONS = {
  class Stack (line 22) | class Stack {
    method constructor (line 23) | constructor(element, selector, options) {
    method stackableElements (line 35) | get stackableElements() {
    method nextElements (line 52) | get nextElements() {
    method _getConfig (line 62) | _getConfig(options) {
    method _getBoundryOffset (line 73) | _getBoundryOffset(rect) {
    method calculateOffset (line 92) | calculateOffset() {

FILE: src/js/mdb/util/touch/index.js
  class Touch (line 3) | class Touch {
    method constructor (line 4) | constructor(element, event = 'swipe', options = {}) {
    method dispose (line 19) | dispose() {
    method init (line 25) | init() {
    method _handleTouchStart (line 34) | _handleTouchStart(e) {
    method _handleTouchMove (line 38) | _handleTouchMove(e) {
    method _handleTouchEnd (line 42) | _handleTouchEnd(e) {

FILE: src/js/mdb/util/touch/swipe.js
  constant DEFAULT_OPTIONS (line 3) | const DEFAULT_OPTIONS = {
  class Swipe (line 8) | class Swipe {
    method constructor (line 9) | constructor(element, options) {
    method handleTouchStart (line 18) | handleTouchStart(e) {
    method handleTouchMove (line 22) | handleTouchMove(e) {
    method handleTouchEnd (line 55) | handleTouchEnd() {
    method _getCoordinates (line 59) | _getCoordinates(e) {
    method _getDirection (line 67) | _getDirection(displacement) {

FILE: src/js/mdb/util/touch/touchUtil.js
  class TouchUtil (line 1) | class TouchUtil {
    method _getCoordinates (line 2) | _getCoordinates(e) {
    method _getDirection (line 10) | _getDirection(displacement) {
Condensed preview — 365 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,560K chars).
[
  {
    "path": ".gitignore",
    "chars": 13,
    "preview": "node_modules\n"
  },
  {
    "path": "License.txt",
    "chars": 1229,
    "preview": "MIT license for MDB Free\r\n\r\nFree packages are available under the MIT License.\r\n\r\n-- Highlights\r\n\r\n● Free for personal u"
  },
  {
    "path": "README.md",
    "chars": 27897,
    "preview": "Bootstrap 5 UI KIT - 700+ components, plain JavaScript, MIT license, simple installation.\n\nMDB is a collection of free B"
  },
  {
    "path": "README.txt",
    "chars": 113,
    "preview": "MDB5\nVersion: FREE 9.3.0\n\nDocumentation:\nhttps://mdbootstrap.com/docs/standard/\n\nContact:\ncontact@mdbootstrap.com"
  },
  {
    "path": "index.html",
    "chars": 1792,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <meta name=\"viewport\" content=\"width=device-w"
  },
  {
    "path": "package.json",
    "chars": 328,
    "preview": "{\n  \"name\": \"mdb-ui-kit\",\n  \"version\": \"9.3.0\",\n  \"type\": \"module\",\n  \"main\": \"./js/mdb.umd.min.js\",\n  \"module\": \"./js/m"
  },
  {
    "path": "src/js/autoinit/callbacks/free.js",
    "chars": 15127,
    "preview": "import EventHandler from '../../mdb/dom/event-handler';\nimport SelectorEngine from '../../mdb/dom/selector-engine';\nimpo"
  },
  {
    "path": "src/js/autoinit/index.free.js",
    "chars": 217,
    "preview": "import defaultInitSelectors from './initSelectors/free';\nimport { InitMDB } from './init';\n\nconst initMDBInstance = new "
  },
  {
    "path": "src/js/autoinit/init.js",
    "chars": 2789,
    "preview": "import SelectorEngine from '../mdb/dom/selector-engine';\nimport { defineJQueryPlugin } from '../mdb/util/index';\n\nconst "
  },
  {
    "path": "src/js/autoinit/initSelectors/free.js",
    "chars": 2287,
    "preview": "import {\n  alertCallback,\n  dropdownCallback,\n  offcanvasCallback,\n  tabCallback,\n  buttonCallback,\n  modalCallback,\n  r"
  },
  {
    "path": "src/js/bootstrap/dist/alert.js",
    "chars": 2957,
    "preview": "/*!\n * Bootstrap alert.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://githu"
  },
  {
    "path": "src/js/bootstrap/dist/base-component.js",
    "chars": 2941,
    "preview": "/*!\n * Bootstrap base-component.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (http"
  },
  {
    "path": "src/js/bootstrap/dist/button.js",
    "chars": 2515,
    "preview": "/*!\n * Bootstrap button.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://gith"
  },
  {
    "path": "src/js/bootstrap/dist/carousel.js",
    "chars": 13726,
    "preview": "/*!\n * Bootstrap carousel.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://gi"
  },
  {
    "path": "src/js/bootstrap/dist/collapse.js",
    "chars": 9081,
    "preview": "/*!\n * Bootstrap collapse.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://gi"
  },
  {
    "path": "src/js/bootstrap/dist/dom/data.js",
    "chars": 2179,
    "preview": "/*!\n * Bootstrap data.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://github"
  },
  {
    "path": "src/js/bootstrap/dist/dom/event-handler.js",
    "chars": 9805,
    "preview": "/*!\n * Bootstrap event-handler.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https"
  },
  {
    "path": "src/js/bootstrap/dist/dom/manipulator.js",
    "chars": 2455,
    "preview": "/*!\n * Bootstrap manipulator.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https:/"
  },
  {
    "path": "src/js/bootstrap/dist/dom/selector-engine.js",
    "chars": 4404,
    "preview": "/*!\n * Bootstrap selector-engine.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (htt"
  },
  {
    "path": "src/js/bootstrap/dist/dropdown.js",
    "chars": 16043,
    "preview": "/*!\n * Bootstrap dropdown.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://gi"
  },
  {
    "path": "src/js/bootstrap/dist/modal.js",
    "chars": 12133,
    "preview": "/*!\n * Bootstrap modal.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://githu"
  },
  {
    "path": "src/js/bootstrap/dist/offcanvas.js",
    "chars": 9027,
    "preview": "/*!\n * Bootstrap offcanvas.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://g"
  },
  {
    "path": "src/js/bootstrap/dist/popover.js",
    "chars": 2720,
    "preview": "/*!\n * Bootstrap popover.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://git"
  },
  {
    "path": "src/js/bootstrap/dist/scrollspy.js",
    "chars": 10028,
    "preview": "/*!\n * Bootstrap scrollspy.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://g"
  },
  {
    "path": "src/js/bootstrap/dist/tab.js",
    "chars": 10692,
    "preview": "/*!\n * Bootstrap tab.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://github."
  },
  {
    "path": "src/js/bootstrap/dist/toast.js",
    "chars": 6299,
    "preview": "/*!\n * Bootstrap toast.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://githu"
  },
  {
    "path": "src/js/bootstrap/dist/tooltip.js",
    "chars": 20460,
    "preview": "/*!\n * Bootstrap tooltip.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://git"
  },
  {
    "path": "src/js/bootstrap/dist/util/backdrop.js",
    "chars": 4169,
    "preview": "/*!\n * Bootstrap backdrop.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://gi"
  },
  {
    "path": "src/js/bootstrap/dist/util/component-functions.js",
    "chars": 2147,
    "preview": "/*!\n * Bootstrap component-functions.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors "
  },
  {
    "path": "src/js/bootstrap/dist/util/config.js",
    "chars": 2625,
    "preview": "/*!\n * Bootstrap config.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://gith"
  },
  {
    "path": "src/js/bootstrap/dist/util/focustrap.js",
    "chars": 3538,
    "preview": "/*!\n * Bootstrap focustrap.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://g"
  },
  {
    "path": "src/js/bootstrap/dist/util/index.js",
    "chars": 9374,
    "preview": "/*!\n * Bootstrap index.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://githu"
  },
  {
    "path": "src/js/bootstrap/dist/util/sanitizer.js",
    "chars": 3995,
    "preview": "/*!\n * Bootstrap sanitizer.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://g"
  },
  {
    "path": "src/js/bootstrap/dist/util/scrollbar.js",
    "chars": 4884,
    "preview": "/*!\n * Bootstrap scrollbar.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://g"
  },
  {
    "path": "src/js/bootstrap/dist/util/swipe.js",
    "chars": 4456,
    "preview": "/*!\n * Bootstrap swipe.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://githu"
  },
  {
    "path": "src/js/bootstrap/dist/util/template-factory.js",
    "chars": 4859,
    "preview": "/*!\n * Bootstrap template-factory.js v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (ht"
  },
  {
    "path": "src/js/bootstrap/mdb-prefix/alert.js",
    "chars": 1935,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed unde"
  },
  {
    "path": "src/js/bootstrap/mdb-prefix/base-component.js",
    "chars": 1972,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Lice"
  },
  {
    "path": "src/js/bootstrap/mdb-prefix/button.js",
    "chars": 1663,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap button.js\n * Licensed und"
  },
  {
    "path": "src/js/bootstrap/mdb-prefix/carousel.js",
    "chars": 12119,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed u"
  },
  {
    "path": "src/js/bootstrap/mdb-prefix/collapse.js",
    "chars": 7746,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed u"
  },
  {
    "path": "src/js/bootstrap/mdb-prefix/dom/data.js",
    "chars": 1445,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed u"
  },
  {
    "path": "src/js/bootstrap/mdb-prefix/dom/event-handler.js",
    "chars": 8536,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * L"
  },
  {
    "path": "src/js/bootstrap/mdb-prefix/dom/manipulator.js",
    "chars": 1704,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Lic"
  },
  {
    "path": "src/js/bootstrap/mdb-prefix/dom/selector-engine.js",
    "chars": 3533,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n *"
  },
  {
    "path": "src/js/bootstrap/mdb-prefix/dropdown.js",
    "chars": 13543,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap dropdown.js\n * Licensed u"
  },
  {
    "path": "src/js/bootstrap/mdb-prefix/modal.js",
    "chars": 9957,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap modal.js\n * Licensed unde"
  },
  {
    "path": "src/js/bootstrap/mdb-prefix/offcanvas.js",
    "chars": 7005,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap offcanvas.js\n * Licensed "
  },
  {
    "path": "src/js/bootstrap/mdb-prefix/popover.js",
    "chars": 1899,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed un"
  },
  {
    "path": "src/js/bootstrap/mdb-prefix/scrollspy.js",
    "chars": 8737,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed "
  },
  {
    "path": "src/js/bootstrap/mdb-prefix/tab.js",
    "chars": 9235,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap tab.js\n * Licensed under "
  },
  {
    "path": "src/js/bootstrap/mdb-prefix/toast.js",
    "chars": 5134,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap toast.js\n * Licensed unde"
  },
  {
    "path": "src/js/bootstrap/mdb-prefix/tooltip.js",
    "chars": 16416,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed un"
  },
  {
    "path": "src/js/bootstrap/mdb-prefix/util/backdrop.js",
    "chars": 3176,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/backdrop.js\n * Licen"
  },
  {
    "path": "src/js/bootstrap/mdb-prefix/util/component-functions.js",
    "chars": 1126,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions."
  },
  {
    "path": "src/js/bootstrap/mdb-prefix/util/config.js",
    "chars": 1801,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * License"
  },
  {
    "path": "src/js/bootstrap/mdb-prefix/util/focustrap.js",
    "chars": 2586,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/focustrap.js\n * Lice"
  },
  {
    "path": "src/js/bootstrap/mdb-prefix/util/index.js",
    "chars": 7797,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed"
  },
  {
    "path": "src/js/bootstrap/mdb-prefix/util/sanitizer.js",
    "chars": 2995,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Lice"
  },
  {
    "path": "src/js/bootstrap/mdb-prefix/util/scrollbar.js",
    "chars": 3878,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/scrollBar.js\n * Lice"
  },
  {
    "path": "src/js/bootstrap/mdb-prefix/util/swipe.js",
    "chars": 3484,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed"
  },
  {
    "path": "src/js/bootstrap/mdb-prefix/util/template-factory.js",
    "chars": 3674,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n"
  },
  {
    "path": "src/js/bootstrap/src/alert.js",
    "chars": 1931,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed unde"
  },
  {
    "path": "src/js/bootstrap/src/base-component.js",
    "chars": 1972,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Lice"
  },
  {
    "path": "src/js/bootstrap/src/button.js",
    "chars": 1649,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap button.js\n * Licensed und"
  },
  {
    "path": "src/js/bootstrap/src/carousel.js",
    "chars": 12047,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed u"
  },
  {
    "path": "src/js/bootstrap/src/collapse.js",
    "chars": 7735,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed u"
  },
  {
    "path": "src/js/bootstrap/src/dom/data.js",
    "chars": 1445,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed u"
  },
  {
    "path": "src/js/bootstrap/src/dom/event-handler.js",
    "chars": 8536,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * L"
  },
  {
    "path": "src/js/bootstrap/src/dom/manipulator.js",
    "chars": 1695,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Lic"
  },
  {
    "path": "src/js/bootstrap/src/dom/selector-engine.js",
    "chars": 3532,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n *"
  },
  {
    "path": "src/js/bootstrap/src/dropdown.js",
    "chars": 13529,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap dropdown.js\n * Licensed u"
  },
  {
    "path": "src/js/bootstrap/src/modal.js",
    "chars": 9744,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap modal.js\n * Licensed unde"
  },
  {
    "path": "src/js/bootstrap/src/offcanvas.js",
    "chars": 6912,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap offcanvas.js\n * Licensed "
  },
  {
    "path": "src/js/bootstrap/src/popover.js",
    "chars": 1897,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed un"
  },
  {
    "path": "src/js/bootstrap/src/scrollspy.js",
    "chars": 8634,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed "
  },
  {
    "path": "src/js/bootstrap/src/tab.js",
    "chars": 9245,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap tab.js\n * Licensed under "
  },
  {
    "path": "src/js/bootstrap/src/toast.js",
    "chars": 5130,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap toast.js\n * Licensed unde"
  },
  {
    "path": "src/js/bootstrap/src/tooltip.js",
    "chars": 16410,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed un"
  },
  {
    "path": "src/js/bootstrap/src/util/backdrop.js",
    "chars": 3176,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/backdrop.js\n * Licen"
  },
  {
    "path": "src/js/bootstrap/src/util/component-functions.js",
    "chars": 1125,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions."
  },
  {
    "path": "src/js/bootstrap/src/util/config.js",
    "chars": 1801,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * License"
  },
  {
    "path": "src/js/bootstrap/src/util/focustrap.js",
    "chars": 2586,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/focustrap.js\n * Lice"
  },
  {
    "path": "src/js/bootstrap/src/util/index.js",
    "chars": 7796,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed"
  },
  {
    "path": "src/js/bootstrap/src/util/sanitizer.js",
    "chars": 2995,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Lice"
  },
  {
    "path": "src/js/bootstrap/src/util/scrollbar.js",
    "chars": 3878,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/scrollBar.js\n * Lice"
  },
  {
    "path": "src/js/bootstrap/src/util/swipe.js",
    "chars": 3484,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed"
  },
  {
    "path": "src/js/bootstrap/src/util/template-factory.js",
    "chars": 3674,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n"
  },
  {
    "path": "src/js/free/alert.js",
    "chars": 1296,
    "preview": "import EventHandler from '../mdb/dom/event-handler';\nimport BSAlert from '../bootstrap/mdb-prefix/alert';\nimport Manipul"
  },
  {
    "path": "src/js/free/base-component.js",
    "chars": 1668,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): base-component."
  },
  {
    "path": "src/js/free/button.js",
    "chars": 6546,
    "preview": "import Data from '../mdb/dom/data';\nimport EventHandler from '../mdb/dom/event-handler';\nimport Manipulator from '../mdb"
  },
  {
    "path": "src/js/free/carousel.js",
    "chars": 1442,
    "preview": "import EventHandler from '../mdb/dom/event-handler';\nimport BSCarousel from '../bootstrap/mdb-prefix/carousel';\nimport M"
  },
  {
    "path": "src/js/free/collapse.js",
    "chars": 1544,
    "preview": "import EventHandler from '../mdb/dom/event-handler';\nimport BSCollapse from '../bootstrap/mdb-prefix/collapse';\nimport M"
  },
  {
    "path": "src/js/free/dropdown.js",
    "chars": 6510,
    "preview": "import { typeCheckConfig } from '../mdb/util/index';\nimport EventHandler from '../mdb/dom/event-handler';\nimport Manipul"
  },
  {
    "path": "src/js/free/input.js",
    "chars": 9136,
    "preview": "import { element, onDOMContentLoaded } from '../mdb/util/index';\nimport Data from '../mdb/dom/data';\nimport EventHandler"
  },
  {
    "path": "src/js/free/modal.js",
    "chars": 1743,
    "preview": "import EventHandler from '../mdb/dom/event-handler';\nimport BSModal from '../bootstrap/mdb-prefix/modal';\nimport Manipul"
  },
  {
    "path": "src/js/free/popover.js",
    "chars": 1664,
    "preview": "import EventHandler from '../mdb/dom/event-handler';\nimport BSPopover from '../bootstrap/mdb-prefix/popover';\nimport Man"
  },
  {
    "path": "src/js/free/range.js",
    "chars": 4066,
    "preview": "import { element } from '../mdb/util/index';\nimport Data from '../mdb/dom/data';\nimport EventHandler from '../mdb/dom/ev"
  },
  {
    "path": "src/js/free/ripple.js",
    "chars": 12828,
    "preview": "import { element, typeCheckConfig } from '../mdb/util/index';\nimport Data from '../mdb/dom/data';\nimport EventHandler fr"
  },
  {
    "path": "src/js/free/scrollspy.js",
    "chars": 3628,
    "preview": "import EventHandler from '../mdb/dom/event-handler';\nimport SelectorEngine from '../mdb/dom/selector-engine';\nimport Man"
  },
  {
    "path": "src/js/free/tab.js",
    "chars": 4214,
    "preview": "import { getElementFromSelector } from '../mdb/util/index';\nimport EventHandler from '../mdb/dom/event-handler';\nimport "
  },
  {
    "path": "src/js/free/toast.js",
    "chars": 1509,
    "preview": "import EventHandler from '../mdb/dom/event-handler';\nimport BSToast from '../bootstrap/mdb-prefix/toast';\nimport Manipul"
  },
  {
    "path": "src/js/free/tooltip.js",
    "chars": 1669,
    "preview": "import EventHandler from '../mdb/dom/event-handler';\nimport BSTooltip from '../bootstrap/mdb-prefix/tooltip';\nimport Man"
  },
  {
    "path": "src/js/mdb/dom/data.js",
    "chars": 1561,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): dom/data."
  },
  {
    "path": "src/js/mdb/dom/event-handler.js",
    "chars": 9738,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): dom/event"
  },
  {
    "path": "src/js/mdb/dom/manipulator.js",
    "chars": 2647,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): dom/manip"
  },
  {
    "path": "src/js/mdb/dom/selector-engine.js",
    "chars": 1977,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): dom/selec"
  },
  {
    "path": "src/js/mdb/perfect-scrollbar/handlers/click-rail.js",
    "chars": 954,
    "preview": "/* eslint-disable */\n\nimport updateGeometry from '../update-geometry';\n\nexport default function (i) {\n  // const element"
  },
  {
    "path": "src/js/mdb/perfect-scrollbar/handlers/drag-thumb.js",
    "chars": 2996,
    "preview": "import cls, { addScrollingClass, removeScrollingClass } from '../lib/class-names';\nimport updateGeometry from '../update"
  },
  {
    "path": "src/js/mdb/perfect-scrollbar/handlers/keyboard.js",
    "chars": 3647,
    "preview": "/* eslint-disable */\n\nimport * as DOM from '../lib/dom';\nimport updateGeometry from '../update-geometry';\nimport { isEdi"
  },
  {
    "path": "src/js/mdb/perfect-scrollbar/handlers/mouse-wheel.js",
    "chars": 4675,
    "preview": "/* eslint-disable */\n\nimport * as CSS from '../lib/css';\nimport cls from '../lib/class-names';\nimport updateGeometry fro"
  },
  {
    "path": "src/js/mdb/perfect-scrollbar/handlers/touch.js",
    "chars": 5639,
    "preview": "import updateGeometry from '../update-geometry';\nimport cls from '../lib/class-names';\nimport * as CSS from '../lib/css'"
  },
  {
    "path": "src/js/mdb/perfect-scrollbar/index.js",
    "chars": 7610,
    "preview": "/* eslint-disable */\n\nimport * as CSS from './lib/css';\nimport * as DOM from './lib/dom';\nimport cls from './lib/class-n"
  },
  {
    "path": "src/js/mdb/perfect-scrollbar/lib/class-names.js",
    "chars": 1020,
    "preview": "/* eslint-disable */\n\nconst cls = {\n  main: 'ps',\n  rtl: 'ps__rtl',\n  element: {\n    thumb: (x) => `ps__thumb-${x}`,\n   "
  },
  {
    "path": "src/js/mdb/perfect-scrollbar/lib/css.js",
    "chars": 298,
    "preview": "/* eslint-disable */\n\nexport function get(element) {\n  return getComputedStyle(element);\n}\n\nexport function set(element,"
  },
  {
    "path": "src/js/mdb/perfect-scrollbar/lib/dom.js",
    "chars": 865,
    "preview": "/* eslint-disable */\n\nexport function div(className) {\n  const div = document.createElement('div');\n  div.className = cl"
  },
  {
    "path": "src/js/mdb/perfect-scrollbar/lib/event-manager.js",
    "chars": 1819,
    "preview": "/* eslint-disable */\nclass EventElement {\n  constructor(element) {\n    this.element = element;\n    this.handlers = {};\n "
  },
  {
    "path": "src/js/mdb/perfect-scrollbar/lib/util.js",
    "chars": 1209,
    "preview": "/* eslint-disable */\n\nimport * as CSS from './css';\nimport * as DOM from './dom';\n\nexport function toInt(x) {\n  return p"
  },
  {
    "path": "src/js/mdb/perfect-scrollbar/process-scroll-diff.js",
    "chars": 1709,
    "preview": "import { setScrollingClassInstantly } from './lib/class-names';\n\nfunction createEvent(name) {\n  if (typeof window.Custom"
  },
  {
    "path": "src/js/mdb/perfect-scrollbar/update-geometry.js",
    "chars": 4679,
    "preview": "import * as CSS from './lib/css';\nimport * as DOM from './lib/dom';\nimport cls from './lib/class-names';\nimport { toInt "
  },
  {
    "path": "src/js/mdb/util/focusTrap.js",
    "chars": 2915,
    "preview": "import SelectorEngine from '../dom/selector-engine';\nimport { isVisible } from './index';\n\nclass FocusTrap {\n  construct"
  },
  {
    "path": "src/js/mdb/util/index.js",
    "chars": 6694,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): util/inde"
  },
  {
    "path": "src/js/mdb/util/keycodes.js",
    "chars": 920,
    "preview": "export const LEFT_ARROW = 37;\nexport const UP_ARROW = 38;\nexport const RIGHT_ARROW = 39;\nexport const DOWN_ARROW = 40;\ne"
  },
  {
    "path": "src/js/mdb/util/sanitizer.js",
    "chars": 3394,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): util/sani"
  },
  {
    "path": "src/js/mdb/util/scrollbar.js",
    "chars": 2906,
    "preview": "/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0): util/scrollBar."
  },
  {
    "path": "src/js/mdb/util/stack.js",
    "chars": 2526,
    "preview": "import SelectorEngine from '../dom/selector-engine';\nimport { isVisible, typeCheckConfig } from './index';\n\nconst NAME ="
  },
  {
    "path": "src/js/mdb/util/touch/index.js",
    "chars": 1244,
    "preview": "import Swipe from './swipe';\n\nclass Touch {\n  constructor(element, event = 'swipe', options = {}) {\n    this._element = "
  },
  {
    "path": "src/js/mdb/util/touch/swipe.js",
    "chars": 1962,
    "preview": "import EventHandler from '../../dom/event-handler';\n\nconst DEFAULT_OPTIONS = {\n  threshold: 10,\n  direction: 'all',\n};\n\n"
  },
  {
    "path": "src/js/mdb/util/touch/touchUtil.js",
    "chars": 465,
    "preview": "class TouchUtil {\n  _getCoordinates(e) {\n    const [touch] = e.touches;\n    return {\n      x: touch.clientX,\n      y: to"
  },
  {
    "path": "src/js/mdb.free.es.js",
    "chars": 847,
    "preview": "// BOOTSTRAP CORE COMPONENTS\nimport Button from './free/button';\nimport Offcanvas from './bootstrap/mdb-prefix/offcanvas"
  },
  {
    "path": "src/js/mdb.free.umd.js",
    "chars": 1035,
    "preview": "// BOOTSTRAP CORE COMPONENTS\nimport Button from './free/button';\nimport Offcanvas from './bootstrap/mdb-prefix/offcanvas"
  },
  {
    "path": "src/scss/bootstrap/_accordion.scss",
    "chars": 5102,
    "preview": "//\n// Base styles\n//\n\n.accordion {\n  // scss-docs-start accordion-css-vars\n  --#{$prefix}accordion-color: #{$accordion-c"
  },
  {
    "path": "src/scss/bootstrap/_alert.scss",
    "chars": 2071,
    "preview": "//\n// Base styles\n//\n\n.alert {\n  // scss-docs-start alert-css-vars\n  --#{$prefix}alert-bg: transparent;\n  --#{$prefix}al"
  },
  {
    "path": "src/scss/bootstrap/_badge.scss",
    "chars": 1118,
    "preview": "// Base class\n//\n// Requires one of the contextual, color modifier classes for `color` and\n// `background-color`.\n\n.badg"
  },
  {
    "path": "src/scss/bootstrap/_breadcrumb.scss",
    "chars": 1781,
    "preview": ".breadcrumb {\n  // scss-docs-start breadcrumb-css-vars\n  --#{$prefix}breadcrumb-padding-x: #{$breadcrumb-padding-x};\n  -"
  },
  {
    "path": "src/scss/bootstrap/_button-group.scss",
    "chars": 3208,
    "preview": "// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-flex;\n  v"
  },
  {
    "path": "src/scss/bootstrap/_buttons.scss",
    "chars": 7095,
    "preview": "//\n// Base styles\n//\n\n.btn {\n  // scss-docs-start btn-css-vars\n  --#{$prefix}btn-padding-x: #{$btn-padding-x};\n  --#{$pr"
  },
  {
    "path": "src/scss/bootstrap/_card.scss",
    "chars": 7053,
    "preview": "//\n// Base styles\n//\n\n.card {\n  // scss-docs-start card-css-vars\n  --#{$prefix}card-spacer-y: #{$card-spacer-y};\n  --#{$"
  },
  {
    "path": "src/scss/bootstrap/_carousel.scss",
    "chars": 5905,
    "preview": "// Notes on the classes:\n//\n// 1. .carousel.pointer-event should ideally be pan-y (to allow for users to scroll vertical"
  },
  {
    "path": "src/scss/bootstrap/_close.scss",
    "chars": 2016,
    "preview": "// Transparent background and border properties included for button version.\n// iOS requires the button element instead "
  },
  {
    "path": "src/scss/bootstrap/_containers.scss",
    "chars": 1201,
    "preview": "// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-cont"
  },
  {
    "path": "src/scss/bootstrap/_dropdown.scss",
    "chars": 8091,
    "preview": "// The dropdown wrapper (`<div>`)\n.dropup,\n.dropend,\n.dropdown,\n.dropstart,\n.dropup-center,\n.dropdown-center {\n  positio"
  },
  {
    "path": "src/scss/bootstrap/_forms.scss",
    "chars": 256,
    "preview": "@import 'forms/labels';\n@import 'forms/form-text';\n@import 'forms/form-control';\n@import 'forms/form-select';\n@import 'f"
  },
  {
    "path": "src/scss/bootstrap/_functions.scss",
    "chars": 11049,
    "preview": "// Bootstrap functions\n//\n// Utility mixins and functions for evaluating source code across our variables, maps, and mix"
  },
  {
    "path": "src/scss/bootstrap/_grid.scss",
    "chars": 682,
    "preview": "// Row\n//\n// Rows contain your columns.\n\n:root {\n  @each $name, $value in $grid-breakpoints {\n    --#{$prefix}breakpoint"
  },
  {
    "path": "src/scss/bootstrap/_helpers.scss",
    "chars": 353,
    "preview": "@import 'helpers/clearfix';\n@import 'helpers/color-bg';\n@import 'helpers/colored-links';\n@import 'helpers/focus-ring';\n@"
  },
  {
    "path": "src/scss/bootstrap/_images.scss",
    "chars": 1158,
    "preview": "// Responsive images (ensure images don't scale beyond their parents)\n//\n// This is purposefully opt-in via an explicit "
  },
  {
    "path": "src/scss/bootstrap/_list-group.scss",
    "chars": 6894,
    "preview": "// Base class\n//\n// Easily usable on <ul>, <ol>, or <div>.\n\n.list-group {\n  // scss-docs-start list-group-css-vars\n  --#"
  },
  {
    "path": "src/scss/bootstrap/_maps.scss",
    "chars": 6021,
    "preview": "// Re-assigned maps\n//\n// Placed here so that others can override the default Sass maps and see automatic updates to uti"
  },
  {
    "path": "src/scss/bootstrap/_mixins.scss",
    "chars": 875,
    "preview": "// Toggles\n//\n// Used in conjunction with global variables to enable certain theme features.\n\n// Vendor\n@import 'vendor/"
  },
  {
    "path": "src/scss/bootstrap/_modal.scss",
    "chars": 7722,
    "preview": "// stylelint-disable function-disallowed-list\n\n// .modal-open      - body class for killing the scroll\n// .modal        "
  },
  {
    "path": "src/scss/bootstrap/_nav.scss",
    "chars": 5231,
    "preview": "// Base class\n//\n// Kickstart any navigation component with a set of style resets. Works with\n// `<nav>`s, `<ul>`s or `<"
  },
  {
    "path": "src/scss/bootstrap/_navbar.scss",
    "chars": 9150,
    "preview": "// Navbar\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations"
  },
  {
    "path": "src/scss/bootstrap/_offcanvas.scss",
    "chars": 4731,
    "preview": "// stylelint-disable function-disallowed-list\n\n%offcanvas-css-vars {\n  // scss-docs-start offcanvas-css-vars\n  --#{$pref"
  },
  {
    "path": "src/scss/bootstrap/_pagination.scss",
    "chars": 3986,
    "preview": ".pagination {\n  // scss-docs-start pagination-css-vars\n  --#{$prefix}pagination-padding-x: #{$pagination-padding-x};\n  -"
  },
  {
    "path": "src/scss/bootstrap/_placeholders.scss",
    "chars": 881,
    "preview": ".placeholder {\n  display: inline-block;\n  min-height: 1em;\n  vertical-align: middle;\n  cursor: wait;\n  background-color:"
  },
  {
    "path": "src/scss/bootstrap/_popover.scss",
    "chars": 7006,
    "preview": ".popover {\n  // scss-docs-start popover-css-vars\n  --#{$prefix}popover-zindex: #{$zindex-popover};\n  --#{$prefix}popover"
  },
  {
    "path": "src/scss/bootstrap/_progress.scss",
    "chars": 2026,
    "preview": "// Disable animation if transitions are disabled\n\n// scss-docs-start progress-keyframes\n@if $enable-transitions {\n  @key"
  },
  {
    "path": "src/scss/bootstrap/_reboot.scss",
    "chars": 12429,
    "preview": "// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n// Reboot\n//\n// N"
  },
  {
    "path": "src/scss/bootstrap/_root.scss",
    "chars": 6932,
    "preview": ":root,\n[data-bs-theme='light'] {\n  // Note: Custom variable values only support SassScript inside `#{}`.\n\n  // Colors\n  "
  },
  {
    "path": "src/scss/bootstrap/_spinners.scss",
    "chars": 2439,
    "preview": "//\n// Rotating border\n//\n\n.spinner-grow,\n.spinner-border {\n  display: inline-block;\n  width: var(--#{$prefix}spinner-wid"
  },
  {
    "path": "src/scss/bootstrap/_tables.scss",
    "chars": 4991,
    "preview": "//\n// Basic Bootstrap table\n//\n\n.table {\n  // Reset needed for nesting tables\n  --#{$prefix}table-color-type: initial;\n "
  },
  {
    "path": "src/scss/bootstrap/_toasts.scss",
    "chars": 2515,
    "preview": ".toast {\n  // scss-docs-start toast-css-vars\n  --#{$prefix}toast-zindex: #{$zindex-toast};\n  --#{$prefix}toast-padding-x"
  },
  {
    "path": "src/scss/bootstrap/_tooltip.scss",
    "chars": 4349,
    "preview": "// Base class\n.tooltip {\n  // scss-docs-start tooltip-css-vars\n  --#{$prefix}tooltip-zindex: #{$zindex-tooltip};\n  --#{$"
  },
  {
    "path": "src/scss/bootstrap/_transitions.scss",
    "chars": 425,
    "preview": ".fade {\n  @include transition($transition-fade);\n\n  &:not(.show) {\n    opacity: 0;\n  }\n}\n\n// scss-docs-start collapse-cl"
  },
  {
    "path": "src/scss/bootstrap/_type.scss",
    "chars": 1418,
    "preview": "//\n// Headings\n//\n.h1 {\n  @extend h1;\n}\n\n.h2 {\n  @extend h2;\n}\n\n.h3 {\n  @extend h3;\n}\n\n.h4 {\n  @extend h4;\n}\n\n.h5 {\n  @e"
  },
  {
    "path": "src/scss/bootstrap/_utilities.scss",
    "chars": 20686,
    "preview": "// Utilities\n\n$utilities: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$utilities: map-merge"
  },
  {
    "path": "src/scss/bootstrap/_variables-dark.scss",
    "chars": 4554,
    "preview": "// Dark color mode variables\n//\n// Custom variables for the `[data-bs-theme=\"dark\"]` theme. Use this as a starting point"
  },
  {
    "path": "src/scss/bootstrap/_variables.scss",
    "chars": 67608,
    "preview": "// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $n"
  },
  {
    "path": "src/scss/bootstrap/bootstrap-grid.scss",
    "chars": 1182,
    "preview": "@import 'mixins/banner';\n@include bsBanner(Grid);\n\n$include-column-box-sizing: true !default;\n\n@import 'functions';\n@imp"
  },
  {
    "path": "src/scss/bootstrap/bootstrap-reboot.scss",
    "chars": 189,
    "preview": "@import 'mixins/banner';\n@include bsBanner(Reboot);\n\n@import 'functions';\n@import 'variables';\n@import 'variables-dark';"
  },
  {
    "path": "src/scss/bootstrap/bootstrap-utilities.scss",
    "chars": 306,
    "preview": "@import 'mixins/banner';\n@include bsBanner(Utilities);\n\n// Configuration\n@import 'functions';\n@import 'variables';\n@impo"
  },
  {
    "path": "src/scss/bootstrap/bootstrap.scss",
    "chars": 937,
    "preview": "@import 'mixins/banner';\n@include bsBanner('');\n\n// scss-docs-start import-stack\n// Configuration\n@import 'functions';\n@"
  },
  {
    "path": "src/scss/bootstrap/forms/_floating-labels.scss",
    "chars": 2693,
    "preview": ".form-floating {\n  position: relative;\n\n  > .form-control,\n  > .form-control-plaintext,\n  > .form-select {\n    height: $"
  },
  {
    "path": "src/scss/bootstrap/forms/_form-check.scss",
    "chars": 4893,
    "preview": "//\n// Check/radio\n//\n\n.form-check {\n  display: block;\n  min-height: $form-check-min-height;\n  padding-left: $form-check-"
  },
  {
    "path": "src/scss/bootstrap/forms/_form-control.scss",
    "chars": 6602,
    "preview": "//\n// General form controls (plus a few specific high-level interventions)\n//\n\n.form-control {\n  display: block;\n  width"
  },
  {
    "path": "src/scss/bootstrap/forms/_form-range.scss",
    "chars": 2813,
    "preview": "// Range\n//\n// Style range inputs the same across browsers. Vendor-specific rules for pseudo\n// elements cannot be mixed"
  },
  {
    "path": "src/scss/bootstrap/forms/_form-select.scss",
    "chars": 2492,
    "preview": "// Select\n//\n// Replaces the browser default select with a custom one, mostly pulled from\n// https://primer.github.io/.\n"
  },
  {
    "path": "src/scss/bootstrap/forms/_form-text.scss",
    "chars": 219,
    "preview": "//\n// Form text\n//\n\n.form-text {\n  margin-top: $form-text-margin-top;\n  @include font-size($form-text-font-size);\n  font"
  },
  {
    "path": "src/scss/bootstrap/forms/_input-group.scss",
    "chars": 3944,
    "preview": "//\n// Base styles\n//\n\n.input-group {\n  position: relative;\n  display: flex;\n  flex-wrap: wrap; // For form validation fe"
  },
  {
    "path": "src/scss/bootstrap/forms/_labels.scss",
    "chars": 1142,
    "preview": "//\n// Labels\n//\n\n.form-label {\n  margin-bottom: $form-label-margin-bottom;\n  @include font-size($form-label-font-size);\n"
  },
  {
    "path": "src/scss/bootstrap/forms/_validation.scss",
    "chars": 478,
    "preview": "// Form validation\n//\n// Provide feedback to users when form field values are valid or invalid. Works\n// primarily for c"
  },
  {
    "path": "src/scss/bootstrap/helpers/_clearfix.scss",
    "chars": 37,
    "preview": ".clearfix {\n  @include clearfix();\n}\n"
  },
  {
    "path": "src/scss/bootstrap/helpers/_color-bg.scss",
    "chars": 409,
    "preview": "// All-caps `RGBA()` function used because of this Sass bug: https://github.com/sass/node-sass/issues/2251\n@each $color,"
  },
  {
    "path": "src/scss/bootstrap/helpers/_colored-links.scss",
    "chars": 1961,
    "preview": "// All-caps `RGBA()` function used because of this Sass bug: https://github.com/sass/node-sass/issues/2251\n@each $color,"
  },
  {
    "path": "src/scss/bootstrap/helpers/_focus-ring.scss",
    "chars": 393,
    "preview": ".focus-ring:focus {\n  outline: 0;\n  // By default, there is no `--bs-focus-ring-x`, `--bs-focus-ring-y`, or `--bs-focus-"
  },
  {
    "path": "src/scss/bootstrap/helpers/_icon-link.scss",
    "chars": 606,
    "preview": ".icon-link {\n  display: inline-flex;\n  gap: $icon-link-gap;\n  align-items: center;\n  text-decoration-color: rgba(var(--#"
  },
  {
    "path": "src/scss/bootstrap/helpers/_position.scss",
    "chars": 621,
    "preview": "// Shorthand\n\n.fixed-top {\n  position: fixed;\n  top: 0;\n  right: 0;\n  left: 0;\n  z-index: $zindex-fixed;\n}\n\n.fixed-botto"
  },
  {
    "path": "src/scss/bootstrap/helpers/_ratio.scss",
    "chars": 399,
    "preview": "// Credit: Nicolas Gallagher and SUIT CSS.\n\n.ratio {\n  position: relative;\n  width: 100%;\n\n  &::before {\n    display: bl"
  },
  {
    "path": "src/scss/bootstrap/helpers/_stacks.scss",
    "chars": 245,
    "preview": "// scss-docs-start stacks\n.hstack {\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  align-self: stretch"
  },
  {
    "path": "src/scss/bootstrap/helpers/_stretched-link.scss",
    "chars": 223,
    "preview": "//\n// Stretched link\n//\n\n.stretched-link {\n  &::#{$stretched-link-pseudo-element} {\n    position: absolute;\n    top: 0;\n"
  },
  {
    "path": "src/scss/bootstrap/helpers/_text-truncation.scss",
    "chars": 73,
    "preview": "//\n// Text truncation\n//\n\n.text-truncate {\n  @include text-truncate();\n}\n"
  },
  {
    "path": "src/scss/bootstrap/helpers/_visually-hidden.scss",
    "chars": 136,
    "preview": "//\n// Visually hidden\n//\n\n.visually-hidden,\n.visually-hidden-focusable:not(:focus):not(:focus-within) {\n  @include visua"
  },
  {
    "path": "src/scss/bootstrap/helpers/_vr.scss",
    "chars": 160,
    "preview": ".vr {\n  display: inline-block;\n  align-self: stretch;\n  width: $vr-border-width;\n  min-height: 1em;\n  background-color: "
  },
  {
    "path": "src/scss/bootstrap/mixins/_alert.scss",
    "chars": 525,
    "preview": "@include deprecate('`alert-variant()`', 'v5.3.0', 'v6.0.0');\n\n// scss-docs-start alert-variant-mixin\n@mixin alert-varian"
  },
  {
    "path": "src/scss/bootstrap/mixins/_backdrop.scss",
    "chars": 340,
    "preview": "// Shared between modals and offcanvases\n@mixin overlay-backdrop($zindex, $backdrop-bg, $backdrop-opacity) {\n  position:"
  },
  {
    "path": "src/scss/bootstrap/mixins/_banner.scss",
    "chars": 223,
    "preview": "@mixin bsBanner($file) {\n  /*!\n   * Bootstrap #{$file} v5.3.3 (https://getbootstrap.com/)\n   * Copyright 2011-2024 The B"
  },
  {
    "path": "src/scss/bootstrap/mixins/_border-radius.scss",
    "chars": 2029,
    "preview": "// stylelint-disable property-disallowed-list\n// Single side border-radius\n\n// Helper function to replace negative value"
  },
  {
    "path": "src/scss/bootstrap/mixins/_box-shadow.scss",
    "chars": 398,
    "preview": "@mixin box-shadow($shadow...) {\n  @if $enable-shadows {\n    $result: ();\n\n    @each $value in $shadow {\n      @if $value"
  },
  {
    "path": "src/scss/bootstrap/mixins/_breakpoints.scss",
    "chars": 4587,
    "preview": "// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order f"
  }
]

// ... and 165 more files (download for full content)

About this extraction

This page contains the full source code of the mdbootstrap/mdb-ui-kit GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 365 files (1.4 MB), approximately 397.8k tokens, and a symbol index with 1940 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!